/** * @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(); } }