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()); }
/** * @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; }