Improve ExtensionRegistry test coverage
[lhc/web/wiklou.git] / tests / phpunit / includes / registration / ExtensionRegistryTest.php
index a6f69b6..67bc088 100644 (file)
@@ -1,9 +1,57 @@
 <?php
 
+/**
+ * @covers ExtensionRegistry
+ */
 class ExtensionRegistryTest extends MediaWikiTestCase {
 
+       private $dataDir;
+
+       public function setUp() {
+               parent::setUp();
+               $this->dataDir = __DIR__ . '/../../data/registration';
+       }
+
+       public function testQueue_invalid() {
+               $registry = new ExtensionRegistry();
+               $path = __DIR__ . '/doesnotexist.json';
+               $this->setExpectedException(
+                       Exception::class,
+                       "$path does not exist!"
+               );
+               $registry->queue( $path );
+       }
+
+       public function testQueue() {
+               $registry = new ExtensionRegistry();
+               $path = "{$this->dataDir}/good.json";
+               $registry->queue( $path );
+               $this->assertArrayHasKey(
+                       $path,
+                       $registry->getQueue()
+               );
+               $registry->clearQueue();
+               $this->assertEmpty( $registry->getQueue() );
+       }
+
+       public function testLoadFromQueue_empty() {
+               $registry = new ExtensionRegistry();
+               $registry->loadFromQueue();
+               $this->assertEmpty( $registry->getAllThings() );
+       }
+
+       public function testLoadFromQueue_late() {
+               $registry = new ExtensionRegistry();
+               $registry->finish();
+               $registry->queue( "{$this->dataDir}/good.json" );
+               $this->setExpectedException(
+                       MWException::class,
+                       "The following paths tried to load late: {$this->dataDir}/good.json"
+               );
+               $registry->loadFromQueue();
+       }
+
        /**
-        * @covers ExtensionRegistry::exportExtractedData
         * @dataProvider provideExportExtractedDataGlobals
         */
        public function testExportExtractedDataGlobals( $desc, $before, $globals, $expected ) {