/** * Subscribe the given array of command handlers on the command bus * @param array $enrichers */ public function subscribe($enrichers) { $enrichers = $this->isTraversable($enrichers) ? $enrichers : [$enrichers]; foreach ($enrichers as $enricher) { $this->eventStreamDecorator->registerEnricher($enricher); } }
/** * @test */ public function it_calls_the_enricher_when_registered_later() { $constructorEnricher = new TracableMetadataEnricher(); $newlyRegisteredEnricher = new TracableMetadataEnricher(); $decorator = new MetadataEnrichingEventStreamDecorator(array($constructorEnricher)); $decorator->registerEnricher($newlyRegisteredEnricher); $eventStream = $this->createDomainEventStream(); $newEventStream = $decorator->decorateForWrite('id', 'type', $eventStream); $this->assertEquals(2, $constructorEnricher->callCount()); $this->assertEquals(2, $newlyRegisteredEnricher->callCount()); }