eventDispatcher = $this->createMock(EventDispatcherInterface::class); $this->factoryMock = $this->createMock(MauticFactory::class); $this->helper = new ReloadHelper($this->eventDispatcher, $this->factoryMock); $this->sampleMetaData = [ 'MauticPlugin\MauticZapierBundle' => [$this->createMock(ClassMetadata::class)], ]; $sampleSchema = $this->createMock(Schema::class); $sampleSchema->method('getTables') ->willReturn([]); $this->sampleSchemas = [ 'MauticPlugin\MauticZapierBundle' => $sampleSchema, ]; $this->sampleAllPlugins = [ 'MauticZapierBundle' => [ 'isPlugin' => true, 'base' => 'MauticZapier', 'bundle' => 'MauticZapierBundle', 'namespace' => 'MauticPlugin\MauticZapierBundle', 'symfonyBundleName' => 'MauticZapierBundle', 'bundleClass' => PluginBundleBaseStub::class, 'permissionClasses' => [], 'relative' => 'plugins/MauticZapierBundle', 'directory' => '/Users/jan/dev/mautic/plugins/MauticZapierBundle', 'config' => [ 'name' => 'Zapier Integration', 'description' => 'Zapier lets you connect Mautic with 1100+ other apps', 'version' => '1.0', 'author' => 'Mautic', ], ], ]; } public function testDisableMissingPlugins(): void { $sampleInstalledPlugins = [ 'MauticZapierBundle' => $this->createSampleZapierPlugin(), 'MauticHappierBundle' => $this->createSampleHappierPlugin(), ]; $disabledPlugins = $this->helper->disableMissingPlugins($this->sampleAllPlugins, $sampleInstalledPlugins); $this->assertEquals(1, count($disabledPlugins)); $this->assertEquals('Happier Integration', $disabledPlugins['MauticHappierBundle']->getName()); $this->assertTrue($disabledPlugins['MauticHappierBundle']->isMissing()); } public function testEnableFoundPlugins(): void { $zapierPlugin = $this->createSampleZapierPlugin(); $zapierPlugin->setIsMissing(true); $sampleInstalledPlugins = [ 'MauticZapierBundle' => $zapierPlugin, ]; $enabledPlugins = $this->helper->enableFoundPlugins($this->sampleAllPlugins, $sampleInstalledPlugins); $this->assertEquals(1, count($enabledPlugins)); $this->assertEquals('Zapier Integration', $enabledPlugins['MauticZapierBundle']->getName()); $this->assertFalse($enabledPlugins['MauticZapierBundle']->isMissing()); } public function testUpdatePlugins(): void { $this->sampleAllPlugins['MauticZapierBundle']['config']['version'] = '1.0.1'; $this->sampleAllPlugins['MauticZapierBundle']['config']['description'] = 'Updated description'; $sampleInstalledPlugins = [ 'MauticZapierBundle' => $this->createSampleZapierPlugin(), 'MauticHappierBundle' => $this->createSampleHappierPlugin(), ]; $plugin = $this->createSampleZapierPlugin(); $plugin->setVersion('1.0.1'); $plugin->setDescription('Updated description'); $event = new PluginUpdateEvent($plugin, '1.0'); $this->eventDispatcher->expects($this->once())->method('dispatch')->with($event, PluginEvents::ON_PLUGIN_UPDATE); $updatedPlugins = $this->helper->updatePlugins($this->sampleAllPlugins, $sampleInstalledPlugins, $this->sampleMetaData, $this->sampleSchemas); $this->assertEquals(1, count($updatedPlugins)); $this->assertEquals('Zapier Integration', $updatedPlugins['MauticZapierBundle']->getName()); $this->assertEquals('1.0.1', $updatedPlugins['MauticZapierBundle']->getVersion()); $this->assertEquals('Updated description', $updatedPlugins['MauticZapierBundle']->getDescription()); } public function testInstallPlugins(): void { $sampleInstalledPlugins = [ 'MauticHappierBundle' => $this->createSampleHappierPlugin(), ]; $event = new PluginInstallEvent($this->createSampleZapierPlugin()); $this->eventDispatcher->expects($this->once())->method('dispatch')->with($event, PluginEvents::ON_PLUGIN_INSTALL); $installedPlugins = $this->helper->installPlugins($this->sampleAllPlugins, $sampleInstalledPlugins, $this->sampleMetaData, $this->sampleSchemas); $this->assertEquals(1, count($installedPlugins)); $this->assertEquals('Zapier Integration', $installedPlugins['MauticZapierBundle']->getName()); $this->assertEquals('1.0', $installedPlugins['MauticZapierBundle']->getVersion()); $this->assertEquals('MauticZapierBundle', $installedPlugins['MauticZapierBundle']->getBundle()); $this->assertEquals('Mautic', $installedPlugins['MauticZapierBundle']->getAuthor()); $this->assertEquals('Zapier lets you connect Mautic with 1100+ other apps', $installedPlugins['MauticZapierBundle']->getDescription()); $this->assertFalse($installedPlugins['MauticZapierBundle']->isMissing()); } private function createSampleZapierPlugin() { $plugin = new Plugin(); $plugin->setName('Zapier Integration'); $plugin->setDescription('Zapier lets you connect Mautic with 1100+ other apps'); $plugin->isMissing(false); $plugin->setBundle('MauticZapierBundle'); $plugin->setVersion('1.0'); $plugin->setAuthor('Mautic'); return $plugin; } private function createSampleHappierPlugin() { $plugin = new Plugin(); $plugin->setName('Happier Integration'); $plugin->setDescription('Happier lets you connect Mautic with 1100+ other apps'); $plugin->isMissing(false); $plugin->setBundle('MauticHappierBundle'); $plugin->setVersion('1.0'); $plugin->setAuthor('Mautic'); return $plugin; } }