/** * @param Identity $identity * @param EventStorage $eventStorage * @param Serializer $serializer */ private function prepareSomeEvents(Identity $identity, EventStorage $eventStorage, Serializer $serializer) { // This is not the preferred way, but used for simplicity! You should use commands to achieve this. $event = new CreatedEvent($identity); $event->setVersion(1); $eventStorage->append(EventDescriptor::record($identity->getValue(), 'aggregateType', $event->getEventName(), $serializer->serialize($event), $event->getVersion())); $event = new DemonstratedEvent($identity); $event->setVersion(2); $eventStorage->append(EventDescriptor::record($identity->getValue(), 'aggregateType', $event->getEventName(), $serializer->serialize($event), $event->getVersion())); }
/** * @test */ public function findIdentitiesWillRetrieveAllKnownIdentities() { $identity1 = 'someidentity'; $identity2 = 'someotheridentity'; $event1 = EventDescriptor::record($identity1, 'aggregateType', 'someevent', '{}', 1); $event2 = EventDescriptor::record($identity2, 'aggregateType', 'someevent', '{}', 1); $storage = new MemoryEventStorage(); $storage->append($event1); $storage->append($event2); $identities = $storage->findIdentities(); self::assertCount(2, $identities); self::assertContains($identity1, $identities); self::assertContains($identity2, $identities); }
/** * @test */ public function findIdentitiesWillRetrieveAllKnownIdentities() { $collection = $this->getCollection(); $identityField = 'identity'; $identity1 = 'someidentity'; $identity2 = 'someotheridentity'; $event1 = EventDescriptor::record($identity1, 'aggregateType', 'someevent', '{}', 1); $event2 = EventDescriptor::record($identity2, 'aggregateType', 'someevent', '{}', 1); $storage = new MongoDbEventStorage($collection, $identityField); $storage->append($event1); $storage->append($event2); $identities = $storage->findIdentities(); self::assertCount(2, $identities); self::assertContains($identity1, $identities); self::assertContains($identity2, $identities); }
/** * @param Identity $aggregateId * @param string $aggregateType * @param Event $event */ private function saveEvent(Identity $aggregateId, string $aggregateType, Event $event) { $eventData = EventDescriptor::record($aggregateId->getValue(), $aggregateType, $event->getEventName(), $this->serializer->serialize($event), $event->getVersion()); $this->storage->append($eventData); }