From f01f3f629a8493d76e2d693c603b56e5a3959604 Mon Sep 17 00:00:00 2001 From: Morgan Hallgren Date: Wed, 19 Apr 2017 07:27:16 +0200 Subject: [PATCH 1/7] append_to_stream can handle meta data --- lib/http_event_store/api/client.rb | 3 ++- lib/http_event_store/event.rb | 4 ++-- lib/http_event_store/helpers/parse_entries.rb | 3 ++- spec/api_client_spec.rb | 8 ++++---- spec/parse_entries_spec.rb | 2 ++ 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/http_event_store/api/client.rb b/lib/http_event_store/api/client.rb index 96465df..f20a2e2 100644 --- a/lib/http_event_store/api/client.rb +++ b/lib/http_event_store/api/client.rb @@ -20,7 +20,8 @@ def append_to_stream(stream_name, event_data, expected_version = nil) { eventId: event.event_id, eventType: event.type, - data: event.data + data: event.data, + metadata: event.meta_data } end diff --git a/lib/http_event_store/event.rb b/lib/http_event_store/event.rb index c0ab3b4..f0bc3e8 100644 --- a/lib/http_event_store/event.rb +++ b/lib/http_event_store/event.rb @@ -1,7 +1,7 @@ require 'securerandom' -class Event < Struct.new(:type, :data, :source_event_uri, :event_id, :id, :position, :stream_name, :created_time) - def initialize(type, data, source_event_uri=nil, event_id=nil, id=nil, position=nil, stream_name=nil, created_time=nil) +class Event < Struct.new(:type, :data, :source_event_uri, :event_id, :id, :position, :stream_name, :created_time, :meta_data) + def initialize(type, data, source_event_uri=nil, event_id=nil, id=nil, position=nil, stream_name=nil, created_time=nil, meta_data=nil) event_id = SecureRandom.uuid if event_id.nil? super end diff --git a/lib/http_event_store/helpers/parse_entries.rb b/lib/http_event_store/helpers/parse_entries.rb index aa6d80e..65da20b 100644 --- a/lib/http_event_store/helpers/parse_entries.rb +++ b/lib/http_event_store/helpers/parse_entries.rb @@ -23,8 +23,9 @@ def create_event(entry) stream_name = entry['streamId'] position = entry['positionEventNumber'] created_time = entry['updated'] ? Time.parse(entry['updated']) : nil + meta_data = entry['meta_data'] ? JSON.parse(entry['meta_data']) : nil - Event.new(type, data, source_event_uri, event_id, id, position, stream_name, created_time) + Event.new(type, data, source_event_uri, event_id, id, position, stream_name, created_time, meta_data) end end end diff --git a/spec/api_client_spec.rb b/spec/api_client_spec.rb index 7d6b612..6b473df 100644 --- a/spec/api_client_spec.rb +++ b/spec/api_client_spec.rb @@ -10,10 +10,10 @@ module Api describe '#append_to_stream' do it "should handle one event" do - event = Event.new('event_type', { data: 1 }) - expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data}], {'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) + event = Event.new('event_type', { data: 1 }, nil, nil, nil, nil, nil, nil, { meta_data: 2}) + expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: { meta_data: 2}}], {'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) client.append_to_stream(stream_name, event) - expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) + expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: { meta_data: 2}}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) client.append_to_stream(stream_name, event, 1) end @@ -22,7 +22,7 @@ module Api event2 = Event.new('event-type2', {data: 2}) events = [event1, event2] - expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event1.event_id, eventType: event1.type, data: event1.data},{eventId: event2.event_id, eventType: event2.type, data: event2.data}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) + expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event1.event_id, eventType: event1.type, data: event1.data, metadata: nil},{eventId: event2.event_id, eventType: event2.type, data: event2.data, metadata: nil}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) client.append_to_stream(stream_name, events, 1) end end diff --git a/spec/parse_entries_spec.rb b/spec/parse_entries_spec.rb index c4b059b..0bc3cd9 100644 --- a/spec/parse_entries_spec.rb +++ b/spec/parse_entries_spec.rb @@ -11,6 +11,7 @@ module Helpers expect(events.length).to eq 1 expect(events[0].type).to eq "entryCreated" expect(events[0].data).to eq({"a" => "1"}) + expect(events[0].meta_data).to eq({"a" => "1"}) expect(events[0].event_id).to eq "fbf4a1a1-b4a3-4dfe-a01f-6668634e16e4" expect(events[0].id).to eq 47 expect(events[0].position).to eq 51 @@ -48,6 +49,7 @@ def entry "eventId" => "fbf4a1a1-b4a3-4dfe-a01f-6668634e16e4", "eventType" => "entryCreated", "data" => "{\n \"a\": \"1\"\n}", + "meta_data" => "{\n \"a\": \"1\"\n}", "eventNumber" => 47, "positionEventNumber" => 51, "streamId" => 'entries', From 5c6371c296282a7e3107278641eb60d993dfb23e Mon Sep 17 00:00:00 2001 From: Morgan Hallgren Date: Wed, 19 Apr 2017 11:24:55 +0200 Subject: [PATCH 2/7] moved meta_data position in initialize of Event and added spec --- lib/http_event_store/actions/append_event_to_stream.rb | 3 ++- lib/http_event_store/event.rb | 4 ++-- lib/http_event_store/helpers/parse_entries.rb | 2 +- spec/api_client_spec.rb | 2 +- spec/event_store_connection_spec.rb | 5 +++++ spec/in_memory_es.rb | 2 +- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/http_event_store/actions/append_event_to_stream.rb b/lib/http_event_store/actions/append_event_to_stream.rb index 22bc1ff..13c6f1c 100644 --- a/lib/http_event_store/actions/append_event_to_stream.rb +++ b/lib/http_event_store/actions/append_event_to_stream.rb @@ -28,8 +28,9 @@ def call(stream_name, event_data, expected_version = nil) def create_event(event_data) type = event_data.event_type data = event_data.data + meta_data = event_data.meta_data if event_data.respond_to?(:meta_data) event_id = event_data.event_id if event_data.respond_to?(:event_id) - Event.new(type, data, event_id) + Event.new(type, data, meta_data, event_id) end def create_event_in_es(stream_name, event, expected_version) diff --git a/lib/http_event_store/event.rb b/lib/http_event_store/event.rb index f0bc3e8..fb726fd 100644 --- a/lib/http_event_store/event.rb +++ b/lib/http_event_store/event.rb @@ -1,7 +1,7 @@ require 'securerandom' -class Event < Struct.new(:type, :data, :source_event_uri, :event_id, :id, :position, :stream_name, :created_time, :meta_data) - def initialize(type, data, source_event_uri=nil, event_id=nil, id=nil, position=nil, stream_name=nil, created_time=nil, meta_data=nil) +class Event < Struct.new(:type, :data, :meta_data, :source_event_uri, :event_id, :id, :position, :stream_name, :created_time) + def initialize(type, data, meta_data=nil, source_event_uri=nil, event_id=nil, id=nil, position=nil, stream_name=nil, created_time=nil) event_id = SecureRandom.uuid if event_id.nil? super end diff --git a/lib/http_event_store/helpers/parse_entries.rb b/lib/http_event_store/helpers/parse_entries.rb index 65da20b..628fde4 100644 --- a/lib/http_event_store/helpers/parse_entries.rb +++ b/lib/http_event_store/helpers/parse_entries.rb @@ -25,7 +25,7 @@ def create_event(entry) created_time = entry['updated'] ? Time.parse(entry['updated']) : nil meta_data = entry['meta_data'] ? JSON.parse(entry['meta_data']) : nil - Event.new(type, data, source_event_uri, event_id, id, position, stream_name, created_time, meta_data) + Event.new(type, data, meta_data, source_event_uri, event_id, id, position, stream_name, created_time) end end end diff --git a/spec/api_client_spec.rb b/spec/api_client_spec.rb index 6b473df..3f77ec8 100644 --- a/spec/api_client_spec.rb +++ b/spec/api_client_spec.rb @@ -10,7 +10,7 @@ module Api describe '#append_to_stream' do it "should handle one event" do - event = Event.new('event_type', { data: 1 }, nil, nil, nil, nil, nil, nil, { meta_data: 2}) + event = Event.new('event_type', { data: 1 }, { meta_data: 2}) expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: { meta_data: 2}}], {'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) client.append_to_stream(stream_name, event) expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: { meta_data: 2}}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) diff --git a/spec/event_store_connection_spec.rb b/spec/event_store_connection_spec.rb index 47fceae..0b0d8f7 100644 --- a/spec/event_store_connection_spec.rb +++ b/spec/event_store_connection_spec.rb @@ -33,6 +33,11 @@ module HttpEventStore expect(client.event_store[stream_name].length).to eq 1 end + specify 'can create new event with meta_data in stream from hash' do + create_event_in_es({ event_type: 'event_type', data: 'event_data', meta_data: "event_meta_data" }) + expect(client.event_store[stream_name][0]["meta_data"]).to eq "\"event_meta_data\"" + end + specify 'can create new event in stream from array' do create_events_in_es([{ event_type: 'event_type', data: 'event_data' }]) expect(client.event_store[stream_name].length).to eq 1 diff --git a/spec/in_memory_es.rb b/spec/in_memory_es.rb index 3d58f8c..6ffe50c 100644 --- a/spec/in_memory_es.rb +++ b/spec/in_memory_es.rb @@ -18,7 +18,7 @@ def append_to_stream(stream_name, event_data, expected_version = nil) event_data.each do |event| id = event_store[stream_name].length - event_store[stream_name].unshift({'eventId' => event.event_id, 'data' => event.data.to_json, 'eventType' => event.type, 'positionEventNumber' => id}) + event_store[stream_name].unshift({'eventId' => event.event_id, 'data' => event.data.to_json, 'eventType' => event.type, 'positionEventNumber' => id, 'meta_data' => event.meta_data.to_json}) end end From c276a03bd876301b7f921c7a1bb5a96542475446 Mon Sep 17 00:00:00 2001 From: Morgan Hallgren Date: Wed, 19 Apr 2017 13:50:41 +0200 Subject: [PATCH 3/7] dont json parse empty string (data/meta_data) and return nil if eventType not set --- lib/http_event_store/helpers/parse_entries.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/http_event_store/helpers/parse_entries.rb b/lib/http_event_store/helpers/parse_entries.rb index 628fde4..345d8dd 100644 --- a/lib/http_event_store/helpers/parse_entries.rb +++ b/lib/http_event_store/helpers/parse_entries.rb @@ -13,17 +13,17 @@ def call(entries) private def create_event(entry) - return nil unless entry['data'] + return nil unless entry['eventType'] id = entry['eventNumber'] event_id = entry['eventId'] type = entry['eventType'] source_event_uri = entry['id'] - data = JSON.parse(entry['data']) + data = !entry['data'].nil? && !entry['data'].empty? ? JSON.parse(entry['data']) : nil stream_name = entry['streamId'] position = entry['positionEventNumber'] created_time = entry['updated'] ? Time.parse(entry['updated']) : nil - meta_data = entry['meta_data'] ? JSON.parse(entry['meta_data']) : nil + meta_data = !entry['meta_data'].nil? && !entry['meta_data'].empty? ? JSON.parse(entry['meta_data']) : nil Event.new(type, data, meta_data, source_event_uri, event_id, id, position, stream_name, created_time) end From 5653ed7c35f13f1897827b016f5f1986ee8e77a0 Mon Sep 17 00:00:00 2001 From: Morgan Hallgren Date: Mon, 8 May 2017 09:54:15 +0200 Subject: [PATCH 4/7] replaced meta_data with metadata --- lib/http_event_store/actions/append_event_to_stream.rb | 4 ++-- lib/http_event_store/api/client.rb | 2 +- lib/http_event_store/event.rb | 4 ++-- lib/http_event_store/helpers/parse_entries.rb | 4 ++-- spec/api_client_spec.rb | 6 +++--- spec/event_store_connection_spec.rb | 6 +++--- spec/in_memory_es.rb | 2 +- spec/parse_entries_spec.rb | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/http_event_store/actions/append_event_to_stream.rb b/lib/http_event_store/actions/append_event_to_stream.rb index 13c6f1c..6e34c2f 100644 --- a/lib/http_event_store/actions/append_event_to_stream.rb +++ b/lib/http_event_store/actions/append_event_to_stream.rb @@ -28,9 +28,9 @@ def call(stream_name, event_data, expected_version = nil) def create_event(event_data) type = event_data.event_type data = event_data.data - meta_data = event_data.meta_data if event_data.respond_to?(:meta_data) + metadata = event_data.metadata if event_data.respond_to?(:metadata) event_id = event_data.event_id if event_data.respond_to?(:event_id) - Event.new(type, data, meta_data, event_id) + Event.new(type, data, metadata, event_id) end def create_event_in_es(stream_name, event, expected_version) diff --git a/lib/http_event_store/api/client.rb b/lib/http_event_store/api/client.rb index f20a2e2..2fdc0f9 100644 --- a/lib/http_event_store/api/client.rb +++ b/lib/http_event_store/api/client.rb @@ -21,7 +21,7 @@ def append_to_stream(stream_name, event_data, expected_version = nil) eventId: event.event_id, eventType: event.type, data: event.data, - metadata: event.meta_data + metadata: event.metadata } end diff --git a/lib/http_event_store/event.rb b/lib/http_event_store/event.rb index fb726fd..3986c47 100644 --- a/lib/http_event_store/event.rb +++ b/lib/http_event_store/event.rb @@ -1,7 +1,7 @@ require 'securerandom' -class Event < Struct.new(:type, :data, :meta_data, :source_event_uri, :event_id, :id, :position, :stream_name, :created_time) - def initialize(type, data, meta_data=nil, source_event_uri=nil, event_id=nil, id=nil, position=nil, stream_name=nil, created_time=nil) +class Event < Struct.new(:type, :data, :metadata, :source_event_uri, :event_id, :id, :position, :stream_name, :created_time) + def initialize(type, data, metadata=nil, source_event_uri=nil, event_id=nil, id=nil, position=nil, stream_name=nil, created_time=nil) event_id = SecureRandom.uuid if event_id.nil? super end diff --git a/lib/http_event_store/helpers/parse_entries.rb b/lib/http_event_store/helpers/parse_entries.rb index 345d8dd..b492693 100644 --- a/lib/http_event_store/helpers/parse_entries.rb +++ b/lib/http_event_store/helpers/parse_entries.rb @@ -23,9 +23,9 @@ def create_event(entry) stream_name = entry['streamId'] position = entry['positionEventNumber'] created_time = entry['updated'] ? Time.parse(entry['updated']) : nil - meta_data = !entry['meta_data'].nil? && !entry['meta_data'].empty? ? JSON.parse(entry['meta_data']) : nil + metadata = !entry['metadata'].nil? && !entry['metadata'].empty? ? JSON.parse(entry['metadata']) : nil - Event.new(type, data, meta_data, source_event_uri, event_id, id, position, stream_name, created_time) + Event.new(type, data, metadata, source_event_uri, event_id, id, position, stream_name, created_time) end end end diff --git a/spec/api_client_spec.rb b/spec/api_client_spec.rb index 3f77ec8..96547f9 100644 --- a/spec/api_client_spec.rb +++ b/spec/api_client_spec.rb @@ -10,10 +10,10 @@ module Api describe '#append_to_stream' do it "should handle one event" do - event = Event.new('event_type', { data: 1 }, { meta_data: 2}) - expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: { meta_data: 2}}], {'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) + event = Event.new('event_type', { data: 1 }, { metadata: 2}) + expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: { metadata: 2}}], {'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) client.append_to_stream(stream_name, event) - expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: { meta_data: 2}}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) + expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: { metadata: 2}}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) client.append_to_stream(stream_name, event, 1) end diff --git a/spec/event_store_connection_spec.rb b/spec/event_store_connection_spec.rb index 0b0d8f7..bea3ba7 100644 --- a/spec/event_store_connection_spec.rb +++ b/spec/event_store_connection_spec.rb @@ -33,9 +33,9 @@ module HttpEventStore expect(client.event_store[stream_name].length).to eq 1 end - specify 'can create new event with meta_data in stream from hash' do - create_event_in_es({ event_type: 'event_type', data: 'event_data', meta_data: "event_meta_data" }) - expect(client.event_store[stream_name][0]["meta_data"]).to eq "\"event_meta_data\"" + specify 'can create new event with metadata in stream from hash' do + create_event_in_es({ event_type: 'event_type', data: 'event_data', metadata: "event_metadata" }) + expect(client.event_store[stream_name][0]["metadata"]).to eq "\"event_metadata\"" end specify 'can create new event in stream from array' do diff --git a/spec/in_memory_es.rb b/spec/in_memory_es.rb index 6ffe50c..589eee4 100644 --- a/spec/in_memory_es.rb +++ b/spec/in_memory_es.rb @@ -18,7 +18,7 @@ def append_to_stream(stream_name, event_data, expected_version = nil) event_data.each do |event| id = event_store[stream_name].length - event_store[stream_name].unshift({'eventId' => event.event_id, 'data' => event.data.to_json, 'eventType' => event.type, 'positionEventNumber' => id, 'meta_data' => event.meta_data.to_json}) + event_store[stream_name].unshift({'eventId' => event.event_id, 'data' => event.data.to_json, 'eventType' => event.type, 'positionEventNumber' => id, 'metadata' => event.metadata.to_json}) end end diff --git a/spec/parse_entries_spec.rb b/spec/parse_entries_spec.rb index 0bc3cd9..75a7513 100644 --- a/spec/parse_entries_spec.rb +++ b/spec/parse_entries_spec.rb @@ -11,7 +11,7 @@ module Helpers expect(events.length).to eq 1 expect(events[0].type).to eq "entryCreated" expect(events[0].data).to eq({"a" => "1"}) - expect(events[0].meta_data).to eq({"a" => "1"}) + expect(events[0].metadata).to eq({"a" => "1"}) expect(events[0].event_id).to eq "fbf4a1a1-b4a3-4dfe-a01f-6668634e16e4" expect(events[0].id).to eq 47 expect(events[0].position).to eq 51 @@ -49,7 +49,7 @@ def entry "eventId" => "fbf4a1a1-b4a3-4dfe-a01f-6668634e16e4", "eventType" => "entryCreated", "data" => "{\n \"a\": \"1\"\n}", - "meta_data" => "{\n \"a\": \"1\"\n}", + "metadata" => "{\n \"a\": \"1\"\n}", "eventNumber" => 47, "positionEventNumber" => 51, "streamId" => 'entries', From 3363c55f8d211d1c6bae00f7bd425c5f38140bc8 Mon Sep 17 00:00:00 2001 From: Morgan Hallgren Date: Mon, 8 May 2017 09:57:45 +0200 Subject: [PATCH 5/7] put metadata in separate spec --- spec/api_client_spec.rb | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/spec/api_client_spec.rb b/spec/api_client_spec.rb index 96547f9..fcd4ae7 100644 --- a/spec/api_client_spec.rb +++ b/spec/api_client_spec.rb @@ -10,10 +10,10 @@ module Api describe '#append_to_stream' do it "should handle one event" do - event = Event.new('event_type', { data: 1 }, { metadata: 2}) - expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: { metadata: 2}}], {'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) + event = Event.new('event_type', { data: 1}) + expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: nil}], {'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) client.append_to_stream(stream_name, event) - expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: { metadata: 2}}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) + expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: nil}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) client.append_to_stream(stream_name, event, 1) end @@ -25,6 +25,15 @@ module Api expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event1.event_id, eventType: event1.type, data: event1.data, metadata: nil},{eventId: event2.event_id, eventType: event2.type, data: event2.data, metadata: nil}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) client.append_to_stream(stream_name, events, 1) end + + + it "should handle one event with metadata" do + event = Event.new('event_type', { data: 1 }, { metadata: 2}) + expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: { metadata: 2}}], {'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) + client.append_to_stream(stream_name, event) + expect(client).to receive(:make_request).with(:post, '/streams/streamname', [{eventId: event.event_id, eventType: event.type, data: event.data, metadata: { metadata: 2}}], {'ES-ExpectedVersion' => '1', 'accept' => 'application/vnd.eventstore.events+json', 'content-type' => 'application/vnd.eventstore.events+json'}) + client.append_to_stream(stream_name, event, 1) + end end specify '#delete_stream' do From 79022ca142aa0c4ed9a247fed2f5f47158e48bb4 Mon Sep 17 00:00:00 2001 From: Morgan Hallgren Date: Mon, 8 May 2017 10:57:11 +0200 Subject: [PATCH 6/7] return {} instead of nil on data / metadata --- lib/http_event_store/helpers/parse_entries.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/http_event_store/helpers/parse_entries.rb b/lib/http_event_store/helpers/parse_entries.rb index b492693..abf84c7 100644 --- a/lib/http_event_store/helpers/parse_entries.rb +++ b/lib/http_event_store/helpers/parse_entries.rb @@ -19,11 +19,11 @@ def create_event(entry) event_id = entry['eventId'] type = entry['eventType'] source_event_uri = entry['id'] - data = !entry['data'].nil? && !entry['data'].empty? ? JSON.parse(entry['data']) : nil + data = !entry['data'].nil? && !entry['data'].empty? ? JSON.parse(entry['data']) : {} stream_name = entry['streamId'] position = entry['positionEventNumber'] created_time = entry['updated'] ? Time.parse(entry['updated']) : nil - metadata = !entry['metadata'].nil? && !entry['metadata'].empty? ? JSON.parse(entry['metadata']) : nil + metadata = !entry['metadata'].nil? && !entry['metadata'].empty? ? JSON.parse(entry['metadata']) : {} Event.new(type, data, metadata, source_event_uri, event_id, id, position, stream_name, created_time) end From ae0273459d4be6319b8b155ae5110ad0b3531b1a Mon Sep 17 00:00:00 2001 From: Morgan Hallgren Date: Mon, 8 May 2017 10:59:18 +0200 Subject: [PATCH 7/7] reset to data instead of eventType on nil check and let PR #21 fix this --- lib/http_event_store/helpers/parse_entries.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/http_event_store/helpers/parse_entries.rb b/lib/http_event_store/helpers/parse_entries.rb index abf84c7..fb035d4 100644 --- a/lib/http_event_store/helpers/parse_entries.rb +++ b/lib/http_event_store/helpers/parse_entries.rb @@ -13,7 +13,7 @@ def call(entries) private def create_event(entry) - return nil unless entry['eventType'] + return nil unless entry['data'] id = entry['eventNumber'] event_id = entry['eventId']