예제 #1
0
 /**
  * @param CarriesCommitData[] $envelopes
  *
  * @throws InvalidEventEnvelopeCollection
  * @return array|\Countable|Interfaces\ServesEventStreamData[]|\Iterator
  */
 private function extractEventsFromEnvelopes($envelopes)
 {
     if ($this->guardIsArrayOrCountableIterator($envelopes)) {
         return $this->envelopeMapper->extractEventEnvelopesFromCommitEnvelopes($envelopes);
     } else {
         throw new InvalidEventEnvelopeCollection();
     }
 }
 public function testExtractEventFromEnvelope()
 {
     $mapper = new EventEnvelopeMapper($this->serialization_strategy);
     $event_envelope = $this->getTestEventEnvelope();
     $commit_envelope = $mapper->putEventInEnvelopeForCommit($event_envelope, $this->commit);
     $extracted_envelopes = $mapper->extractEventEnvelopesFromCommitEnvelopes([$commit_envelope]);
     /** @var EventEnvelope $extracted_envelope */
     $extracted_envelope = $extracted_envelopes[0];
     /** @var UnitTestEvent $extracted_event */
     $extracted_event = $extracted_envelope->getPayload();
     $this->assertCount(1, $extracted_envelopes);
     $this->assertInstanceOf(UnitTestEvent::class, $extracted_envelope->getPayload());
     $this->assertEquals($event_envelope->getStreamId(), $extracted_envelope->getStreamId());
     $this->assertTrue($event_envelope->getStreamId()->equals($extracted_envelope->getStreamId()));
     $this->assertInstanceOf(get_class($event_envelope->getStreamId()), $extracted_envelope->getStreamId());
     $this->assertEquals('Unit test event', $extracted_event->getDescription());
     $this->assertInstanceOf(\DateTimeImmutable::class, $extracted_envelope->getOccurredOn());
 }