From 5febbf8fb15a4a5f6b63517c8aeea8df441b43ce Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Tue, 11 May 2021 16:24:27 -0400 Subject: [PATCH] get/set enabled extensions from test case, not DB --- .../OverrideExtensionManagerForTests.php | 1 + .../ExtensionManagerIncludeCurrent.php | 44 ++++++++++++++++++- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/php-packages/testing/src/integration/Extend/OverrideExtensionManagerForTests.php b/php-packages/testing/src/integration/Extend/OverrideExtensionManagerForTests.php index de3c7abbe..49bc5ac86 100644 --- a/php-packages/testing/src/integration/Extend/OverrideExtensionManagerForTests.php +++ b/php-packages/testing/src/integration/Extend/OverrideExtensionManagerForTests.php @@ -22,6 +22,7 @@ class OverrideExtensionManagerForTests implements ExtenderInterface public function extend(Container $container, Extension $extension = null) { + $container->when(ExtensionManagerIncludeCurrent::class)->needs('$enabledIds')->give($this->extensions); if (count($this->extensions)) { $container->singleton(ExtensionManager::class, ExtensionManagerIncludeCurrent::class); $extensionManager = $container->make(ExtensionManager::class); diff --git a/php-packages/testing/src/integration/Extension/ExtensionManagerIncludeCurrent.php b/php-packages/testing/src/integration/Extension/ExtensionManagerIncludeCurrent.php index 75fa63a27..cfc00d71e 100644 --- a/php-packages/testing/src/integration/Extension/ExtensionManagerIncludeCurrent.php +++ b/php-packages/testing/src/integration/Extension/ExtensionManagerIncludeCurrent.php @@ -9,16 +9,41 @@ namespace Flarum\Testing\integration\Extension; +use Flarum\Database\Migrator; use Flarum\Extension\Extension; use Flarum\Extension\ExtensionManager; +use Flarum\Foundation\Paths; +use Flarum\Settings\SettingsRepositoryInterface; +use Illuminate\Contracts\Container\Container; +use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Filesystem\Cloud; +use Illuminate\Filesystem\Filesystem; use Illuminate\Filesystem\FilesystemAdapter; use Illuminate\Support\Arr; use League\Flysystem\Adapter\Local; -use League\Flysystem\Filesystem; +use League\Flysystem\Filesystem as FlysystemFilesystem; class ExtensionManagerIncludeCurrent extends ExtensionManager { + /** + * @var array + */ + protected $enabledIds; + + public function __construct( + SettingsRepositoryInterface $config, + Paths $paths, + Container $container, + Migrator $migrator, + Dispatcher $dispatcher, + Filesystem $filesystem, + array $enabledIds + ) { + parent::__construct($config, $paths, $container, $migrator, $dispatcher, $filesystem); + + $this->enabledIds = $enabledIds; + } + /** * @{@inheritDoc} */ @@ -44,6 +69,21 @@ class ExtensionManagerIncludeCurrent extends ExtensionManager return $this->extensions; } + /** + * In test cases, enabled extensions are determined by the test case, not the database. + */ + public function getEnabled() + { + return $this->enabledIds; + } + + /** + * Enabled extensions must be specified by the test case, so this should do nothing. + */ + protected function setEnabledExtensions(array $enabledExtensions) + { + } + /** * Get an instance of the assets filesystem. * This is resolved dynamically because Flarum's filesystem configuration @@ -51,6 +91,6 @@ class ExtensionManagerIncludeCurrent extends ExtensionManager */ protected function getAssetsFilesystem(): Cloud { - return new FilesystemAdapter(new Filesystem(new Local($this->paths->public.'/assets'), ['url' => resolve('flarum.config')->url().'/assets'])); + return new FilesystemAdapter(new FlysystemFilesystem(new Local($this->paths->public . '/assets'), ['url' => resolve('flarum.config')->url() . '/assets'])); } }