assertEmpty($sut->getPlugins()); $this->assertNull($sut->getPlugin('foo')); } public function testUnknownRendererReturnsNull() { $sut = new PluginManager([]); $this->assertNull($sut->getPlugin('foo')); } public function testAdd() { $sut = new PluginManager([]); $plugin = $this->getMockBuilder(PluginInterface::class) ->onlyMethods(['getName', 'getPath']) ->getMock(); $plugin->method('getName')->willReturn('foo'); $plugin->method('getPath')->willReturn('bar'); $sut->addPlugin(new TestPlugin()); $sut->addPlugin($plugin); $sut->addPlugin(new TestPlugin()); // make sure a plugin with the same name is not added twice, the first one wins! $this->assertEquals(2, count($sut->getPlugins())); $foo = $sut->getPlugin('foo'); $this->assertInstanceOf(Plugin::class, $foo); $this->assertEquals('foo', $foo->getName()); $this->assertEquals('bar', $foo->getPath()); $test = $sut->getPlugin('TestPlugin'); $this->assertInstanceOf(Plugin::class, $test); $this->assertEquals('TestPlugin', $test->getName()); $this->assertEquals(new PluginMetadata(), $test->getMetadata()); } public function testLoadMetadata() { $sut = new PluginManager([new TestPlugin()]); $plugin = $sut->getPlugin('TestPlugin'); $sut->loadMetadata($plugin); $meta = $plugin->getMetadata(); $this->assertEquals('0.9', $meta->getKimaiVersion()); $this->assertEquals('1.0', $meta->getVersion()); $this->assertEquals('Just a test fixture for the PluginManager', $meta->getDescription()); $this->assertEquals('https://github.com/kevinpapst/kimai2', $meta->getHomepage()); } }