1<?php
2
3/**
4 * @covers UnsupportedSlotDiffRenderer
5 */
6class UnsupportedSlotDiffRendererTest extends MediaWikiIntegrationTestCase {
7
8	public function provideDiff() {
9		$oldContent = new TextContent( 'Kittens' );
10		$newContent = new TextContent( 'Goats' );
11		$badContent = new UnknownContent( 'Dragons', 'xyzzy' );
12
13		yield [ '(unsupported-content-diff)', $oldContent, null ];
14		yield [ '(unsupported-content-diff)', null, $newContent ];
15		yield [ '(unsupported-content-diff)', $oldContent, $newContent ];
16		yield [ '(unsupported-content-diff2)', $badContent, $newContent ];
17		yield [ '(unsupported-content-diff2)', $oldContent, $badContent ];
18		yield [ '(unsupported-content-diff)', null, $badContent ];
19		yield [ '(unsupported-content-diff)', $badContent, null ];
20	}
21
22	/**
23	 * @dataProvider provideDiff
24	 */
25	public function testDiff( $expected, $oldContent, $newContent ) {
26		$this->mergeMwGlobalArrayValue(
27			'wgContentHandlers',
28			[ 'xyzzy' => 'UnknownContentHandler' ]
29		);
30
31		$localizer = $this->createMock( MessageLocalizer::class );
32
33		$localizer->method( 'msg' )
34			->willReturnCallback( function ( $key, ...$params ) {
35				return new RawMessage( "($key)", $params );
36			} );
37
38		$sdr = new UnsupportedSlotDiffRenderer( $localizer );
39		$this->assertStringContainsString( $expected, $sdr->getDiff( $oldContent, $newContent ) );
40	}
41
42}
43