setupFile = dirname( __FILE__ ) . '/../../PortableInfobox.setup.php'; parent::setUp(); } /** * @covers NodeImage::getData * @dataProvider dataProvider * * @param $markup * @param $params * @param $expected */ public function testData( $markup, $params, $expected ) { $node = \Wikia\PortableInfobox\Parser\Nodes\NodeFactory::newFromXML( $markup, $params ); $this->assertEquals( $expected, $node->getData() ); } public function dataProvider() { return [ [ '', [ ], [ 'url' => '', 'name' => '', 'key' => '', 'alt' => null, 'caption' => null, 'ref' => null ] ], [ '', [ 'img' => 'test.jpg' ], [ 'url' => '', 'name' => 'Test.jpg', 'key' => 'Test.jpg', 'alt' => null, 'caption' => null, 'ref' => 0 ] ], [ 'test alt', [ 'img' => 'test.jpg' ], [ 'url' => '', 'name' => 'Test.jpg', 'key' => 'Test.jpg', 'alt' => 'test alt', 'caption' => null, 'ref' => 1 ] ], [ 'test alt', [ 'img' => 'test.jpg', 'alt source' => 2 ], [ 'url' => '', 'name' => 'Test.jpg', 'key' => 'Test.jpg', 'alt' => 2, 'caption' => null, 'ref' => 2 ] ], [ 'test alt', [ 'img' => 'test.jpg' ], [ 'url' => '', 'name' => 'Test.jpg', 'key' => 'Test.jpg', 'alt' => 'test alt', 'caption' => 'test.jpg', 'ref' => 3 ] ], ]; } /** * @covers NodeImage::isEmpty * @dataProvider isEmptyProvider * * @param $markup * @param $params * @param $expected */ public function testIsEmpty( $markup, $params, $expected ) { $node = \Wikia\PortableInfobox\Parser\Nodes\NodeFactory::newFromXML( $markup, $params ); $this->assertEquals( $expected, $node->isEmpty() ); } public function isEmptyProvider() { return [ [ '', [ ], true ], ]; } /** * @covers NodeImage::getSource * @dataProvider sourceProvider * * @param $markup * @param $expected */ public function testSource( $markup, $expected ) { $node = \Wikia\PortableInfobox\Parser\Nodes\NodeFactory::newFromXML( $markup, [ ] ); $this->assertEquals( $expected, $node->getSource() ); } public function sourceProvider() { return [ [ '', [ 'img' ] ], [ '{{{img}}}', [ 'img' ] ], [ '', [ 'img', 'alt', 'cap' ] ], [ '{{{def}}}', [ 'img', 'alt', 'def', 'cap' ] ], [ '', [ ] ], ]; } /** * @dataProvider testVideoProvider */ public function testVideo( $markup, $params, $expected ) { global $wgHooks; // backup the hooks $tmpHooks = $wgHooks['PortableInfoboxNodeImage::getData']; $wgHooks['PortableInfoboxNodeImage::getData'] = []; $fileMock = new FileMock(); $titleMock = new TitleMock(); $xmlObj = Wikia\PortableInfobox\Parser\XmlParser::parseXmlString( $markup ); $this->mockStaticMethod( 'WikiaFileHelper', 'getFileFromTitle', $fileMock ); $this->mockStaticMethod( '\Title', 'makeTitleSafe', $titleMock ); $nodeImage = new Wikia\PortableInfobox\Parser\Nodes\NodeImage( $xmlObj, $params ); $this->assertEquals( $expected, $nodeImage->getData() ); // restore the hooks $wgHooks['PortableInfoboxNodeImage::getData'] = $tmpHooks; } public function testVideoProvider() { return [ [ '', [ 'img' => 'test.jpg' ], [ 'url' => 'http://test.url', 'name' => '', 'key' => '', 'alt' => null, 'caption' => null, 'ref' => null, 'isVideo' => true, 'duration' => '00:10' ] ] ]; } } class FileMock { public function getMediaType() { return "VIDEO"; } public function getMetadataDuration() { return 10; } public function getUrl() { return ''; } } class TitleMock { public function getFullURL() { return 'http://test.url'; } public function getText() { return ''; } public function getDBKey() { return ''; } }