public function testReconstructUsingExistingData()
 {
     $id = Uuid::uuid4();
     $timestamp = DateTime::microsecondsNow();
     $metadata = Metadata::from(['foo' => 'bar']);
     $message = new GenericDomainEventMessage('SomeAggregate', 1234, 5, new SomePayload(), $metadata, $id, $timestamp);
     $this->assertSame($metadata, $message->getMetadata());
     $this->assertSame($id, $message->getId());
     $this->assertSame($timestamp, $message->getTimestamp());
 }
Beispiel #2
0
 /**
  * @param DomainEventMessageInterface $domainEventMessage
  * @return DomainEventMessageInterface
  * @throws InvalidArgumentException
  */
 public function addEventMessage(DomainEventMessageInterface $domainEventMessage)
 {
     if ($domainEventMessage->getAggregateType() !== $this->aggregateType) {
         throw new InvalidArgumentException(sprintf('Trying to add an event message of aggregate %s to the event container of aggregate %s', $domainEventMessage->getAggregateType(), $this->aggregateType));
     }
     if ($domainEventMessage->getAggregateId() === null) {
         $domainEventMessage = new GenericDomainEventMessage($domainEventMessage->getAggregateType(), $this->aggregateId, $domainEventMessage->getSequenceNumber(), $domainEventMessage->getPayload(), $domainEventMessage->getMetadata(), $domainEventMessage->getId(), $domainEventMessage->getTimestamp());
     }
     $this->lastSequenceNumber = $domainEventMessage->getSequenceNumber();
     $this->events[] = $domainEventMessage;
     return $domainEventMessage;
 }