From c665a90423f0e0fdc3c11f7924d05ce91367ee16 Mon Sep 17 00:00:00 2001 From: Siddharth VP Date: Sat, 9 Dec 2023 12:05:12 +0530 Subject: [PATCH] Add tests for cache invalidations in MWGadgetDefinitionRepo Change-Id: I24af0c2fa7524b5d6b5cd2cb151d3617c99a6ab0 --- .../MediaWikiGadgetsDefinitionRepoTest.php | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/phpunit/integration/MediaWikiGadgetsDefinitionRepoTest.php b/tests/phpunit/integration/MediaWikiGadgetsDefinitionRepoTest.php index 0440dfff..0e6308c4 100644 --- a/tests/phpunit/integration/MediaWikiGadgetsDefinitionRepoTest.php +++ b/tests/phpunit/integration/MediaWikiGadgetsDefinitionRepoTest.php @@ -31,4 +31,36 @@ EOT; $this->assertEquals( 'keep-section1', $bar->toArray()['category'] ); } + /** + * @covers \MediaWiki\Extension\Gadgets\Hooks::onPageSaveComplete + * @covers \MediaWiki\Extension\Gadgets\Hooks::onPageDeleteComplete + * @covers \MediaWiki\Extension\Gadgets\GadgetRepo::handlePageUpdate + * @covers \MediaWiki\Extension\Gadgets\MediaWikiGadgetsDefinitionRepo + */ + public function testCacheInvalidationOnSave() { + $services = $this->getServiceContainer(); + $wanCache = WANObjectCache::newEmpty(); + $wanCache->useInterimHoldOffCaching( false ); + + $repo = new MediaWikiGadgetsDefinitionRepo( $wanCache, $services->getRevisionLookup() ); + $this->setService( 'GadgetsRepo', $repo ); + + $this->editPage( 'MediaWiki:Gadgets-definition', '* X1[ResourceLoader|default]|foo.js' ); + $this->assertEquals( [ 'X1' ], $repo->getGadgetIds() ); + $this->assertTrue( $repo->getGadget( 'X1' )->isOnByDefault() ); + + $this->editPage( 'MediaWiki:Gadgets-definition', "* X1[ResourceLoader|default]|foo.js\n" . + "* X2[ResourceLoader|default]|foo.css" ); + $this->assertEquals( [ 'X1', 'X2' ], $repo->getGadgetIds() ); + + // Disable X1 by default + $this->editPage( 'MediaWiki:Gadgets-definition', "* X1[ResourceLoader]|foo.js\n" . + "* X2[ResourceLoader|default]|foo.css" ); + $this->assertFalse( $repo->getGadget( 'X1' )->isOnByDefault() ); + + $this->deletePage( $services->getWikiPageFactory()->newFromTitle( + Title::newFromText( 'MediaWiki:Gadgets-definition' ) ) ); + $this->assertEquals( [], $repo->getGadgetIds() ); + } + }