1
0
mirror of https://github.com/flarum/core.git synced 2025-08-08 09:26:34 +02:00

chore: create tests to highlight the conditional instantiation problem

This commit is contained in:
Ian Morland
2023-10-11 08:42:49 +01:00
parent 82e08e3fa5
commit 7837481d21

View File

@@ -12,9 +12,12 @@ namespace Flarum\Tests\integration\extenders;
use Exception;
use Flarum\Api\Serializer\ForumSerializer;
use Flarum\Extend;
use Flarum\Extend\ExtenderInterface;
use Flarum\Extension\Extension;
use Flarum\Extension\ExtensionManager;
use Flarum\Testing\integration\RetrievesAuthorizedUsers;
use Flarum\Testing\integration\TestCase;
use Illuminate\Contracts\Container\Container;
class ConditionalTest extends TestCase
{
@@ -144,7 +147,7 @@ class ConditionalTest extends TestCase
$this->extend(
(new Extend\Conditional())
->when(function (?ExtensionManager $extensions) {
if (! $extensions) {
if (!$extensions) {
throw new Exception('ExtensionManager not injected');
}
}, [
@@ -159,4 +162,46 @@ class ConditionalTest extends TestCase
$this->app();
}
/** @test */
public function conditional_does_not_instantiate_extender_if_condition_is_false()
{
$this->extend(
(new Extend\Conditional())
->when(false, [
new TestExtender()
])
);
$this->app();
}
/** @test */
public function conditional_does_instantiate_extender_if_condition_is_true()
{
$this->expectException(Exception::class);
$this->expectExceptionMessage('TestExtender was instantiated!');
$this->extend(
(new Extend\Conditional())
->when(true, [
new TestExtender()
])
);
$this->app();
}
}
class TestExtender implements ExtenderInterface
{
public function __construct()
{
throw new Exception('TestExtender was instantiated!');
}
public function extend(Container $container, Extension $extension = null)
{
// This method can be left empty for this test.
}
}