mirror of
https://github.com/Universal-Omega/PortableInfobox.git
synced 2024-11-15 20:09:44 +00:00
XW-2415 | fix unit tests
This commit is contained in:
parent
74eaae9559
commit
380c2900b9
|
@ -135,6 +135,7 @@ class PortableInfoboxDataService {
|
|||
if ( $raw ) {
|
||||
$stored = $this->get();
|
||||
$stored[] = [
|
||||
'parser_tag_version' => PortableInfoboxParserTagController::PARSER_TAG_VERSION,
|
||||
'data' => $raw->getRenderData(),
|
||||
'metadata' => $raw->getMetadata()
|
||||
];
|
||||
|
|
|
@ -33,7 +33,9 @@ class PortableInfoboxDataServiceTest extends WikiaBaseTest {
|
|||
}
|
||||
|
||||
public function testLoadFromProps() {
|
||||
$data = '[{"data": [], "sources": []}]';
|
||||
$data = '[{"parser_tag_version": ' .
|
||||
PortableInfoboxParserTagController::PARSER_TAG_VERSION .
|
||||
', "data": [], "metadata": []}]';
|
||||
$result = PortableInfoboxDataService::newFromTitle( $this->prepareTitle( 1 ) )
|
||||
// purge memc so we can rerun tests
|
||||
->purge()
|
||||
|
@ -53,23 +55,72 @@ class PortableInfoboxDataServiceTest extends WikiaBaseTest {
|
|||
->save( $infoboxNode )
|
||||
->getData();
|
||||
|
||||
$this->assertEquals( [ [ 'data' => [ [ 'type' => 'data', 'data' => [ 'label' => null, 'value' => 1 ] ] ],
|
||||
'sources' => [ 'test', 'test2' ] ] ], $result );
|
||||
$this->assertEquals(
|
||||
[
|
||||
[
|
||||
'parser_tag_version' => PortableInfoboxParserTagController::PARSER_TAG_VERSION,
|
||||
'data' => [ [ 'type' => 'data', 'data' => [ 'label' => null, 'value' => 1 ] ] ],
|
||||
'metadata' => [
|
||||
[
|
||||
'type' => 'data',
|
||||
'sources' => [
|
||||
'test' => [
|
||||
'label' => '',
|
||||
'primary' => true
|
||||
],
|
||||
'test2' => [
|
||||
'label' => ''
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
],
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
public function testTemplate() {
|
||||
$data = [ [ 'data' => [ ], 'sources' => [ ] ] ];
|
||||
$data = [
|
||||
[
|
||||
'parser_tag_version' => PortableInfoboxParserTagController::PARSER_TAG_VERSION,
|
||||
'data' => [],
|
||||
'metadata' => []
|
||||
]
|
||||
];
|
||||
$result = PortableInfoboxDataService::newFromTitle( $this->prepareTitle( 1, NS_TEMPLATE ) )
|
||||
->purge()
|
||||
->setPagePropsProxy( new PagePropsProxyDummy( [ ] ) )
|
||||
->setTemplatesHelper( new TemplateHelperDummy( $data ) )
|
||||
->setParsingHelper( new ParsingHelperDummy( null, $data ) )
|
||||
->getData();
|
||||
|
||||
$this->assertEquals( $data, $result );
|
||||
}
|
||||
|
||||
public function testReparse() {
|
||||
$oldData = '[{"parser_tag_version": 0, "data": [], "metadata": []}]';
|
||||
$newData = [
|
||||
[
|
||||
'parser_tag_version' => PortableInfoboxParserTagController::PARSER_TAG_VERSION,
|
||||
'data' => [],
|
||||
'metadata' => []
|
||||
]
|
||||
];
|
||||
|
||||
$result = PortableInfoboxDataService::newFromTitle( $this->prepareTitle( 1 ) )
|
||||
// purge memc so we can rerun tests
|
||||
->purge()
|
||||
->setPagePropsProxy( new PagePropsProxyDummy( [ '1infoboxes' => $oldData ] ) )
|
||||
->setParsingHelper( new ParsingHelperDummy( $newData ) )
|
||||
->getData();
|
||||
|
||||
$this->assertEquals( $newData, $result );
|
||||
}
|
||||
|
||||
public function testDelete() {
|
||||
$data = '[{"data": [], "sources": []}]';
|
||||
$data = '[{"parser_tag_version": ' .
|
||||
PortableInfoboxParserTagController::PARSER_TAG_VERSION .
|
||||
', "data": [], "metadata": []}]';
|
||||
$result = PortableInfoboxDataService::newFromTitle( $this->prepareTitle( 1 ) )
|
||||
// purge memc so we can rerun tests
|
||||
->purge()
|
||||
|
@ -81,7 +132,9 @@ class PortableInfoboxDataServiceTest extends WikiaBaseTest {
|
|||
}
|
||||
|
||||
public function testPurge() {
|
||||
$data = '[{"data": [], "sources": []}]';
|
||||
$data = '[{"parser_tag_version": ' .
|
||||
PortableInfoboxParserTagController::PARSER_TAG_VERSION .
|
||||
', "data": [], "metadata": []}]';
|
||||
$service = PortableInfoboxDataService::newFromTitle( $this->prepareTitle( 1 ) )
|
||||
// purge memc so we can rerun tests
|
||||
->purge()
|
||||
|
@ -100,7 +153,9 @@ class PortableInfoboxDataServiceTest extends WikiaBaseTest {
|
|||
public function testImageListRemoveDuplicates() {
|
||||
$images = PortableInfoboxDataService::newFromTitle( $this->prepareTitle( 1 ) )
|
||||
->purge()
|
||||
->setPagePropsProxy( new PagePropsProxyDummy( [ '1infoboxes' => json_encode( $this->getInfoboxData() ) ] ) )
|
||||
->setPagePropsProxy(
|
||||
new PagePropsProxyDummy( [ '1infoboxes' => json_encode( $this->getInfoboxPageProps() ) ] )
|
||||
)
|
||||
->getImages();
|
||||
|
||||
$this->assertEquals( count( $images ), 2 );
|
||||
|
@ -109,7 +164,9 @@ class PortableInfoboxDataServiceTest extends WikiaBaseTest {
|
|||
public function testImageListFetchImages() {
|
||||
$images = PortableInfoboxDataService::newFromTitle( $this->prepareTitle( 1 ) )
|
||||
->purge()
|
||||
->setPagePropsProxy( new PagePropsProxyDummy( [ '1infoboxes' => json_encode( $this->getInfoboxData() ) ] ) )
|
||||
->setPagePropsProxy(
|
||||
new PagePropsProxyDummy( [ '1infoboxes' => json_encode( $this->getInfoboxPageProps() ) ] )
|
||||
)
|
||||
->getImages();
|
||||
|
||||
$this->assertEquals( [ 'Test.jpg', 'Test2.jpg' ], $images );
|
||||
|
@ -127,41 +184,74 @@ class PortableInfoboxDataServiceTest extends WikiaBaseTest {
|
|||
$this->assertEquals( [ ], $result );
|
||||
}
|
||||
|
||||
protected function getInfoboxData() {
|
||||
return [ [ 'data' => [ [ "type" => "data",
|
||||
"data" => [
|
||||
"value" => "AAAA",
|
||||
"label" => "BBBB"
|
||||
]
|
||||
], [ "type" => "image",
|
||||
"data" => [ [
|
||||
"key" => "Test.jpg",
|
||||
"alt" => null,
|
||||
"caption" => null,
|
||||
] ]
|
||||
], [ "type" => "image",
|
||||
"data" => [ [
|
||||
"key" => "Test2.jpg",
|
||||
"alt" => null,
|
||||
"caption" => null
|
||||
] ] ] ] ],
|
||||
[ 'data' => [ [ "type" => "image",
|
||||
"data" => [ [
|
||||
"key" => "Test2.jpg",
|
||||
"alt" => null,
|
||||
"caption" => null
|
||||
] ] ] ] ] ];
|
||||
protected function getInfoboxPageProps() {
|
||||
return [
|
||||
[
|
||||
'parser_tag_version' => PortableInfoboxParserTagController::PARSER_TAG_VERSION,
|
||||
'data' => [
|
||||
[
|
||||
'type' => 'data',
|
||||
'data' => [
|
||||
'value' => 'AAAA',
|
||||
'label' => 'BBBB'
|
||||
]
|
||||
],
|
||||
[
|
||||
'type' => 'image',
|
||||
'data' => [
|
||||
[
|
||||
'key' => 'Test.jpg',
|
||||
'alt' => null,
|
||||
'caption' => null,
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
'type' => 'image',
|
||||
'data' => [
|
||||
[
|
||||
'key' => 'Test2.jpg',
|
||||
'alt' => null,
|
||||
'caption' => null
|
||||
]
|
||||
]
|
||||
]
|
||||
],
|
||||
'metadata' => []
|
||||
],
|
||||
[
|
||||
'parser_tag_version' => PortableInfoboxParserTagController::PARSER_TAG_VERSION,
|
||||
'data' => [
|
||||
[
|
||||
'type' => 'image',
|
||||
'data' => [
|
||||
[
|
||||
'key' => 'Test2.jpg',
|
||||
'alt' => null,
|
||||
'caption' => null
|
||||
]
|
||||
]
|
||||
]
|
||||
],
|
||||
'metadata' => []
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
class TemplateHelperDummy {
|
||||
class ParsingHelperDummy {
|
||||
|
||||
public function __construct( $hidden = false ) {
|
||||
$this->hidden = $hidden;
|
||||
public function __construct( $infoboxesData = null, $includeonlyInfoboxesData = null ) {
|
||||
$this->infoboxesData = $infoboxesData;
|
||||
$this->includeonlyInfoboxesData = $includeonlyInfoboxesData;
|
||||
}
|
||||
|
||||
public function parseInfoboxes( $title ) {
|
||||
return $this->hidden;
|
||||
public function parseIncludeonlyInfoboxes( $title ) {
|
||||
return $this->includeonlyInfoboxesData;
|
||||
}
|
||||
|
||||
public function reparseArticle( $title ) {
|
||||
return $this->infoboxesData;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -172,9 +262,7 @@ class PagePropsProxyDummy {
|
|||
}
|
||||
|
||||
public function get( $id, $property ) {
|
||||
$prop = $this->data[ $id . $property ];
|
||||
|
||||
return $prop !== null ? $prop : '';
|
||||
return $this->data[ $id . $property ] ?? '';
|
||||
}
|
||||
|
||||
public function set( $id, $data ) {
|
||||
|
|
61
tests/PortableInfoboxParsingHelperTest.php
Normal file
61
tests/PortableInfoboxParsingHelperTest.php
Normal file
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
|
||||
class PortableInfoboxParsingHelperTest extends WikiaBaseTest {
|
||||
|
||||
protected function setUp() {
|
||||
$this->setupFile = dirname( __FILE__ ) . '/../PortableInfobox.setup.php';
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider testsProvider
|
||||
*/
|
||||
public function testParsingIncludeonlyInfoboxes( $markup, $expected ) {
|
||||
$helper = $this->getMockBuilder( 'Wikia\PortableInfobox\Helpers\PortableInfoboxParsingHelper' )
|
||||
->setMethods( [ 'fetchArticleContent' ] )->getMock();
|
||||
$helper->expects( $this->once() )->method( 'fetchArticleContent' )->will( $this->returnValue( $markup ) );
|
||||
|
||||
$result = $helper->parseIncludeonlyInfoboxes( new Title() );
|
||||
|
||||
$this->assertEquals( $expected, $result );
|
||||
}
|
||||
|
||||
public function testsProvider() {
|
||||
return [
|
||||
[ 'test', false ],
|
||||
[
|
||||
'<includeonly><infobox><data source="test"><label>1</label></data></infobox></includeonly>',
|
||||
[
|
||||
[
|
||||
'parser_tag_version' => PortableInfoboxParserTagController::PARSER_TAG_VERSION,
|
||||
'data' => [],
|
||||
'metadata' => [
|
||||
[
|
||||
'type' => 'data',
|
||||
'sources' => [
|
||||
'test' => [
|
||||
'label' => '1',
|
||||
'primary' => true
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
],
|
||||
[ '<includeonly></includeonly><infobox></infobox>', false ],
|
||||
[
|
||||
'<includeonly><infobox></infobox></includeonly> ',
|
||||
[
|
||||
[
|
||||
'parser_tag_version' => PortableInfoboxParserTagController::PARSER_TAG_VERSION,
|
||||
'data' => [],
|
||||
'metadata' => []
|
||||
]
|
||||
]
|
||||
],
|
||||
[ '<nowiki><includeonly><infobox></infobox></includeonly></nowiki>', false ],
|
||||
[ '<includeonly><nowiki><infobox></infobox></nowiki></includeonly>', false ],
|
||||
];
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
class PortableInfoboxTemplatesHelperTest extends WikiaBaseTest {
|
||||
|
||||
protected function setUp() {
|
||||
$this->setupFile = dirname( __FILE__ ) . '/../PortableInfobox.setup.php';
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider testsProvider
|
||||
*/
|
||||
public function testInfoboxParsing( $markup, $expected ) {
|
||||
$helper = $this->getMockBuilder( 'Wikia\PortableInfobox\Helpers\PortableInfoboxTemplatesHelper' )
|
||||
->setMethods( [ 'fetchContent' ] )->getMock();
|
||||
$helper->expects( $this->once() )->method( 'fetchContent' )->will( $this->returnValue( $markup ) );
|
||||
|
||||
$result = $helper->parseInfoboxes( new Title() );
|
||||
|
||||
$this->assertEquals( $expected, $result );
|
||||
}
|
||||
|
||||
public function testsProvider() {
|
||||
return [
|
||||
[ 'test', false ],
|
||||
[ '<includeonly><infobox><data source="test"><label>1</label></data></infobox></includeonly>',
|
||||
[ [ 'data' => [ ], 'sourcelabels' => [ 'test' => 1 ] ] ] ],
|
||||
[ '<includeonly></includeonly><infobox></infobox>', false ],
|
||||
[ '<includeonly><infobox></infobox></includeonly> ', [ [ 'data' => [ ], 'sourcelabels' => [ ] ] ] ],
|
||||
[ '<nowiki><includeonly><infobox></infobox></includeonly></nowiki>', false ],
|
||||
[ '<includeonly><nowiki><infobox></infobox></nowiki></includeonly>', false ],
|
||||
];
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@ class NodeDataTest extends WikiaBaseTest {
|
|||
public function testSource( $markup, $params, $expected ) {
|
||||
$node = \Wikia\PortableInfobox\Parser\Nodes\NodeFactory::newFromXML( $markup, $params );
|
||||
|
||||
$this->assertEquals( $expected, $node->getSource() );
|
||||
$this->assertEquals( $expected, $node->getSources() );
|
||||
}
|
||||
|
||||
public function sourceDataProvider() {
|
||||
|
@ -46,11 +46,12 @@ class NodeDataTest extends WikiaBaseTest {
|
|||
* @param $params
|
||||
* @param $expected
|
||||
*/
|
||||
public function testSourceLabel( $markup, $params, $expected ) {
|
||||
$node = \Wikia\PortableInfobox\Parser\Nodes\NodeFactory::newFromXML( $markup, $params );
|
||||
|
||||
$this->assertEquals( $expected, $node->getSourceLabel() );
|
||||
}
|
||||
// TODO
|
||||
//public function testSourceLabel( $markup, $params, $expected ) {
|
||||
// $node = \Wikia\PortableInfobox\Parser\Nodes\NodeFactory::newFromXML( $markup, $params );
|
||||
//
|
||||
// $this->assertEquals( $expected, $node->getSourceLabel() );
|
||||
//}
|
||||
|
||||
public function sourceLabelDataProvider() {
|
||||
return [
|
||||
|
|
|
@ -127,19 +127,19 @@ class NodeImageTest extends WikiaBaseTest {
|
|||
}
|
||||
|
||||
/**
|
||||
* @covers \Wikia\PortableInfobox\Parser\Nodes\NodeImage::getSource
|
||||
* @dataProvider sourceProvider
|
||||
* @covers \Wikia\PortableInfobox\Parser\Nodes\NodeImage::getSources
|
||||
* @dataProvider sourcesProvider
|
||||
*
|
||||
* @param $markup
|
||||
* @param $expected
|
||||
*/
|
||||
public function testSource( $markup, $expected ) {
|
||||
public function testSources( $markup, $expected ) {
|
||||
$node = \Wikia\PortableInfobox\Parser\Nodes\NodeFactory::newFromXML( $markup, [ ] );
|
||||
|
||||
$this->assertEquals( $expected, $node->getSource() );
|
||||
$this->assertEquals( $expected, $node->getSources() );
|
||||
}
|
||||
|
||||
public function sourceProvider() {
|
||||
public function sourcesProvider() {
|
||||
return [
|
||||
[
|
||||
'<image source="img"/>',
|
||||
|
|
Loading…
Reference in a new issue