Skip to content

Commit

Permalink
Add feature was enabled event
Browse files Browse the repository at this point in the history
  • Loading branch information
vblinden authored and kpicaza committed Oct 5, 2021
1 parent f73f61b commit f88494f
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 3 deletions.
35 changes: 35 additions & 0 deletions src/Write/Event/FeatureWasEnabled.php
@@ -0,0 +1,35 @@
<?php

declare(strict_types=1);

namespace Pheature\Core\Toggle\Write\Event;

use Pheature\Core\Toggle\Write\FeatureId;
use DatetimeImmutable;

final class FeatureWasEnabled
{
private string $featureId;
private DatetimeImmutable $occurredAt;

public function __construct(string $featureId, DatetimeImmutable $occurredAt)
{
$this->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;
}
}
2 changes: 2 additions & 0 deletions src/Write/Feature.php
Expand Up @@ -4,6 +4,7 @@

namespace Pheature\Core\Toggle\Write;

use Pheature\Core\Toggle\Write\Event\FeatureWasEnabled;
use Pheature\Core\Toggle\Write\Event\FeatureWasDisabled;
use Pheature\Core\Toggle\Write\Event\FeatureWasCreated;
use JsonSerializable;
Expand Down Expand Up @@ -68,6 +69,7 @@ public function removeStrategy(StrategyId $strategyId): void
public function enable(): void
{
$this->enabled = true;
$this->events[] = FeatureWasEnabled::occur($this->featureId->value());
}

public function disable(): void
Expand Down
14 changes: 11 additions & 3 deletions test/Write/FeatureTest.php
Expand Up @@ -5,6 +5,7 @@
namespace Pheature\Test\Core\Toggle\Write;

use Pheature\Core\Toggle\Write\Event\FeatureWasDisabled;
use Pheature\Core\Toggle\Write\Event\FeatureWasEnabled;
use Pheature\Core\Toggle\Write\Feature;
use Pheature\Core\Toggle\Write\FeatureId;
use Pheature\Core\Toggle\Write\Strategy;
Expand Down Expand Up @@ -53,7 +54,11 @@ public function testItShouldBeEnabled(): void
$feature->enable();
$this->assertTrue($feature->isEnabled());
$events = $feature->release();
$this->assertCount(1, $events); // Released FeatureWasCreated event
$this->assertCount(2, $events); // Released FeatureWasCreated event and FeatureWasEnabled event
$featureWasEnabledEvent = $events[1];
$this->assertInstanceOf(FeatureWasEnabled::class, $featureWasEnabledEvent);
$this->assertSame(self::FEATURE_ID, $featureWasEnabledEvent->featureId()->value());
$this->assertInstanceOf(DatetimeImmutable::class, $featureWasEnabledEvent->occurredAt());
}

public function testItShouldBeDisabled(): void
Expand All @@ -63,8 +68,11 @@ public function testItShouldBeDisabled(): void
$feature->disable();
$this->assertFalse($feature->isEnabled());
$events = $feature->release();
$this->assertCount(2, $events); // Released FeatureWasCreated event and FeatureWasDisabled event
$featureWasDisabledEvent = $events[1];
// Released FeatureWasCreated event,
// FeatureWasEnabled event,
// FeatureWasDisabled event
$this->assertCount(3, $events);
$featureWasDisabledEvent = $events[2];
$this->assertInstanceOf(FeatureWasDisabled::class, $featureWasDisabledEvent);
$this->assertSame(self::FEATURE_ID, $featureWasDisabledEvent->featureId()->value());
$this->assertInstanceOf(DatetimeImmutable::class, $featureWasDisabledEvent->occurredAt());
Expand Down

0 comments on commit f88494f

Please sign in to comment.