/** * @covers Governor\Framework\Domain\GenericDomainEventMessage::__construct */ public function testConstructor() { $payload = new Payload(); $seqNo = 0; $id = Uuid::uuid1(); $message1 = new GenericDomainEventMessage($id, $seqNo, $payload, MetaData::emptyInstance()); $metaData = new Metadata(['key' => 'value']); $message2 = new GenericDomainEventMessage($id, $seqNo, $payload, $metaData); $this->assertSame($id, $message1->getAggregateIdentifier()); $this->assertEquals($seqNo, $message1->getScn()); $this->assertSame(MetaData::emptyInstance(), $message1->getMetaData()); $this->assertEquals(get_class($payload), get_class($message1->getPayload())); $this->assertEquals(get_class($payload), $message1->getPayloadType()); $this->assertSame($id, $message2->getAggregateIdentifier()); $this->assertEquals($seqNo, $message2->getScn()); $this->assertSame($metaData, $message2->getMetaData()); $this->assertEquals(get_class($payload), get_class($message2->getPayload())); $this->assertEquals(get_class($payload), $message2->getPayloadType()); $this->assertNotEquals($message1->getIdentifier(), $message2->getIdentifier()); }
public function readEvents($type, $identifier) { $snapshotScn = -1; $snapshotEvent = null; $lastSnapshotEvent = $this->entryStore->loadLastSnapshotEvent($type, $identifier, $this->entityManager); if (null !== $lastSnapshotEvent) { try { $snapshotEvent = new GenericDomainEventMessage($identifier, $lastSnapshotEvent->getScn(), $this->serializer->deserialize($lastSnapshotEvent->getPayload()), $this->serializer->deserialize($lastSnapshotEvent->getMetaData())); $snapshotScn = $snapshotEvent->getScn(); } catch (\RuntimeException $ex) { $this->logger->warn("Error while reading snapshot event entry. " . "Reconstructing aggregate on entire event stream. Caused by: {class} {message}", array('class' => get_class($ex), 'message' => $ex->getMessage())); } } $entries = $this->entryStore->fetchAggregateStream($type, $identifier, $snapshotScn, $this->batchSize, $this->entityManager); if ($snapshotEvent === null && !$entries->valid()) { throw new EventStreamNotFoundException($type, $identifier); } return new OrmDomainEventStream($this->serializer, $entries, $identifier, $snapshotEvent); }