assertCount(5, $result); $this->assertArrayHasKey('October.NoUpdates', $result); $this->assertArrayHasKey('October.Sample', $result); $this->assertArrayHasKey('October.Tester', $result); $this->assertArrayHasKey('Database.Tester', $result); $this->assertArrayHasKey('TestVendor.Test', $result); $this->assertArrayNotHasKey('TestVendor.Goto', $result); $this->assertInstanceOf('October\NoUpdates\Plugin', $result['October.NoUpdates']); $this->assertInstanceOf('October\Sample\Plugin', $result['October.Sample']); $this->assertInstanceOf('October\Tester\Plugin', $result['October.Tester']); $this->assertInstanceOf('Database\Tester\Plugin', $result['Database.Tester']); $this->assertInstanceOf('TestVendor\Test\Plugin', $result['TestVendor.Test']); } public function testUnloadablePlugin() { $manager = PluginManager::instance(); $pluginNamespaces = $manager->getPluginNamespaces(); $result = $manager->loadPlugin('\\testvendor\\goto', $pluginNamespaces['\\testvendor\\goto']); $this->assertNull($result); } public function testGetPluginPath() { $manager = PluginManager::instance(); $result = $manager->getPluginPath('October\Tester'); $basePath = str_replace('\\', '/', base_path()); $this->assertEquals($basePath . '/tests/fixtures/plugins/october/tester', $result); } public function testGetPlugins() { $manager = PluginManager::instance(); $result = $manager->getPlugins(); $this->assertCount(5, $result); $this->assertArrayHasKey('October.NoUpdates', $result); $this->assertArrayHasKey('October.Sample', $result); $this->assertArrayHasKey('October.Tester', $result); $this->assertArrayHasKey('Database.Tester', $result); $this->assertArrayHasKey('TestVendor.Test', $result); $this->assertArrayNotHasKey('TestVendor.Goto', $result); $this->assertInstanceOf('October\NoUpdates\Plugin', $result['October.NoUpdates']); $this->assertInstanceOf('October\Sample\Plugin', $result['October.Sample']); $this->assertInstanceOf('October\Tester\Plugin', $result['October.Tester']); $this->assertInstanceOf('Database\Tester\Plugin', $result['Database.Tester']); $this->assertInstanceOf('TestVendor\Test\Plugin', $result['TestVendor.Test']); } public function testFindByNamespace() { $manager = PluginManager::instance(); $result = $manager->findByNamespace('October\Tester'); $this->assertInstanceOf('October\Tester\Plugin', $result); } public function testHasPlugin() { $manager = PluginManager::instance(); $result = $manager->hasPlugin('October\Tester'); $this->assertTrue($result); $result = $manager->hasPlugin('October\XXXXX'); $this->assertFalse($result); } public function testGetPluginNamespaces() { $manager = PluginManager::instance(); $result = $manager->getPluginNamespaces(); $this->assertCount(6, $result); $this->assertArrayHasKey('\october\noupdates', $result); $this->assertArrayHasKey('\october\sample', $result); $this->assertArrayHasKey('\october\tester', $result); $this->assertArrayHasKey('\database\tester', $result); $this->assertArrayHasKey('\testvendor\test', $result); $this->assertArrayHasKey('\testvendor\goto', $result); } public function testGetVendorAndPluginNames() { $manager = PluginManager::instance(); $vendors = $manager->getVendorAndPluginNames(); $this->assertArrayHasKey('october', $vendors); $this->assertArrayHasKey('database', $vendors); $this->assertArrayHasKey('testvendor', $vendors); $this->assertCount(3, $vendors); } public function testPluginDetails() { $manager = PluginManager::instance(); $testPlugin = $manager->findByNamespace('October\XXXXX'); $this->assertNull($testPlugin); $testPlugin = $manager->findByNamespace('October\Tester'); $this->assertNotNull($testPlugin); $pluginDetails = $testPlugin->pluginDetails(); $this->assertEquals('October Test Plugin', $pluginDetails['name']); $this->assertEquals('Test plugin used by unit tests.', $pluginDetails['description']); $this->assertEquals('Alexey Bobkov, Samuel Georges', $pluginDetails['author']); } public function testUnregisterall() { $manager = PluginManager::instance(); $result = $manager->getPlugins(); $this->assertCount(5, $result); $manager->unregisterAll(); $this->assertEmpty($manager->getPlugins()); } }