From 2cfe9524ab9d31eb7ebb69ffb9a66b6db2b82cd0 Mon Sep 17 00:00:00 2001 From: vblinden Date: Sun, 3 Oct 2021 16:24:06 +0200 Subject: [PATCH 1/2] Add feature was disabled event --- src/Write/Event/FeatureWasDisabled.php | 35 ++++++++++++++++++++++++++ src/Write/Feature.php | 2 ++ test/Write/FeatureTest.php | 5 +++- 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/Write/Event/FeatureWasDisabled.php diff --git a/src/Write/Event/FeatureWasDisabled.php b/src/Write/Event/FeatureWasDisabled.php new file mode 100644 index 0000000..d9fa693 --- /dev/null +++ b/src/Write/Event/FeatureWasDisabled.php @@ -0,0 +1,35 @@ +featureId = $featureId; + $this->occurredAt = $occurredAt; + } + + public static function occur(string $featureId): self + { + return new self($featureId, new DatetimeImmutable()); + } + + public function featureId(): FeatureId + { + return FeatureId::fromString($this->featureId); + } + + public function occurredAt(): DatetimeImmutable + { + return $this->occurredAt; + } +} diff --git a/src/Write/Feature.php b/src/Write/Feature.php index 185255f..b778da5 100644 --- a/src/Write/Feature.php +++ b/src/Write/Feature.php @@ -4,6 +4,7 @@ namespace Pheature\Core\Toggle\Write; +use Pheature\Core\Toggle\Write\Event\FeatureWasDisabled; use Pheature\Core\Toggle\Write\Event\FeatureWasCreated; use JsonSerializable; @@ -72,6 +73,7 @@ public function enable(): void public function disable(): void { $this->enabled = false; + $this->events[] = FeatureWasDisabled::occur($this->featureId->value()); } public function isEnabled(): bool diff --git a/test/Write/FeatureTest.php b/test/Write/FeatureTest.php index 8f449b4..2380696 100644 --- a/test/Write/FeatureTest.php +++ b/test/Write/FeatureTest.php @@ -4,6 +4,7 @@ namespace Pheature\Test\Core\Toggle\Write; +use Pheature\Core\Toggle\Write\Event\FeatureWasDisabled; use Pheature\Core\Toggle\Write\Feature; use Pheature\Core\Toggle\Write\FeatureId; use Pheature\Core\Toggle\Write\Strategy; @@ -62,7 +63,9 @@ public function testItShouldBeDisabled(): void $feature->disable(); $this->assertFalse($feature->isEnabled()); $events = $feature->release(); - $this->assertCount(1, $events); // Released FeatureWasCreated event + $this->assertCount(2, $events); // Released FeatureWasCreated event and FeatureWasDisabled event + $featureWasDisabledEvent = $events[1]; + $this->assertInstanceOf(FeatureWasDisabled::class, $featureWasDisabledEvent); } public function testItShouldSetAnStrategy(): void From 205e9ca1ecd080c48c876127b335a1c17e4393c4 Mon Sep 17 00:00:00 2001 From: vblinden Date: Sun, 3 Oct 2021 16:42:40 +0200 Subject: [PATCH 2/2] Add feature was disabled event --- test/Write/FeatureTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/Write/FeatureTest.php b/test/Write/FeatureTest.php index 2380696..ca926d8 100644 --- a/test/Write/FeatureTest.php +++ b/test/Write/FeatureTest.php @@ -66,6 +66,8 @@ public function testItShouldBeDisabled(): void $this->assertCount(2, $events); // Released FeatureWasCreated event and FeatureWasDisabled event $featureWasDisabledEvent = $events[1]; $this->assertInstanceOf(FeatureWasDisabled::class, $featureWasDisabledEvent); + $this->assertSame(self::FEATURE_ID, $featureWasDisabledEvent->featureId()->value()); + $this->assertInstanceOf(DatetimeImmutable::class, $featureWasDisabledEvent->occurredAt()); } public function testItShouldSetAnStrategy(): void