From 8983c9d862959402e7818c779c8e1a3a957abae1 Mon Sep 17 00:00:00 2001 From: Tim Starling Date: Thu, 15 Jun 2023 10:08:30 +1000 Subject: diff: Move SlotDiffRenderer::getTablePrefix() parts assembly up to DifferenceEngine getTablePrefix() is used to show the inline legend and inline switcher. It is not yet part of a released stable interface. Theoretically there may be multiple text slots on a page, and we don't want multiple inline legends. There was already a fragment assembly system, for the benefit of hook handlers, so move that up to the page level, so that it can also deduplicate prefix fragments coming from each slot. Add tests. Bug: T324759 Change-Id: I9baa5c24128c63bc318ba13e83a024843f4ab15e --- .../includes/diff/TextSlotDiffRendererTest.php | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'tests/phpunit/includes/diff/TextSlotDiffRendererTest.php') diff --git a/tests/phpunit/includes/diff/TextSlotDiffRendererTest.php b/tests/phpunit/includes/diff/TextSlotDiffRendererTest.php index 62c58c416239..fc467af2024c 100644 --- a/tests/phpunit/includes/diff/TextSlotDiffRendererTest.php +++ b/tests/phpunit/includes/diff/TextSlotDiffRendererTest.php @@ -1,5 +1,6 @@ [ + TextSlotDiffRenderer::ENGINE_PHP, + [ + TextSlotDiffRenderer::INLINE_LEGEND_KEY => '
', + TextSlotDiffRenderer::INLINE_SWITCHER_KEY => null + ] + ], + 'wikidiff2' => [ + TextSlotDiffRenderer::ENGINE_WIKIDIFF2, + [ + TextSlotDiffRenderer::INLINE_LEGEND_KEY => + 'class="mw-diff-inline-legend mw-diff-element-hidden"', + TextSlotDiffRenderer::INLINE_SWITCHER_KEY => 'mw-diffPage-inlineToggle-container' + ] + ], + 'inline' => [ + TextSlotDiffRenderer::ENGINE_WIKIDIFF2_INLINE, + [ + TextSlotDiffRenderer::INLINE_LEGEND_KEY => + 'class="mw-diff-inline-legend".*\(diff-inline-tooltip-ins\)', + TextSlotDiffRenderer::INLINE_SWITCHER_KEY => 'mw-diffPage-inlineToggle-container' + ] + ] + ]; + } + + /** + * @dataProvider provideGetTablePrefix + * @param string $engine + * @param string[] $expectedPatterns + */ + public function testGetTablePrefix( $engine, $expectedPatterns ) { + OOUI\Theme::setSingleton( new OOUI\BlankTheme() ); + $this->overrideConfigValue( MainConfigNames::ShowDiffToggleSwitch, true ); + + $slotDiffRenderer = $this->getTextSlotDiffRenderer(); + $slotDiffRenderer->setHookContainer( $this->createHookContainer() ); + $slotDiffRenderer->setEngine( $engine ); + + $context = new RequestContext; + $context->setLanguage( 'qqx' ); + + $title = $this->getServiceContainer()->getTitleFactory()->newFromText( 'Test' ); + $result = $slotDiffRenderer->getTablePrefix( $context, $title ); + $this->assertSameSize( $expectedPatterns, $result ); + foreach ( $expectedPatterns as $key => $pattern ) { + if ( $pattern === null ) { + $this->assertNull( $result[$key], "\$result[$key]" ); + } else { + $this->assertMatchesRegularExpression( + "#$pattern#", $result[$key], "\$result[$key]" ); + } + } + } } -- cgit v1.2.3