You are here

checklistapi.test in Checklist API 7

Tests for Checklist API module.

File

tests/checklistapi.test
View source
<?php

/**
 * @file
 * Tests for Checklist API module.
 */

/**
 * Unit tests for Checklist API.
 */
class ChecklistapiUnitTestCase extends DrupalUnitTestCase {

  /**
   * {@inheritdoc}
   */
  public static function getInfo() {
    return array(
      'name' => 'Unit tests',
      'description' => 'Test Checklist API classes and functions.',
      'group' => 'Checklist API',
    );
  }

  /**
   * {@inheritdoc}
   */
  public function setUp() {
    drupal_load('module', 'checklistapi');
    drupal_load('module', 'checklistapi_test');
    parent::setUp();
  }

  /**
   * Test checklistapi_sort_array().
   */
  public function testChecklistapiSortArray() {
    $checklistapi_test_definition = checklistapi_test_checklistapi_checklist_info();
    $input = array_pop($checklistapi_test_definition);
    $output = checklistapi_sort_array($input);
    $this
      ->assertEqual($output['group_two']['#weight'], 0, 'Supplied a default for omitted element weight.');
    $this
      ->assertEqual($output['group_three']['#weight'], 0, 'Supplied a default in place of invalid element weight.');
    $this
      ->assertEqual($output['group_one']['#weight'], -1, 'Retained a valid element weight.');
    $this
      ->assertEqual(element_children($output), array(
      'group_one',
      'group_two',
      'group_three',
      'group_four',
    ), 'Sorted elements by weight.');
    $this
      ->assertEqual(element_children($output['group_one']['item_one']), array(
      'link_one',
      'link_two',
      'link_three',
    ), 'Recursed through element descendants.');
  }

  /**
   * Test checklistapi_strtolowercamel().
   */
  public function testChecklistapiStrtolowercamel() {
    $this
      ->assertEqual(checklistapi_strtolowercamel('Abc def_ghi'), 'abcDefGhi', 'Converted string to lowerCamel case.');
  }

}

/**
 * Functional tests for Checklist API.
 *
 * @todo Add tests for vertical tabs progress indicators.
 * @todo Add tests for saving and retrieving checklist progress.
 * @todo Add tests for clearing saved progress.
 */
class ChecklistapiWebTestCase extends DrupalWebTestCase {
  protected $privilegedUser;

  /**
   * {@inheritdoc}
   */
  public static function getInfo() {
    return array(
      'name' => 'Functional tests',
      'description' => 'Test the functionality of Checklist API.',
      'group' => 'Checklist API',
    );
  }

  /**
   * {@inheritdoc}
   */
  public function setUp() {
    parent::setUp('checklistapi_example');
    $permissions = array(
      'edit any checklistapi checklist',
      'view checklistapi checklists report',
    );
    $this->privilegedUser = $this
      ->drupalCreateUser($permissions);
    $this
      ->drupalLogin($this->privilegedUser);
  }

  /**
   * Test checklist access.
   */
  public function testAccessChecklist() {
    $this
      ->drupalGet('admin/config/development/checklistapi-example');
    $this
      ->assertResponse(200, 'Granted access to user with "edit any checklistapi checklist" permission.');
    $permissions = array(
      'edit example_checklist checklistapi checklist',
    );
    $semi_privileged_user = $this
      ->drupalCreateUser($permissions);
    $this
      ->drupalLogin($semi_privileged_user);
    $this
      ->drupalGet('admin/config/development/checklistapi-example');
    $this
      ->assertResponse(200, 'Granted access to user with checklist-specific permission.');
    $this
      ->drupalLogout();
    $this
      ->drupalGet('admin/config/development/checklistapi-example');
    $this
      ->assertResponse(403, 'Denied access to nonprivileged user.');
  }

  /**
   * Test report access.
   */
  public function testAccessReport() {
    $report_path = 'admin/reports/checklistapi';
    $this
      ->drupalGet($report_path);
    $this
      ->assertResponse(200, 'Granted access to user with "view checklistapi checklists report" permission.');
    $this
      ->drupalLogout();
    $this
      ->drupalGet($report_path);
    $this
      ->assertResponse(403, 'Denied access to nonprivileged user.');
  }

  /**
   * Test checklist composition.
   */
  public function testChecklistComposition() {
    $menu_item = menu_get_item('admin/config/development/checklistapi-example');
    $this
      ->assertEqual($menu_item['path'], 'admin/config/development/checklistapi-example', 'Created per-checklist menu item.');
    $permissions = array(
      'edit example_checklist checklistapi checklist',
    );
    $this
      ->assertTrue($this
      ->checkPermissions($permissions), 'Created per-checklist permission.');
    $this
      ->drupalGet('admin/config/development/checklistapi-example');
    $this
      ->assertRaw('id="block-system-help"', 'Created per-checklist help block.');
  }

}

Classes

Namesort descending Description
ChecklistapiUnitTestCase Unit tests for Checklist API.
ChecklistapiWebTestCase Functional tests for Checklist API.