From 7b40d0ad00e4d639369af811bee99f87eed946e1 Mon Sep 17 00:00:00 2001 From: Dries Buytaert <dries@buytaert.net> Date: Sun, 10 Apr 2011 18:03:22 +0200 Subject: [PATCH] - Patch #839556 by dalin, jrchamp, effulgentsia, dmitrig01, David_Rothstein: fix isset regression in tablesort, add tests, and cleanup theme_process_registry(). --- modules/simpletest/tests/tablesort.test | 167 ++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 modules/simpletest/tests/tablesort.test diff --git a/modules/simpletest/tests/tablesort.test b/modules/simpletest/tests/tablesort.test new file mode 100644 index 000000000000..3462ce33e85c --- /dev/null +++ b/modules/simpletest/tests/tablesort.test @@ -0,0 +1,167 @@ +<?php +// $Id$ + +/** + * @file + * Various tablesort tests. + */ + +/** + * Test unicode handling features implemented in unicode.inc. + */ +class TableSortTest extends DrupalUnitTestCase { + + /** + * 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(); + } + + /** + * Test tablesort_init(). + */ + 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']. + $_GET = array('q' => 'jahwohl'); + $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))))); + $this->assertEqual($ts, $expected_ts, t('Simple table headers sorted correctly.')); + + // Test with simple table headers plus $_GET parameters that should _not_ + // override the default. + + $_GET = array( + 'q' => 'jahwohl', + // 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))))); + $this->assertEqual($ts, $expected_ts, t('Simple table headers plus non-overriding $_GET parameters sorted correctly.')); + + // Test with simple table headers plus $_GET parameters that _should_ + // override the default. + + $_GET = array( + 'q' => 'jahwohl', + '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))))); + $this->assertEqual($ts, $expected_ts, t('Simple table headers plus $_GET parameters sorted correctly.')); + + // 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( + 'q' => 'jahwohl', + '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))))); + $this->assertEqual($ts, $expected_ts, t('Complex table headers sorted correctly.')); + + // Test complex table headers plus $_GET parameters that should _not_ + // override the default. + + $_GET = array( + 'q' => 'jahwohl', + // 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))))); + $this->assertEqual($ts, $expected_ts, t('Complex table headers plus non-overriding $_GET parameters sorted correctly.')); + unset($_GET['sort'], $_GET['order'], $_GET['alpha']); + + // Test complex table headers plus $_GET parameters that _should_ + // override the default. + + $_GET = array( + 'q' => 'jahwohl', + '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))))); + $this->assertEqual($ts, $expected_ts, t('Complex table headers plus $_GET parameters sorted correctly.')); + unset($_GET['sort'], $_GET['order'], $_GET['alpha']); + + } +} -- GitLab