/** * @param array $metadata * @return GenericCommandMessage */ public function withMetaData(array $metadata = []) { if ($this->metaData->isEqualTo($metadata)) { return $this; } return new GenericCommandMessage($this->payload, new MetaData($metadata), $this->id, $this->commandName); }
public function testRegisterCallbackInvokedWithAllRegisteredEvents() { $container = new EventContainer(Uuid::uuid1()->toString()); $container->addEvent(MetaData::emptyInstance(), new Event()); $this->assertFalse(current($container->getEventList())->getMetaData()->has("key")); $container->addEventRegistrationCallback(new TestEventRegistrationCallback()); $this->assertEquals("value", current($container->getEventList())->getMetadata()->get("key")); }
public function testProvideAuditData() { $metaData = MetaData::emptyInstance(); $message = new GenericCommandMessage(new \stdClass(), $metaData); $provider = new CommandMetaDataProvider(); $actual = $provider->provideAuditDataFor($message); $this->assertSame($metaData->all(), $actual); }
/** * @param mixed $payload * @param MetaData $metadata * @param string $id */ public function __construct($payload, MetaData $metadata = null, $id = null) { if (!is_object($payload)) { throw new \InvalidArgumentException("Payload needs to be an object."); } $this->id = isset($id) ? $id : Uuid::uuid1()->toString(); $this->metadata = isset($metadata) ? $metadata : MetaData::emptyInstance(); $this->payload = $payload; }
/** * @param mixed $payload * @param MetaData $metaData */ public function apply($payload, MetaData $metaData = null) { $metaData = isset($metaData) ? $metaData : MetaData::emptyInstance(); if (null === $this->getIdentifier()) { if ($this->getUncommittedEventCount() > 0 || $this->getVersion() !== null) { throw new \RuntimeException("The Aggregate Identifier has not been initialized. " . "It must be initialized at the latest when the " . "first event is applied."); } $this->handleRecursively(new GenericDomainEventMessage(null, 0, $payload, $metaData)); $this->registerEvent($payload, $metaData); } else { $event = $this->registerEvent($payload, $metaData); $this->handleRecursively($event); } }
public function testConstructor() { $payload = new \stdClass(); $message1 = new GenericCommandMessage($payload); $metaDataMap = array("key" => "value"); $metaData = new MetaData($metaDataMap); $message2 = new GenericCommandMessage($payload, $metaData); $this->assertSame(MetaData::emptyInstance(), $message1->getMetaData()); $this->assertEquals('stdClass', get_class($message1->getPayload())); $this->assertEquals('stdClass', $message1->getPayloadType()); $this->assertSame($metaData, $message2->getMetaData()); $this->assertEquals('stdClass', get_class($message2->getPayload())); $this->assertEquals('stdClass', $message2->getPayloadType()); $this->assertFalse($message1->getIdentifier() === $message2->getIdentifier()); }
public function testConstructor() { $payload = new \stdClass(); $message1 = new GenericEventMessage($payload); $metaData = new MetaData(['key' => 'value']); $message2 = new GenericEventMessage($payload, $metaData); $this->assertSame(MetaData::emptyInstance(), $message1->getMetaData()); $this->assertEquals('stdClass', get_class($message1->getPayload())); $this->assertEquals('stdClass', $message1->getPayloadType()); $this->assertSame($payload, $message1->getPayload()); $this->assertSame($metaData, $message2->getMetaData()); $this->assertEquals('stdClass', get_class($message2->getPayload())); $this->assertEquals('stdClass', $message2->getPayloadType()); $this->assertEquals($payload, $message2->getPayload()); $this->assertFalse($message1->getIdentifier() === $message2->getIdentifier()); }
/** * @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 createSnapshotEvent() { return new GenericDomainEventMessage($this->getIdentifier(), $this->getVersion(), new StubStateChangedEvent(), MetaData::emptyInstance()); }
/** * @expectedException \Governor\Framework\CommandHandling\NoHandlerForCommandException */ public function testDispatchCommand_NoHandlerSubscribed() { $this->commandBus->dispatch(new GenericCommandMessage(new TestCommand('hi'), MetaData::emptyInstance())); }
protected function registerEvent($payload, MetaData $metaData = null) { $meta = null === $metaData ? MetaData::emptyInstance() : $metaData; return $this->getEventContainer()->addEvent($meta, $payload); }
private function domainEvent(StubDomainEvent $stubDomainEvent) { return new GenericDomainEventMessage(Uuid::uuid1(), 0, $stubDomainEvent, MetaData::emptyInstance()); }
public function testLoadAndSaveWithoutConflictingChanges() { $conflictResolver = $this->getMock('Governor\\Framework\\EventSourcing\\ConflictResolverInterface'); $identifier = Uuid::uuid1()->toString(); $event2 = new GenericDomainEventMessage($identifier, 2, new \stdClass(), MetaData::emptyInstance()); $event3 = new GenericDomainEventMessage($identifier, 3, new \stdClass(), MetaData::emptyInstance()); $this->mockEventStore->expects($this->once())->method('readEvents')->with($this->identicalTo("test"), $this->identicalTo($identifier))->will($this->returnValue(new SimpleDomainEventStream(array(new GenericDomainEventMessage($identifier, 1, new \stdClass()), $event2, $event3)))); $this->testSubject->setConflictResolver($conflictResolver); $actual = $this->testSubject->load($identifier, 3); $conflictResolver->expects($this->never())->method('resolveConflicts'); $actual->apply(new StubDomainEvent()); $conflictResolver->expects($this->never())->method('resolveConflicts'); CurrentUnitOfWork::commit(); }
/** * @covers Governor\Framework\Domain\MetaData::emptyInstance * @covers Governor\Framework\Domain\MetaData::isEmpty */ public function testEmptyInstance() { $metaData1 = MetaData::emptyInstance(); $metaData2 = MetaData::emptyInstance(); $this->assertEquals($metaData1, $metaData2); $this->assertTrue($metaData1->isEmpty()); }