folder = __DIR__ . '/mocks/plugins' . DIRECTORY_SEPARATOR;
self::$plugins = new Plugins($pluginsConfig);
}
public function testRegister(): void
{
$this->assertCount(7, self::$plugins->getAllPlugins());
$this->assertEquals(7, self::$plugins->getInstalledCount());
$this->assertEquals(0, self::$plugins->getActiveCount());
}
public function testActivateDeactivate(): void
{
$this->assertEquals(0, self::$plugins->getActiveCount());
$plugin = self::$plugins->getAllPlugins()[0];
// get first plugin and activate it
self::$plugins->activate($plugin);
$this->assertEquals(1, self::$plugins->getActiveCount());
$this->assertEquals(PluginStatus::ACTIVE, $plugin->getStatus());
$this->seeInDatabase('settings', [
'class' => PluginsConfig::class,
'key' => 'active',
'value' => '1',
'type' => 'boolean',
'context' => 'plugin:' . $plugin->getKey(),
]);
// get first plugin and deactivate it
self::$plugins->deactivate($plugin);
$this->assertEquals(0, self::$plugins->getActiveCount());
$this->assertEquals(PluginStatus::INACTIVE, $plugin->getStatus());
$this->seeInDatabase('settings', [
'class' => PluginsConfig::class,
'key' => 'active',
'value' => '0',
'type' => 'boolean',
'context' => 'plugin:' . $plugin->getKey(),
]);
}
public function testRunHooksActive(): void
{
$acmeAllHooksPlugin = self::$plugins->getPlugin('acme', 'all-hooks');
self::$plugins->activate($acmeAllHooksPlugin);
$this->assertEquals(1, self::$plugins->getActiveCount());
$podcast = new Podcast();
$this->assertEquals('', $podcast->title);
self::$plugins->runHook('rssBeforeChannel', [$podcast]);
$this->assertEquals('Podcast test', $podcast->title);
$channel = new RssFeed('