diff --git a/e107 b/e107 index 840859a32..1494c1866 160000 --- a/e107 +++ b/e107 @@ -1 +1 @@ -Subproject commit 840859a32f5e7c6d579f1b643e99ed30d30d1fd7 +Subproject commit 1494c186603cf28d3f260c3e17b666aec75da390 diff --git a/tests/unit/TreeModelTest.php b/tests/unit/TreeModelTest.php index 14ba1dfcc..b7b5aafcc 100644 --- a/tests/unit/TreeModelTest.php +++ b/tests/unit/TreeModelTest.php @@ -62,35 +62,26 @@ class TreeModelTest extends \Codeception\Test\Unit $this->assertEquals($l1_id, $l2_parent); } - public function testTreeValuesAreStoredAsExpected() + public function testTreeValuesAreFlattenedInExpectedOrder() { - $l1_0 = $this->tree[0]['_children'][0]; - $l1_1 = $this->tree[0]['_children'][1]; - $l2_0 = $this->tree[0]['_children'][0]['_children'][0]; - $l2_1 = $this->tree[0]['_children'][0]['_children'][1]; + $class = new \ReflectionClass('e_tree_model'); - $this->assertEquals($l1_0['link_name'], "General"); - $this->assertEquals($l1_1['link_name'], "Nodes"); - $this->assertEquals($l2_0['link_name'], "Home"); - $this->assertEquals($l2_1['link_name'], "Downloads"); - } + $method = $class->getMethod('flattenTree'); + $method->setAccessible(true); + $rows = $method->invoke(null, $this->tree, 'link_order', 1); - public function testTreeValuesAreOrderedCorrectly() - { - $order_key = 'link_order'; - $l1_0 = $this->tree[0]['_children'][0][$order_key]; - $l1_1 = $this->tree[0]['_children'][1][$order_key]; - $l1_2 = $this->tree[0]['_children'][2][$order_key]; - $l2_0 = $this->tree[0]['_children'][0]['_children'][0][$order_key]; - $l2_1 = $this->tree[0]['_children'][0]['_children'][1][$order_key]; - $l2_2 = $this->tree[0]['_children'][0]['_children'][2][$order_key]; - $l2_3 = $this->tree[0]['_children'][0]['_children'][3][$order_key]; + $expected = ['General', 'Home', 'Downloads', 'Members', 'Online Users', + 'Site Stats', 'Submit News', 'Newsfeeds', 'About Us', + 'Contact Us', 'Nodes', 'Main Website', 'My Deltik', + 'x10Deltik', 'Deltik Docs', 'Legacy Deltik Products', + 'Deltik Minecraft Server', 'Register']; - $this->assertLessThanOrEqual($l1_1, $l1_0); - $this->assertLessThanOrEqual($l1_2, $l1_1); - $this->assertLessThanOrEqual($l2_1, $l2_0); - $this->assertLessThanOrEqual($l2_2, $l2_1); - $this->assertLessThanOrEqual($l2_3, $l2_2); + foreach($expected as $key => $value) + { + $this->assertEquals($value, $rows[$key]['link_name']); + } + + $this->assertEquals(count($expected), count($rows)); } public function testPrepareSimulatedPaginationProcessesCountOnly() @@ -192,295 +183,295 @@ class TreeModelTest extends \Codeception\Test\Unit $this->assertEquals(1, $result); } - protected $sample_rows = - array ( - 1 => - array ( - 'link_id' => '1', - 'link_name' => 'General', - 'link_url' => '/index.php', - 'link_description' => '', - 'link_button' => '{e_IMAGE}icons/icon2.png', - 'link_category' => '1', - 'link_order' => '1', - 'link_parent' => '0', - 'link_open' => '0', - 'link_class' => '0', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 2 => - array ( - 'link_id' => '6', - 'link_name' => 'Home', - 'link_url' => '/index.php', - 'link_description' => '', - 'link_button' => '{e_IMAGE}icons/icon18.png', - 'link_category' => '1', - 'link_order' => '1', - 'link_parent' => '1', - 'link_open' => '0', - 'link_class' => '0', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 3 => - array ( - 'link_id' => '10', - 'link_name' => 'Main Website', - 'link_url' => 'https://www.deltik.org/', - 'link_description' => 'The Official Deltik Website', - 'link_button' => 'deltik-favicon.png', - 'link_category' => '1', - 'link_order' => '1', - 'link_parent' => '9', - 'link_open' => '0', - 'link_class' => '0', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 4 => - array ( - 'link_id' => '2', - 'link_name' => 'Downloads', - 'link_url' => '/download.php', - 'link_description' => '', - 'link_button' => '{e_IMAGE}icons/download_32.png', - 'link_category' => '1', - 'link_order' => '2', - 'link_parent' => '1', - 'link_open' => '0', - 'link_class' => '0', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 5 => - array ( - 'link_id' => '9', - 'link_name' => 'Nodes', - 'link_url' => '', - 'link_description' => '', - 'link_button' => 'icon14.png', - 'link_category' => '1', - 'link_order' => '2', - 'link_parent' => '0', - 'link_open' => '0', - 'link_class' => '0', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 6 => - array ( - 'link_id' => '11', - 'link_name' => 'My Deltik', - 'link_url' => 'https://my.deltik.org/', - 'link_description' => 'User Control Panel for all of Deltik's Features', - 'link_button' => 'deltik_my-favicon.png', - 'link_category' => '1', - 'link_order' => '2', - 'link_parent' => '9', - 'link_open' => '0', - 'link_class' => '255', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 7 => - array ( - 'link_id' => '3', - 'link_name' => 'Members', - 'link_url' => '/user.php', - 'link_description' => '', - 'link_button' => '{e_IMAGE}icons/icon20.png', - 'link_category' => '1', - 'link_order' => '3', - 'link_parent' => '1', - 'link_open' => '0', - 'link_class' => '0', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 8 => - array ( - 'link_id' => '8', - 'link_name' => 'Register', - 'link_url' => '/signup.php', - 'link_description' => '', - 'link_button' => '{e_IMAGE}icons/deltik-favicon.png', - 'link_category' => '1', - 'link_order' => '3', - 'link_parent' => '0', - 'link_open' => '0', - 'link_class' => '252', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 9 => - array ( - 'link_id' => '12', - 'link_name' => 'x10Deltik', - 'link_url' => 'https://x10.deltik.org/', - 'link_description' => 'Deltik Additional Resources Website', - 'link_button' => 'deltik_x10-favicon.png', - 'link_category' => '1', - 'link_order' => '3', - 'link_parent' => '9', - 'link_open' => '0', - 'link_class' => '255', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 10 => - array ( - 'link_id' => '7', - 'link_name' => 'Online Users', - 'link_url' => '/online.php', - 'link_description' => '', - 'link_button' => '{e_IMAGE}icons/icon22.png', - 'link_category' => '1', - 'link_order' => '4', - 'link_parent' => '1', - 'link_open' => '0', - 'link_class' => '0', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 11 => - array ( - 'link_id' => '15', - 'link_name' => 'Deltik Docs', - 'link_url' => 'https://man.deltik.org/', - 'link_description' => 'Manual Pages of Deltik', - 'link_button' => 'deltik_docs-favicon.png', - 'link_category' => '1', - 'link_order' => '4', - 'link_parent' => '9', - 'link_open' => '0', - 'link_class' => '255', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 12 => - array ( - 'link_id' => '14', - 'link_name' => 'Legacy Deltik Products', - 'link_url' => 'https://products.deltik.org/', - 'link_description' => 'Legacy Deltik Products', - 'link_button' => 'deltik_products-favicon.png', - 'link_category' => '1', - 'link_order' => '5', - 'link_parent' => '9', - 'link_open' => '0', - 'link_class' => '0', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 13 => - array ( - 'link_id' => '16', - 'link_name' => 'Site Stats', - 'link_url' => '/{e_PLUGIN}log/stats.php?1', - 'link_description' => '', - 'link_button' => '{e_IMAGE}icons/icon11.png', - 'link_category' => '1', - 'link_order' => '5', - 'link_parent' => '1', - 'link_open' => '0', - 'link_class' => '0', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 14 => - array ( - 'link_id' => '4', - 'link_name' => 'Submit News', - 'link_url' => '/submitnews.php', - 'link_description' => '', - 'link_button' => '{e_IMAGE}icons/icon26.png', - 'link_category' => '1', - 'link_order' => '6', - 'link_parent' => '1', - 'link_open' => '0', - 'link_class' => '0', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 15 => - array ( - 'link_id' => '13', - 'link_name' => 'Deltik Minecraft Server', - 'link_url' => 'https://mc.deltik.org/', - 'link_description' => 'Deltik Minecraft Server', - 'link_button' => 'deltik_mc-favicon.png', - 'link_category' => '1', - 'link_order' => '6', - 'link_parent' => '9', - 'link_open' => '0', - 'link_class' => '0', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 16 => - array ( - 'link_id' => '17', - 'link_name' => 'Newsfeeds', - 'link_url' => '/{e_PLUGIN}newsfeed/newsfeed.php', - 'link_description' => '', - 'link_button' => '{e_IMAGE}icons/html.png', - 'link_category' => '1', - 'link_order' => '7', - 'link_parent' => '1', - 'link_open' => '0', - 'link_class' => '0', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 17 => - array ( - 'link_id' => '18', - 'link_name' => 'About Us', - 'link_url' => '/page.php?4', - 'link_description' => '', - 'link_button' => '{e_IMAGE}icons/deltik-favicon.png', - 'link_category' => '1', - 'link_order' => '8', - 'link_parent' => '1', - 'link_open' => '0', - 'link_class' => '0', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - 18 => - array ( - 'link_id' => '5', - 'link_name' => 'Contact Us', - 'link_url' => '/contact.php', - 'link_description' => '', - 'link_button' => '{e_IMAGE}icons/icon19.png', - 'link_category' => '1', - 'link_order' => '9', - 'link_parent' => '1', - 'link_open' => '0', - 'link_class' => '0', - 'link_function' => '', - 'link_sefurl' => '', - 'link_owner' => '', - ), - ); + protected $sample_rows = + array( + 0 => + array ( + 'link_id' => '1', + 'link_name' => 'General', + 'link_url' => '/index.php', + 'link_description' => '', + 'link_button' => '{e_IMAGE}icons/icon2.png', + 'link_category' => '1', + 'link_order' => '1', + 'link_parent' => '0', + 'link_open' => '0', + 'link_class' => '0', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 1 => + array ( + 'link_id' => '9', + 'link_name' => 'Nodes', + 'link_url' => '', + 'link_description' => '', + 'link_button' => 'icon14.png', + 'link_category' => '1', + 'link_order' => '2', + 'link_parent' => '0', + 'link_open' => '0', + 'link_class' => '0', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 2 => + array ( + 'link_id' => '8', + 'link_name' => 'Register', + 'link_url' => '/signup.php', + 'link_description' => '', + 'link_button' => '{e_IMAGE}icons/deltik-favicon.png', + 'link_category' => '1', + 'link_order' => '3', + 'link_parent' => '0', + 'link_open' => '0', + 'link_class' => '252', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 3 => + array ( + 'link_id' => '6', + 'link_name' => 'Home', + 'link_url' => '/index.php', + 'link_description' => '', + 'link_button' => '{e_IMAGE}icons/icon18.png', + 'link_category' => '1', + 'link_order' => '1', + 'link_parent' => '1', + 'link_open' => '0', + 'link_class' => '0', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 4 => + array ( + 'link_id' => '18', + 'link_name' => 'About Us', + 'link_url' => '/page.php?4', + 'link_description' => '', + 'link_button' => '{e_IMAGE}icons/deltik-favicon.png', + 'link_category' => '1', + 'link_order' => '8', + 'link_parent' => '1', + 'link_open' => '0', + 'link_class' => '0', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 5 => + array ( + 'link_id' => '17', + 'link_name' => 'Newsfeeds', + 'link_url' => '/{e_PLUGIN}newsfeed/newsfeed.php', + 'link_description' => '', + 'link_button' => '{e_IMAGE}icons/html.png', + 'link_category' => '1', + 'link_order' => '7', + 'link_parent' => '1', + 'link_open' => '0', + 'link_class' => '0', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 6 => + array ( + 'link_id' => '4', + 'link_name' => 'Submit News', + 'link_url' => '/submitnews.php', + 'link_description' => '', + 'link_button' => '{e_IMAGE}icons/icon26.png', + 'link_category' => '1', + 'link_order' => '6', + 'link_parent' => '1', + 'link_open' => '0', + 'link_class' => '0', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 7 => + array ( + 'link_id' => '16', + 'link_name' => 'Site Stats', + 'link_url' => '/{e_PLUGIN}log/stats.php?1', + 'link_description' => '', + 'link_button' => '{e_IMAGE}icons/icon11.png', + 'link_category' => '1', + 'link_order' => '5', + 'link_parent' => '1', + 'link_open' => '0', + 'link_class' => '0', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 8 => + array ( + 'link_id' => '7', + 'link_name' => 'Online Users', + 'link_url' => '/online.php', + 'link_description' => '', + 'link_button' => '{e_IMAGE}icons/icon22.png', + 'link_category' => '1', + 'link_order' => '4', + 'link_parent' => '1', + 'link_open' => '0', + 'link_class' => '0', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 9 => + array ( + 'link_id' => '2', + 'link_name' => 'Downloads', + 'link_url' => '/download.php', + 'link_description' => '', + 'link_button' => '{e_IMAGE}icons/download_32.png', + 'link_category' => '1', + 'link_order' => '2', + 'link_parent' => '1', + 'link_open' => '0', + 'link_class' => '0', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 10 => + array ( + 'link_id' => '3', + 'link_name' => 'Members', + 'link_url' => '/user.php', + 'link_description' => '', + 'link_button' => '{e_IMAGE}icons/icon20.png', + 'link_category' => '1', + 'link_order' => '3', + 'link_parent' => '1', + 'link_open' => '0', + 'link_class' => '0', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 11 => + array ( + 'link_id' => '5', + 'link_name' => 'Contact Us', + 'link_url' => '/contact.php', + 'link_description' => '', + 'link_button' => '{e_IMAGE}icons/icon19.png', + 'link_category' => '1', + 'link_order' => '9', + 'link_parent' => '1', + 'link_open' => '0', + 'link_class' => '0', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 12 => + array ( + 'link_id' => '12', + 'link_name' => 'x10Deltik', + 'link_url' => 'https://x10.deltik.org/', + 'link_description' => 'Deltik Additional Resources Website', + 'link_button' => 'deltik_x10-favicon.png', + 'link_category' => '1', + 'link_order' => '3', + 'link_parent' => '9', + 'link_open' => '0', + 'link_class' => '255', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 13 => + array ( + 'link_id' => '15', + 'link_name' => 'Deltik Docs', + 'link_url' => 'https://man.deltik.org/', + 'link_description' => 'Manual Pages of Deltik', + 'link_button' => 'deltik_docs-favicon.png', + 'link_category' => '1', + 'link_order' => '4', + 'link_parent' => '9', + 'link_open' => '0', + 'link_class' => '255', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 14 => + array ( + 'link_id' => '14', + 'link_name' => 'Legacy Deltik Products', + 'link_url' => 'https://products.deltik.org/', + 'link_description' => 'Legacy Deltik Products', + 'link_button' => 'deltik_products-favicon.png', + 'link_category' => '1', + 'link_order' => '5', + 'link_parent' => '9', + 'link_open' => '0', + 'link_class' => '0', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 15 => + array ( + 'link_id' => '11', + 'link_name' => 'My Deltik', + 'link_url' => 'https://my.deltik.org/', + 'link_description' => 'User Control Panel for all of Deltik's Features', + 'link_button' => 'deltik_my-favicon.png', + 'link_category' => '1', + 'link_order' => '2', + 'link_parent' => '9', + 'link_open' => '0', + 'link_class' => '255', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 16 => + array ( + 'link_id' => '13', + 'link_name' => 'Deltik Minecraft Server', + 'link_url' => 'https://mc.deltik.org/', + 'link_description' => 'Deltik Minecraft Server', + 'link_button' => 'deltik_mc-favicon.png', + 'link_category' => '1', + 'link_order' => '6', + 'link_parent' => '9', + 'link_open' => '0', + 'link_class' => '0', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + 17 => + array ( + 'link_id' => '10', + 'link_name' => 'Main Website', + 'link_url' => 'https://www.deltik.org/', + 'link_description' => 'The Official Deltik Website', + 'link_button' => 'deltik-favicon.png', + 'link_category' => '1', + 'link_order' => '1', + 'link_parent' => '9', + 'link_open' => '0', + 'link_class' => '0', + 'link_function' => '', + 'link_sefurl' => '', + 'link_owner' => '', + ), + ); }