TableSortExtenderUnitTest.php 4.66 KB
Newer Older
1 2 3 4
<?php

/**
 * @file
5
 * Definition of Drupal\system\Tests\Common\TableSortExtenderTest.
6 7
 */

8 9
namespace Drupal\system\Tests\Common;

10 11
use Drupal\simpletest\UnitTestBase;

12
/**
13
 * Tests unicode handling features implemented in unicode.inc.
14
 */
15
class TableSortExtenderUnitTest extends UnitTestBase {
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

  /**
   * Storage for initial value of $_GET.
   *
   * @var array
   */
  protected $GET = array();

  public static function getInfo() {
    return array(
      'name' => 'Tablesort',
      'description' => 'Tests table sorting.',
      'group' => 'System',
    );
  }

  function setUp() {
    // Save the original $_GET to be restored later.
    $this->GET = $_GET;

    parent::setUp();
  }

  function tearDown() {
    // Revert $_GET.
    $_GET = $this->GET;

    parent::tearDown();
  }

  /**
47
   * Tests tablesort_init().
48 49 50 51 52 53 54 55
   */
  function testTableSortInit() {

    // Test simple table headers.

    $headers = array('foo', 'bar', 'baz');
    // Reset $_GET to prevent parameters from Simpletest and Batch API ending
    // up in $ts['query'].
56
    $_GET = array();
57 58 59 60 61 62 63 64
    $expected_ts = array(
      'name' => 'foo',
      'sql' => '',
      'sort' => 'asc',
      'query' => array(),
    );
    $ts = tablesort_init($headers);
    $this->verbose(strtr('$ts: <pre>!ts</pre>', array('!ts' => check_plain(var_export($ts, TRUE)))));
65
    $this->assertEqual($ts, $expected_ts, 'Simple table headers sorted correctly.');
66 67 68 69 70 71 72 73 74 75 76

    // Test with simple table headers plus $_GET parameters that should _not_
    // override the default.

    $_GET = array(
      // This should not override the table order because only complex
      // headers are overridable.
      'order' => 'bar',
    );
    $ts = tablesort_init($headers);
    $this->verbose(strtr('$ts: <pre>!ts</pre>', array('!ts' => check_plain(var_export($ts, TRUE)))));
77
    $this->assertEqual($ts, $expected_ts, 'Simple table headers plus non-overriding $_GET parameters sorted correctly.');
78 79 80 81 82 83 84 85 86 87 88 89 90 91

    // Test with simple table headers plus $_GET parameters that _should_
    // override the default.

    $_GET = array(
      'sort' => 'DESC',
      // Add an unrelated parameter to ensure that tablesort will include
      // it in the links that it creates.
      'alpha' => 'beta',
    );
    $expected_ts['sort'] = 'desc';
    $expected_ts['query'] = array('alpha' => 'beta');
    $ts = tablesort_init($headers);
    $this->verbose(strtr('$ts: <pre>!ts</pre>', array('!ts' => check_plain(var_export($ts, TRUE)))));
92
    $this->assertEqual($ts, $expected_ts, 'Simple table headers plus $_GET parameters sorted correctly.');
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121

    // Test complex table headers.

    $headers = array(
      'foo',
      array(
        'data' => '1',
        'field' => 'one',
        'sort' => 'asc',
        'colspan' => 1,
      ),
      array(
        'data' => '2',
        'field' => 'two',
        'sort' => 'desc',
      ),
    );
    // Reset $_GET from previous assertion.
    $_GET = array(
      'order' => '2',
    );
    $ts = tablesort_init($headers);
    $expected_ts = array(
      'name' => '2',
      'sql' => 'two',
      'sort' => 'desc',
      'query' => array(),
    );
    $this->verbose(strtr('$ts: <pre>!ts</pre>', array('!ts' => check_plain(var_export($ts, TRUE)))));
122
    $this->assertEqual($ts, $expected_ts, 'Complex table headers sorted correctly.');
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139

    // Test complex table headers plus $_GET parameters that should _not_
    // override the default.

    $_GET = array(
      // This should not override the table order because this header does not
      // exist.
      'order' => 'bar',
    );
    $ts = tablesort_init($headers);
    $expected_ts = array(
      'name' => '1',
      'sql' => 'one',
      'sort' => 'asc',
      'query' => array(),
    );
    $this->verbose(strtr('$ts: <pre>!ts</pre>', array('!ts' => check_plain(var_export($ts, TRUE)))));
140
    $this->assertEqual($ts, $expected_ts, 'Complex table headers plus non-overriding $_GET parameters sorted correctly.');
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
    unset($_GET['sort'], $_GET['order'], $_GET['alpha']);

    // Test complex table headers plus $_GET parameters that _should_
    // override the default.

    $_GET = array(
      'order' => '1',
      'sort' => 'ASC',
      // Add an unrelated parameter to ensure that tablesort will include
      // it in the links that it creates.
      'alpha' => 'beta',
    );
    $expected_ts = array(
      'name' => '1',
      'sql' => 'one',
      'sort' => 'asc',
      'query' => array('alpha' => 'beta'),
    );
    $ts = tablesort_init($headers);
    $this->verbose(strtr('$ts: <pre>!ts</pre>', array('!ts' => check_plain(var_export($ts, TRUE)))));
161
    $this->assertEqual($ts, $expected_ts, 'Complex table headers plus $_GET parameters sorted correctly.');
162 163 164 165
    unset($_GET['sort'], $_GET['order'], $_GET['alpha']);

  }
}