pluginsEnabled[] = 'indexmenu'; parent::setUp(); // this enables the indexmenu plugin //needed for 'tsort' to use First headings, sets title during search, otherwise as fallback page name used. global $conf; $conf['useheading'] = 'navigation'; // for testing sorting pages saveWikiText('ns2:cpage', "======Bb======\nText", 'Sort different page/title/creation date'); sleep(1); // ensure different timestamps for 'dsort' saveWikiText('ns2:bpage', "======Aa======\nText", 'Sort different page/title/creation date'); sleep(1); saveWikiText('ns2:apage', "======Cc======\nText", 'Sort different page/title/creation date'); //ensures title is added to metadata of page idx_addPage('ns2:cpage'); idx_addPage('ns2:bpage'); idx_addPage('ns2:apage'); // pages on different levels saveWikiText('ns1:ns2:apage', "======Bb======\nPage on level 2", 'Created page on level 2'); saveWikiText('ns1:ns1:apage', "======Ee======\nPage on level 2", 'Created page on level 2'); saveWikiText('ns1:ns1:lvl3:lvl4:apage', "======Cc======\nPage on levl 4", 'Page on level 4'); saveWikiText('ns1:ns1:start', "======Aa======\nPage on level 2", 'Startpage on level 2'); saveWikiText('ns1:ns0:bpage', "======Aa2======\nPage on level 2", 'Created page on level 2'); saveWikiText('ns1:apage', "======Dd======\nPage on level 1", 'Created page on level 1'); //ensures title is added to metadata idx_addPage('ns1:ns1:apage'); idx_addPage('ns1:ns1:lvl3:lvl4:apage'); idx_addPage('ns1:ns1:start'); idx_addPage('ns1:ns2:apage'); idx_addPage('ns1:ns0:bpage'); idx_addPage('ns1:apage'); } /** * DataProvider for the builtin Ajax calls * * @return array */ public static function indexmenuCalls() { return [ // Call, POST parameters, result function [ 'indexmenu', AjaxRequestsTest::prepareParams(['level' => 1]), 'expectedResultWiki' ], [ 'indexmenu', AjaxRequestsTest::prepareParams(['ns' => 'ns2', 'level' => 1]), 'expectedResultNs2PageSort' ], [ 'indexmenu', AjaxRequestsTest::prepareParams(['ns' => 'ns2', 'level' => 1, 'sort' => 't']), 'expectedResultNs2TitleSort' ], [ 'indexmenu', AjaxRequestsTest::prepareParams(['ns' => 'ns2', 'level' => 1, 'sort' => 'd']), 'expectedResultNs2CreationDateSort' ], [ 'indexmenu', AjaxRequestsTest::prepareParams(['ns' => 'ns1', 'level' => 1, 'sort' => 't']), 'expectedResultNs1TitleSort' ], [ 'indexmenu', AjaxRequestsTest::prepareParams(['ns' => 'ns1', 'level' => 1, 'sort' => 't', 'nsort' => 1]), 'expectedResultNs1TitleSortNamespaceSort' ] ]; } /** * @dataProvider indexmenuCalls * * @param string $call * @param array $post * @param $expectedResult */ public function testBasicSorting($call, $post, $expectedResult) { $request = new TestRequest(); $response = $request->post(['call' => $call] + $post, '/lib/exe/ajax.php'); // $this->assertNotEquals("AJAX call '$call' unknown!\n", $response->getContent()); //var_export(json_decode($response->getContent()), true); // print as PHP array $actualArray = json_decode($response->getContent(), true); unset($actualArray['debug']); unset($actualArray['sort']); unset($actualArray['opts']); $this->assertEquals($this->$expectedResult(), $actualArray); // $regexp: null, or regexp pattern to match // example: '/^