/** * @test * @dataProvider providePersistence * @param Persistence $persistence */ public function it_should_commit_and_fetch_events(Persistence $persistence) { $commitId = CommitId::generate(); $streamContract = Contract::with('My.Contract'); $streamId = OrderId::generate(); $eventContract = Contract::with("My.SomethingHasHappened"); $eventEnvelope1 = EventEnvelope::wrap(EventId::generate(), $eventContract, "My payload1"); $eventEnvelope2 = EventEnvelope::wrap(EventId::generate(), $eventContract, "My payload2"); $persistence->commit($commitId, $streamContract, $streamId, $expectedStreamVersion = 0, [$eventEnvelope1, $eventEnvelope2]); $persistedEventEnvelopes = $persistence->fetch($streamContract, $streamId); $this->assertCount(2, $persistedEventEnvelopes); $this->assertTrue($persistedEventEnvelopes[0]->equals($eventEnvelope1)); $this->assertTrue($persistedEventEnvelopes[1]->equals($eventEnvelope2)); }
/** * @param Persistence $persistence * @param Contract $streamContract * @param Identifier $streamId * @return EventStream */ public static function open(Persistence $persistence, Contract $streamContract, Identifier $streamId) { $eventStream = new EventStream($persistence, $streamContract, $streamId); $eventStream->committedEventEnvelopes = $persistence->fetch($streamContract, $streamId); return $eventStream; }