public function testConstructWithHistoryEvents() { $historyEvents = array(); $userNameChangedEvent = new UserNameChangedEvent(array('oldName' => null, 'newName' => 'Malocher')); $userNameChangedEvent->setSourceId(1); $userNameChangedEvent->setSourceVersion(1); $historyEvents[] = $userNameChangedEvent; $userEmailChangedEvent = new UserEmailChangedEvent(array('oldEmail' => null, 'newEmail' => '*****@*****.**')); $userEmailChangedEvent->setSourceId(1); $userEmailChangedEvent->setSourceVersion(2); $historyEvents[] = $userEmailChangedEvent; $decorator = new ProtectedAccessDecorator(); $decorator->constructManagedObjectFromHistory('Malocher\\EventStoreTest\\Coverage\\Mock\\User', '1', $historyEvents); $mockUser = $decorator->getManagedObject(); $this->assertEquals(2, $mockUser->getSourceVersion()); $this->assertEquals('Malocher', $mockUser->getName()); $this->assertEquals('*****@*****.**', $mockUser->getEmail()); //history events must not be treated as events that have to be stored $this->assertEquals(0, count($decorator->getPendingEvents())); }
public function testLoadStreamFromVersionOn() { $yesterdayTimestamp = time() - 86400; $userNameChangedEvent = new UserNameChangedEvent(array('name' => 'Malocher'), '100', $yesterdayTimestamp, 2.0); $userNameChangedEvent->setSourceId('1'); $userNameChangedEvent->setSourceVersion(1); $userEmailChangedEvent = new UserEmailChangedEvent(array('email' => '*****@*****.**'), '101', $yesterdayTimestamp, 2.0); $userEmailChangedEvent->setSourceId('1'); $userEmailChangedEvent->setSourceVersion(2); $this->doctrineDbalAdapter->addToStream('User', '1', array($userNameChangedEvent, $userEmailChangedEvent)); $snapshotEvent = new SnapshotEvent(array('name' => 'Malocher', 'email' => '*****@*****.**'), '102', $yesterdayTimestamp, 2.0); $snapshotEvent->setSourceId('1'); $snapshotEvent->setSourceVersion(3); $this->doctrineDbalAdapter->createSnapshot('User', '1', $snapshotEvent); $userEmailChangedEvent2 = new UserEmailChangedEvent(array('email' => '*****@*****.**'), '103', $yesterdayTimestamp, 2.0); $userEmailChangedEvent2->setSourceId('1'); $userEmailChangedEvent2->setSourceVersion(4); $this->doctrineDbalAdapter->addToStream('User', '1', array($userEmailChangedEvent2)); $this->assertEquals(array($snapshotEvent, $userEmailChangedEvent2), $this->doctrineDbalAdapter->loadStream('User', '1', $this->doctrineDbalAdapter->getCurrentSnapshotVersion('User', '1'))); }