setMwGlobals( [ 'wgArticlePath' => '/wiki/$1', 'wgScriptPath' => '/w', 'wgScript' => '/w/index.php', ] ); } private const EXPECTED_BASIC = '
(viewprevnext: (prevn: 50), (nextn: 50), 20(pipe-separator)50(pipe-separator)100(pipe-separator)250(pipe-separator)500)
'; private const EXPECTED_OVERRIDES = '
(parentheses: (i)(pipe-separator)(j)) (viewprevnext: , , 1(pipe-separator)2)
'; private const EXPECTED_NULL_LINK_QUERY = '
(parentheses: (i)(pipe-separator)(j)) (viewprevnext: , , 1)
'; public function testBasic() { $navBuilder = new PagerNavigationBuilder( new MockMessageLocalizer() ); $navBuilder->setPage( PageReferenceValue::localReference( NS_MAIN, 'A' ) ); $this->assertEquals( self::EXPECTED_BASIC, $navBuilder->getHtml() ); } public function testOverrides() { $navBuilder = new PagerNavigationBuilder( new MockMessageLocalizer() ); $navBuilder ->setPage( PageReferenceValue::localReference( NS_MAIN, 'A' ) ) ->setLinkQuery( [ 'a' => 'a' ] ) ->setPrevLinkQuery( [ 'b' => 'b' ] ) ->setNextLinkQuery( [ 'c' => 'c' ] ) ->setFirstLinkQuery( [ 'd' => 'd' ] ) ->setLastLinkQuery( [ 'e' => 'e' ] ) ->setLimitLinkQueryParam( 'f' ) ->setPrevMsg( 'g' ) ->setNextMsg( 'h' ) ->setFirstMsg( 'i' ) ->setLastMsg( 'j' ) ->setPrevTooltipMsg( 'k' ) ->setNextTooltipMsg( 'l' ) ->setFirstTooltipMsg( 'm' ) ->setLastTooltipMsg( 'n' ) ->setLimitTooltipMsg( 'o' ) ->setCurrentLimit( 1 ) ->setLimits( [ 1, 2 ] ); $this->assertEquals( self::EXPECTED_OVERRIDES, $navBuilder->getHtml() ); } public function testNullLinkQuery() { $navBuilder = new PagerNavigationBuilder( new MockMessageLocalizer() ); $navBuilder ->setPage( PageReferenceValue::localReference( NS_MAIN, 'A' ) ) ->setFirstMsg( 'i' ) ->setLastMsg( 'j' ) ->setCurrentLimit( 1 ) ->setLimits( [ 1 ] ) // null is allowed here, and it establishes the order of parameters for the output ->setLinkQuery( [ 'dir' => null, 'offset' => '1' ] ) ->setPrevLinkQuery( [ 'dir' => 'prev' ] ) ->setNextLinkQuery( [ 'offset' => '2', 'dir' => 'next' ] ) // null is allowed here, and it overrides defaults from setLinkQuery() ->setFirstLinkQuery( [ 'offset' => null ] ) ->setLastLinkQuery( [ 'offset' => null, 'dir' => 'prev' ] ); $this->assertEquals( self::EXPECTED_NULL_LINK_QUERY, $navBuilder->getHtml() ); } }