public function testInitializeFromAggregateSnapshot() { $aggregate = new StubAggregate("stubId"); $aggregate->doSomething(); $aggregate->commitEvents(); $snapshotMessage = new GenericDomainEventMessage($aggregate->getIdentifier(), $aggregate->getVersion(), $aggregate); $factory = new GenericAggregateFactory(get_class($aggregate)); $this->assertEquals("StubAggregate", $factory->getTypeIdentifier()); $this->assertSame($aggregate, $factory->createAggregate($aggregate->getIdentifier(), $snapshotMessage)); }
public function testLockFailsOnConcurrentModification() { $identifier = Uuid::uuid1()->toString(); $aggregate1 = new StubAggregate($identifier); $aggregate2 = new StubAggregate($identifier); $manager = new OptimisticLockManager(); $manager->obtainLock($aggregate1->getIdentifier()); $manager->obtainLock($aggregate2->getIdentifier()); $aggregate1->doSomething(); $aggregate2->doSomething(); $this->assertTrue($manager->validateLock($aggregate1)); $this->assertFalse($manager->validateLock($aggregate2)); }