/**
  * @test
  */
 public function event_collection_is_converted_to_stream_data()
 {
     $uuid1 = new UUID();
     $event1 = new WritableEvent($uuid1, 'Foo', ['bar']);
     $uuid2 = new UUID();
     $event2 = new WritableEvent($uuid2, 'Baz', ['foo']);
     $eventCollection = new WritableEventCollection([$event1, $event2]);
     $streamData = [['eventId' => $uuid1->toNative(), 'eventType' => 'Foo', 'data' => ['bar'], 'metadata' => []], ['eventId' => $uuid2->toNative(), 'eventType' => 'Baz', 'data' => ['foo'], 'metadata' => []]];
     $this->assertEquals($streamData, $eventCollection->toStreamData());
 }
 /**
  * Write one or more events to a stream
  *
  * @param  string                                  $streamName      The stream name
  * @param  WritableToStream                        $events          Single event or a collection of events
  * @param  int                                     $expectedVersion The expected version of the stream
  * @throws Exception\WrongExpectedVersionException
  */
 public function writeToStream($streamName, WritableToStream $events, $expectedVersion = ExpectedVersion::ANY)
 {
     if ($events instanceof WritableEvent) {
         $events = new WritableEventCollection([$events]);
     }
     $request = new Request('POST', $this->getStreamUrl($streamName), ['ES-ExpectedVersion' => intval($expectedVersion), 'Content-Type' => 'application/vnd.eventstore.events+json'], json_encode($events->toStreamData()));
     $this->sendRequest($request);
     $responseStatusCode = $this->getLastResponse()->getStatusCode();
     if (ResponseCode::HTTP_BAD_REQUEST == $responseStatusCode) {
         throw new WrongExpectedVersionException();
     }
 }