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 '';
}
}