From ce7484e2c86541d74d52d30e4f37b0b20190ef0c Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Tue, 11 May 2021 19:31:35 -0400 Subject: [PATCH] Extensions should be considered enabled after boot. Before boot, we consider them "disabled" so they get migrated. --- .../Extend/OverrideExtensionManagerForTests.php | 2 ++ .../Extension/ExtensionManagerIncludeCurrent.php | 13 +++++++++++-- .../tests/tests/integration/TestCaseTest.php | 11 +++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/php-packages/testing/src/integration/Extend/OverrideExtensionManagerForTests.php b/php-packages/testing/src/integration/Extend/OverrideExtensionManagerForTests.php index 49bc5ac86..8d66e7319 100644 --- a/php-packages/testing/src/integration/Extend/OverrideExtensionManagerForTests.php +++ b/php-packages/testing/src/integration/Extend/OverrideExtensionManagerForTests.php @@ -31,6 +31,8 @@ class OverrideExtensionManagerForTests implements ExtenderInterface $extensionManager->enable($extension); } + $extensionManager->booted = true; + $extensionManager->extend($container); } } diff --git a/php-packages/testing/src/integration/Extension/ExtensionManagerIncludeCurrent.php b/php-packages/testing/src/integration/Extension/ExtensionManagerIncludeCurrent.php index 8031d20f9..1a3dbc8f0 100644 --- a/php-packages/testing/src/integration/Extension/ExtensionManagerIncludeCurrent.php +++ b/php-packages/testing/src/integration/Extension/ExtensionManagerIncludeCurrent.php @@ -30,6 +30,11 @@ class ExtensionManagerIncludeCurrent extends ExtensionManager */ protected $enabledIds; + /** + * @var bool + */ + public $booted = false; + public function __construct( SettingsRepositoryInterface $config, Paths $paths, @@ -70,11 +75,15 @@ class ExtensionManagerIncludeCurrent extends ExtensionManager } /** - * Since we enable every time, we always assume it's not enabled. + * We assume it's not enabled during boot. + * However, since some logic needs this, as soon as we enable extensions + * we'll switch booted to on. */ public function isEnabled($extension) { - return false; + if (!$this->booted) return false; + + return parent::isEnabled($extension); } /** diff --git a/php-packages/testing/tests/tests/integration/TestCaseTest.php b/php-packages/testing/tests/tests/integration/TestCaseTest.php index af7f6252b..2b7c3814e 100644 --- a/php-packages/testing/tests/tests/integration/TestCaseTest.php +++ b/php-packages/testing/tests/tests/integration/TestCaseTest.php @@ -125,6 +125,17 @@ class TestCaseTest extends TestCase $this->assertTrue($tableExists); } + /** + * @test + */ + public function current_extension_considered_enabled_after_boot() + { + $this->extension('flarum-testing-tests'); + + $enabled = $this->app()->getContainer()->make('flarum.extensions')->isEnabled('flarum-testing-tests'); + $this->assertTrue($enabled); + } + /** * @test */