diff options
Diffstat (limited to 'tests/phpunit/includes')
-rw-r--r-- | tests/phpunit/includes/diff/SlotDiffRendererTest.php | 77 | ||||
-rw-r--r-- | tests/phpunit/includes/diff/TextSlotDiffRendererTest.php | 6 |
2 files changed, 81 insertions, 2 deletions
diff --git a/tests/phpunit/includes/diff/SlotDiffRendererTest.php b/tests/phpunit/includes/diff/SlotDiffRendererTest.php new file mode 100644 index 000000000000..58b433f129f5 --- /dev/null +++ b/tests/phpunit/includes/diff/SlotDiffRendererTest.php @@ -0,0 +1,77 @@ +<?php +use Wikimedia\Assert\ParameterTypeException; +use Wikimedia\TestingAccessWrapper; + +/** + * @covers SlotDiffRenderer + */ +class SlotDiffRendererTest extends \PHPUnit\Framework\TestCase { + + /** + * @dataProvider provideNormalizeContents + */ + public function testNormalizeContents( + $oldContent, $newContent, $allowedClasses, + $expectedOldContent, $expectedNewContent, $expectedExceptionClass + ) { + $slotDiffRenderer = $this->getMockBuilder( SlotDiffRenderer::class ) + ->getMock(); + try { + // __call needs help deciding which parameter to take by reference + call_user_func_array( [ TestingAccessWrapper::newFromObject( $slotDiffRenderer ), + 'normalizeContents' ], [ &$oldContent, &$newContent, $allowedClasses ] ); + $this->assertEquals( $expectedOldContent, $oldContent ); + $this->assertEquals( $expectedNewContent, $newContent ); + } catch ( Exception $e ) { + if ( !$expectedExceptionClass ) { + throw $e; + } + $this->assertInstanceOf( $expectedExceptionClass, $e ); + } + } + + public function provideNormalizeContents() { + return [ + 'both null' => [ null, null, null, null, null, InvalidArgumentException::class ], + 'left null' => [ + null, new WikitextContent( 'abc' ), null, + new WikitextContent( '' ), new WikitextContent( 'abc' ), null, + ], + 'right null' => [ + new WikitextContent( 'def' ), null, null, + new WikitextContent( 'def' ), new WikitextContent( '' ), null, + ], + 'type filter' => [ + new WikitextContent( 'abc' ), new WikitextContent( 'def' ), WikitextContent::class, + new WikitextContent( 'abc' ), new WikitextContent( 'def' ), null, + ], + 'type filter (subclass)' => [ + new WikitextContent( 'abc' ), new WikitextContent( 'def' ), TextContent::class, + new WikitextContent( 'abc' ), new WikitextContent( 'def' ), null, + ], + 'type filter (null)' => [ + new WikitextContent( 'abc' ), null, TextContent::class, + new WikitextContent( 'abc' ), new WikitextContent( '' ), null, + ], + 'type filter failure (left)' => [ + new TextContent( 'abc' ), new WikitextContent( 'def' ), WikitextContent::class, + null, null, ParameterTypeException::class, + ], + 'type filter failure (right)' => [ + new WikitextContent( 'abc' ), new TextContent( 'def' ), WikitextContent::class, + null, null, ParameterTypeException::class, + ], + 'type filter (array syntax)' => [ + new WikitextContent( 'abc' ), new JsonContent( 'def' ), + [ JsonContent::class, WikitextContent::class ], + new WikitextContent( 'abc' ), new JsonContent( 'def' ), null, + ], + 'type filter failure (array syntax)' => [ + new WikitextContent( 'abc' ), new CssContent( 'def' ), + [ JsonContent::class, WikitextContent::class ], + null, null, ParameterTypeException::class, + ], + ]; + } + +} diff --git a/tests/phpunit/includes/diff/TextSlotDiffRendererTest.php b/tests/phpunit/includes/diff/TextSlotDiffRendererTest.php index ec45e29d672b..e08efacd26f7 100644 --- a/tests/phpunit/includes/diff/TextSlotDiffRendererTest.php +++ b/tests/phpunit/includes/diff/TextSlotDiffRendererTest.php @@ -1,5 +1,7 @@ <?php +use Wikimedia\Assert\ParameterTypeException; + /** * @covers TextSlotDiffRenderer */ @@ -63,12 +65,12 @@ class TextSlotDiffRendererTest extends MediaWikiTestCase { 'non-text left content' => [ $this->makeContent( '', 'testing-nontext' ), $this->makeContent( "aaa\nbbb\nccc" ), - new InvalidArgumentException( 'TextSlotDiffRenderer does not handle DummyNonTextContent' ), + new ParameterTypeException( '$oldContent', 'TextContent|null' ), ], 'non-text right content' => [ $this->makeContent( "aaa\nbbb\nccc" ), $this->makeContent( '', 'testing-nontext' ), - new InvalidArgumentException( 'TextSlotDiffRenderer does not handle DummyNonTextContent' ), + new ParameterTypeException( '$newContent', 'TextContent|null' ), ], ]; } |