ruby_event_store 2.1.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ruby_event_store/batch_enumerator.rb +3 -3
  3. data/lib/ruby_event_store/broker.rb +5 -4
  4. data/lib/ruby_event_store/client.rb +81 -48
  5. data/lib/ruby_event_store/composed_dispatcher.rb +1 -3
  6. data/lib/ruby_event_store/correlated_commands.rb +4 -15
  7. data/lib/ruby_event_store/errors.rb +11 -10
  8. data/lib/ruby_event_store/event.rb +9 -14
  9. data/lib/ruby_event_store/expected_version.rb +3 -7
  10. data/lib/ruby_event_store/in_memory_repository.rb +100 -37
  11. data/lib/ruby_event_store/instrumented_dispatcher.rb +11 -2
  12. data/lib/ruby_event_store/instrumented_repository.rb +13 -8
  13. data/lib/ruby_event_store/link_by_metadata.rb +4 -21
  14. data/lib/ruby_event_store/mappers/default.rb +6 -4
  15. data/lib/ruby_event_store/mappers/encryption_key.rb +7 -16
  16. data/lib/ruby_event_store/mappers/encryption_mapper.rb +6 -6
  17. data/lib/ruby_event_store/mappers/forgotten_data.rb +1 -1
  18. data/lib/ruby_event_store/mappers/in_memory_encryption_key_repository.rb +1 -1
  19. data/lib/ruby_event_store/mappers/null_mapper.rb +0 -1
  20. data/lib/ruby_event_store/mappers/pipeline.rb +3 -10
  21. data/lib/ruby_event_store/mappers/pipeline_mapper.rb +1 -0
  22. data/lib/ruby_event_store/mappers/transformation/domain_event.rb +22 -12
  23. data/lib/ruby_event_store/mappers/transformation/encryption.rb +21 -25
  24. data/lib/ruby_event_store/mappers/transformation/event_class_remapper.rb +6 -5
  25. data/lib/ruby_event_store/mappers/transformation/stringify_metadata_keys.rb +6 -5
  26. data/lib/ruby_event_store/mappers/transformation/symbolize_metadata_keys.rb +6 -5
  27. data/lib/ruby_event_store/mappers/transformation/upcast.rb +2 -6
  28. data/lib/ruby_event_store/metadata.rb +46 -17
  29. data/lib/ruby_event_store/projection.rb +12 -20
  30. data/lib/ruby_event_store/record.rb +14 -26
  31. data/lib/ruby_event_store/serialized_record.rb +14 -26
  32. data/lib/ruby_event_store/serializers/yaml.rb +17 -0
  33. data/lib/ruby_event_store/spec/broker_lint.rb +38 -28
  34. data/lib/ruby_event_store/spec/event_lint.rb +10 -10
  35. data/lib/ruby_event_store/spec/event_repository_lint.rb +746 -730
  36. data/lib/ruby_event_store/spec/mapper_lint.rb +2 -2
  37. data/lib/ruby_event_store/spec/subscriptions_lint.rb +58 -68
  38. data/lib/ruby_event_store/specification.rb +20 -16
  39. data/lib/ruby_event_store/specification_reader.rb +2 -3
  40. data/lib/ruby_event_store/specification_result.rb +52 -46
  41. data/lib/ruby_event_store/stream.rb +3 -7
  42. data/lib/ruby_event_store/subscriptions.rb +17 -17
  43. data/lib/ruby_event_store/transform_keys.rb +1 -1
  44. data/lib/ruby_event_store/version.rb +1 -1
  45. data/lib/ruby_event_store.rb +44 -43
  46. metadata +6 -4
@@ -13,14 +13,15 @@ module RubyEventStore
13
13
  end
14
14
 
15
15
  private
16
+
16
17
  def stringify(record)
17
18
  Record.new(
18
- event_id: record.event_id,
19
+ event_id: record.event_id,
19
20
  event_type: record.event_type,
20
- data: record.data,
21
- metadata: TransformKeys.stringify(record.metadata),
22
- timestamp: record.timestamp,
23
- valid_at: record.valid_at,
21
+ data: record.data,
22
+ metadata: TransformKeys.stringify(record.metadata),
23
+ timestamp: record.timestamp,
24
+ valid_at: record.valid_at
24
25
  )
25
26
  end
26
27
  end
@@ -13,14 +13,15 @@ module RubyEventStore
13
13
  end
14
14
 
15
15
  private
16
+
16
17
  def symbolize(record)
17
18
  Record.new(
18
- event_id: record.event_id,
19
+ event_id: record.event_id,
19
20
  event_type: record.event_type,
20
- data: record.data,
21
- metadata: TransformKeys.symbolize(record.metadata),
22
- timestamp: record.timestamp,
23
- valid_at: record.valid_at,
21
+ data: record.data,
22
+ metadata: TransformKeys.symbolize(record.metadata),
23
+ timestamp: record.timestamp,
24
+ valid_at: record.valid_at
24
25
  )
25
26
  end
26
27
  end
@@ -10,13 +10,9 @@ module RubyEventStore
10
10
  end
11
11
 
12
12
  def call(record)
13
- identity = lambda { |r| r }
13
+ identity = lambda { |r| r }
14
14
  new_record = @upcast_map.fetch(record.event_type, identity)[record]
15
- if new_record.equal?(record)
16
- record
17
- else
18
- call(new_record)
19
- end
15
+ new_record.equal?(record) ? record : call(new_record)
20
16
  end
21
17
  end
22
18
 
@@ -1,19 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'date'
4
- require 'time'
5
- require 'forwardable'
3
+ require "date"
4
+ require "time"
5
+ require "forwardable"
6
6
 
7
7
  module RubyEventStore
8
8
  class Metadata
9
9
  include Enumerable
10
- extend Forwardable
10
+ extend Forwardable
11
11
 
12
12
  def initialize(h = self)
13
13
  @h = {}
14
- h.each do |k, v|
15
- self[k] = (v)
16
- end
14
+ h.each { |k, v| self[k] = (v) }
17
15
  end
18
16
 
19
17
  def [](key)
@@ -22,23 +20,54 @@ module RubyEventStore
22
20
  end
23
21
 
24
22
  def []=(key, val)
25
- raise ArgumentError unless allowed_types.any?{|klass| klass === val }
23
+ raise ArgumentError unless allowed_types.any? { |klass| klass === val }
26
24
  raise ArgumentError unless Symbol === key
27
- @h[key]=val
25
+ @h[key] = val
28
26
  end
29
27
 
30
28
  def each(&block)
31
29
  @h.each(&block)
32
30
  end
33
31
 
34
- SAFE_HASH_METHODS = [:<, :<=, :>, :>=, :assoc, :clear, :compact, :compact!,
35
- :delete, :delete_if, :dig, :each_key, :each_pair,
36
- :each_value, :empty?, :fetch, :fetch_values,
37
- :flatten, :has_key?, :has_value?,
38
- :keep_if, :key, :key?, :keys, :length,
39
- :rassoc, :reject!, :select!, :shift, :size, :slice,
40
- :to_proc, :transform_keys, :transform_values,
41
- :value?, :values, :values_at]
32
+ SAFE_HASH_METHODS = %i[
33
+ <
34
+ <=
35
+ >
36
+ >=
37
+ assoc
38
+ clear
39
+ compact
40
+ compact!
41
+ delete
42
+ delete_if
43
+ dig
44
+ each_key
45
+ each_pair
46
+ each_value
47
+ empty?
48
+ fetch
49
+ fetch_values
50
+ flatten
51
+ has_key?
52
+ has_value?
53
+ keep_if
54
+ key
55
+ key?
56
+ keys
57
+ length
58
+ rassoc
59
+ reject!
60
+ select!
61
+ shift
62
+ size
63
+ slice
64
+ to_proc
65
+ transform_keys
66
+ transform_values
67
+ value?
68
+ values
69
+ values_at
70
+ ]
42
71
 
43
72
  delegate SAFE_HASH_METHODS => :@h
44
73
 
@@ -15,9 +15,9 @@ module RubyEventStore
15
15
  end
16
16
 
17
17
  def initialize(streams: [])
18
- @streams = streams
18
+ @streams = streams
19
19
  @handlers = {}
20
- @init = -> { {} }
20
+ @init = -> { {} }
21
21
  end
22
22
 
23
23
  attr_reader :streams, :handlers
@@ -28,9 +28,7 @@ module RubyEventStore
28
28
  end
29
29
 
30
30
  def when(events, handler)
31
- Array(events).each do |event|
32
- handlers[event.to_s] = handler
33
- end
31
+ Array(events).each { |event| handlers[event.to_s] = handler }
34
32
 
35
33
  self
36
34
  end
@@ -53,33 +51,27 @@ module RubyEventStore
53
51
 
54
52
  def run(event_store, start: nil, count: PAGE_SIZE)
55
53
  return initial_state if handled_events.empty?
56
- if streams.any?
57
- reduce_from_streams(event_store, start, count)
58
- else
59
- reduce_from_all_streams(event_store, start, count)
60
- end
54
+ streams.any? ? reduce_from_streams(event_store, start, count) : reduce_from_all_streams(event_store, start, count)
61
55
  end
62
56
 
63
57
  private
64
58
 
65
59
  def valid_starting_point?(start)
66
60
  return true unless start
67
- if streams.any?
68
- (start.instance_of?(Array) && start.size === streams.size)
69
- else
70
- start.instance_of?(String)
71
- end
61
+ streams.any? ? (start.instance_of?(Array) && start.size === streams.size) : start.instance_of?(String)
72
62
  end
73
63
 
74
64
  def reduce_from_streams(event_store, start, count)
75
- raise ArgumentError.new('Start must be an array with event ids') unless valid_starting_point?(start)
76
- streams.zip(start_events(start)).reduce(initial_state) do |state, (stream_name, start_event_id)|
77
- read_scope(event_store, stream_name, count, start_event_id).reduce(state, &method(:transition))
78
- end
65
+ raise ArgumentError.new("Start must be an array with event ids") unless valid_starting_point?(start)
66
+ streams
67
+ .zip(start_events(start))
68
+ .reduce(initial_state) do |state, (stream_name, start_event_id)|
69
+ read_scope(event_store, stream_name, count, start_event_id).reduce(state, &method(:transition))
70
+ end
79
71
  end
80
72
 
81
73
  def reduce_from_all_streams(event_store, start, count)
82
- raise ArgumentError.new('Start must be valid event id') unless valid_starting_point?(start)
74
+ raise ArgumentError.new("Start must be valid event id") unless valid_starting_point?(start)
83
75
  read_scope(event_store, nil, count, start).reduce(initial_state, &method(:transition))
84
76
  end
85
77
 
@@ -5,12 +5,12 @@ module RubyEventStore
5
5
  StringsRequired = Class.new(StandardError)
6
6
  def initialize(event_id:, data:, metadata:, event_type:, timestamp:, valid_at:)
7
7
  raise StringsRequired unless [event_id, event_type].all? { |v| v.instance_of?(String) }
8
- @event_id = event_id
9
- @data = data
10
- @metadata = metadata
8
+ @event_id = event_id
9
+ @data = data
10
+ @metadata = metadata
11
11
  @event_type = event_type
12
- @timestamp = timestamp
13
- @valid_at = valid_at
12
+ @timestamp = timestamp
13
+ @valid_at = valid_at
14
14
  @serialized_records = {}
15
15
  freeze
16
16
  end
@@ -19,24 +19,12 @@ module RubyEventStore
19
19
 
20
20
  BIG_VALUE = 0b110011100100000010010010110011101011110101010101001100111110011
21
21
  def hash
22
- [
23
- self.class,
24
- event_id,
25
- data,
26
- metadata,
27
- event_type,
28
- timestamp,
29
- valid_at,
30
- ].hash ^ BIG_VALUE
22
+ [self.class, event_id, data, metadata, event_type, timestamp, valid_at].hash ^ BIG_VALUE
31
23
  end
32
24
 
33
25
  def ==(other)
34
- other.instance_of?(self.class) &&
35
- other.event_id.eql?(event_id) &&
36
- other.data.eql?(data) &&
37
- other.metadata.eql?(metadata) &&
38
- other.event_type.eql?(event_type) &&
39
- other.timestamp.eql?(timestamp) &&
26
+ other.instance_of?(self.class) && other.event_id.eql?(event_id) && other.data.eql?(data) &&
27
+ other.metadata.eql?(metadata) && other.event_type.eql?(event_type) && other.timestamp.eql?(timestamp) &&
40
28
  other.valid_at.eql?(valid_at)
41
29
  end
42
30
 
@@ -47,19 +35,19 @@ module RubyEventStore
47
35
  metadata: metadata,
48
36
  event_type: event_type,
49
37
  timestamp: timestamp,
50
- valid_at: valid_at,
38
+ valid_at: valid_at
51
39
  }
52
40
  end
53
41
 
54
42
  def serialize(serializer)
55
43
  @serialized_records[serializer] ||=
56
44
  SerializedRecord.new(
57
- event_id: event_id,
45
+ event_id: event_id,
58
46
  event_type: event_type,
59
- data: serializer.dump(data),
60
- metadata: serializer.dump(metadata),
61
- timestamp: timestamp.iso8601(TIMESTAMP_PRECISION),
62
- valid_at: valid_at.iso8601(TIMESTAMP_PRECISION),
47
+ data: serializer.dump(data),
48
+ metadata: serializer.dump(metadata),
49
+ timestamp: timestamp.iso8601(TIMESTAMP_PRECISION),
50
+ valid_at: valid_at.iso8601(TIMESTAMP_PRECISION)
63
51
  )
64
52
  end
65
53
 
@@ -5,12 +5,12 @@ module RubyEventStore
5
5
  StringsRequired = Class.new(StandardError)
6
6
  def initialize(event_id:, data:, metadata:, event_type:, timestamp:, valid_at:)
7
7
  raise StringsRequired unless [event_id, event_type].all? { |v| v.instance_of?(String) }
8
- @event_id = event_id
9
- @data = data
10
- @metadata = metadata
8
+ @event_id = event_id
9
+ @data = data
10
+ @metadata = metadata
11
11
  @event_type = event_type
12
- @timestamp = timestamp
13
- @valid_at = valid_at
12
+ @timestamp = timestamp
13
+ @valid_at = valid_at
14
14
  freeze
15
15
  end
16
16
 
@@ -18,24 +18,12 @@ module RubyEventStore
18
18
 
19
19
  BIG_VALUE = 0b110011100100000010010010110011101011110101010101001100111110111
20
20
  def hash
21
- [
22
- self.class,
23
- event_id,
24
- data,
25
- metadata,
26
- event_type,
27
- timestamp,
28
- valid_at,
29
- ].hash ^ BIG_VALUE
21
+ [self.class, event_id, data, metadata, event_type, timestamp, valid_at].hash ^ BIG_VALUE
30
22
  end
31
23
 
32
24
  def ==(other)
33
- other.instance_of?(self.class) &&
34
- other.event_id.eql?(event_id) &&
35
- other.data.eql?(data) &&
36
- other.metadata.eql?(metadata) &&
37
- other.event_type.eql?(event_type) &&
38
- other.timestamp.eql?(timestamp) &&
25
+ other.instance_of?(self.class) && other.event_id.eql?(event_id) && other.data.eql?(data) &&
26
+ other.metadata.eql?(metadata) && other.event_type.eql?(event_type) && other.timestamp.eql?(timestamp) &&
39
27
  other.valid_at.eql?(valid_at)
40
28
  end
41
29
 
@@ -46,18 +34,18 @@ module RubyEventStore
46
34
  metadata: metadata,
47
35
  event_type: event_type,
48
36
  timestamp: timestamp,
49
- valid_at: valid_at,
37
+ valid_at: valid_at
50
38
  }
51
39
  end
52
40
 
53
41
  def deserialize(serializer)
54
42
  Record.new(
55
- event_id: event_id,
43
+ event_id: event_id,
56
44
  event_type: event_type,
57
- data: serializer.load(data),
58
- metadata: serializer.load(metadata),
59
- timestamp: Time.iso8601(timestamp),
60
- valid_at: Time.iso8601(valid_at),
45
+ data: serializer.load(data),
46
+ metadata: serializer.load(metadata),
47
+ timestamp: Time.iso8601(timestamp),
48
+ valid_at: Time.iso8601(valid_at)
61
49
  )
62
50
  end
63
51
 
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "yaml"
4
+
5
+ module RubyEventStore
6
+ module Serializers
7
+ class YAML
8
+ def self.dump(value)
9
+ ::YAML.dump(value)
10
+ end
11
+
12
+ def self.load(serialized)
13
+ ::YAML.respond_to?(:unsafe_load) ? ::YAML.unsafe_load(serialized) : ::YAML.load(serialized)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,63 +1,73 @@
1
1
  RSpec.shared_examples :broker do |broker_klass|
2
- let(:event) { instance_double(::RubyEventStore::Event, event_type: 'EventType') }
3
- let(:record) { instance_double(::RubyEventStore::Record) }
2
+ let(:event) { instance_double(::RubyEventStore::Event, event_type: "EventType") }
3
+ let(:record) { instance_double(::RubyEventStore::Record) }
4
4
  let(:handler) { HandlerClass.new }
5
5
  let(:subscriptions) { ::RubyEventStore::Subscriptions.new }
6
6
  let(:dispatcher) { ::RubyEventStore::Dispatcher.new }
7
7
  let(:broker) { broker_klass.new(subscriptions: subscriptions, dispatcher: dispatcher) }
8
8
 
9
9
  specify "no dispatch when no subscriptions" do
10
- expect(subscriptions).to receive(:all_for).with('EventType').and_return([])
10
+ expect(subscriptions).to receive(:all_for).with("EventType").and_return([])
11
11
  expect(dispatcher).not_to receive(:call)
12
12
  broker.call(event, record)
13
13
  end
14
14
 
15
15
  specify "calls subscription" do
16
- expect(subscriptions).to receive(:all_for).with('EventType').and_return([handler])
16
+ expect(subscriptions).to receive(:all_for).with("EventType").and_return([handler])
17
17
  expect(dispatcher).to receive(:call).with(handler, event, record)
18
18
  broker.call(event, record)
19
19
  end
20
20
 
21
21
  specify "calls subscribed class" do
22
- expect(subscriptions).to receive(:all_for).with('EventType').and_return([HandlerClass])
22
+ expect(subscriptions).to receive(:all_for).with("EventType").and_return([HandlerClass])
23
23
  expect(dispatcher).to receive(:call).with(HandlerClass, event, record)
24
24
  broker.call(event, record)
25
25
  end
26
26
 
27
27
  specify "calls all subscriptions" do
28
- expect(subscriptions).to receive(:all_for).with('EventType').and_return([handler, HandlerClass])
28
+ expect(subscriptions).to receive(:all_for).with("EventType").and_return([handler, HandlerClass])
29
29
  expect(dispatcher).to receive(:call).with(handler, event, record)
30
30
  expect(dispatcher).to receive(:call).with(HandlerClass, event, record)
31
31
  broker.call(event, record)
32
32
  end
33
33
 
34
- specify 'raise error when no subscriber' do
35
- expect { broker.add_subscription(nil, [])}.to raise_error(RubyEventStore::SubscriberNotExist, "subscriber must be first argument or block")
36
- expect { broker.add_global_subscription(nil)}.to raise_error(RubyEventStore::SubscriberNotExist), "subscriber must be first argument or block"
37
- expect { broker.add_thread_subscription(nil, []).call}.to raise_error(RubyEventStore::SubscriberNotExist), "subscriber must be first argument or block"
38
- expect { broker.add_thread_global_subscription(nil).call}.to raise_error(RubyEventStore::SubscriberNotExist), "subscriber must be first argument or block"
34
+ specify "raise error when no subscriber" do
35
+ expect { broker.add_subscription(nil, []) }.to raise_error(
36
+ RubyEventStore::SubscriberNotExist,
37
+ "subscriber must be first argument or block"
38
+ )
39
+ expect { broker.add_global_subscription(nil) }.to raise_error(RubyEventStore::SubscriberNotExist),
40
+ "subscriber must be first argument or block"
41
+ expect { broker.add_thread_subscription(nil, []).call }.to raise_error(RubyEventStore::SubscriberNotExist),
42
+ "subscriber must be first argument or block"
43
+ expect { broker.add_thread_global_subscription(nil).call }.to raise_error(RubyEventStore::SubscriberNotExist),
44
+ "subscriber must be first argument or block"
39
45
  end
40
46
 
41
- specify 'raise error when wrong subscriber' do
47
+ specify "raise error when wrong subscriber" do
42
48
  allow(dispatcher).to receive(:verify).and_return(false)
43
- expect do
44
- broker.add_subscription(HandlerClass, [])
45
- end.to raise_error(RubyEventStore::InvalidHandler, /Handler HandlerClass is invalid for dispatcher .*Dispatcher/)
46
- expect do
47
- broker.add_global_subscription(HandlerClass)
48
- end.to raise_error(RubyEventStore::InvalidHandler, /is invalid for dispatcher/)
49
- expect do
50
- broker.add_thread_subscription(HandlerClass, [])
51
- end.to raise_error(RubyEventStore::InvalidHandler, /is invalid for dispatcher/)
52
- expect do
53
- broker.add_thread_global_subscription(HandlerClass)
54
- end.to raise_error(RubyEventStore::InvalidHandler, /is invalid for dispatcher/)
49
+ expect { broker.add_subscription(HandlerClass, []) }.to raise_error(
50
+ RubyEventStore::InvalidHandler,
51
+ /Handler HandlerClass is invalid for dispatcher .*Dispatcher/
52
+ )
53
+ expect { broker.add_global_subscription(HandlerClass) }.to raise_error(
54
+ RubyEventStore::InvalidHandler,
55
+ /is invalid for dispatcher/
56
+ )
57
+ expect { broker.add_thread_subscription(HandlerClass, []) }.to raise_error(
58
+ RubyEventStore::InvalidHandler,
59
+ /is invalid for dispatcher/
60
+ )
61
+ expect { broker.add_thread_global_subscription(HandlerClass) }.to raise_error(
62
+ RubyEventStore::InvalidHandler,
63
+ /is invalid for dispatcher/
64
+ )
55
65
  end
56
66
 
57
67
  specify "verify and add - local subscriptions" do
58
68
  expect(dispatcher).to receive(:verify).with(handler).and_return(true)
59
- expect(subscriptions).to receive(:add_subscription).with(handler, ['EventType'])
60
- broker.add_subscription(handler, ['EventType'])
69
+ expect(subscriptions).to receive(:add_subscription).with(handler, ["EventType"])
70
+ broker.add_subscription(handler, ["EventType"])
61
71
  end
62
72
 
63
73
  specify "verify and add - global subscriptions" do
@@ -68,8 +78,8 @@ RSpec.shared_examples :broker do |broker_klass|
68
78
 
69
79
  specify "verify and add - thread local subscriptions" do
70
80
  expect(dispatcher).to receive(:verify).with(handler).and_return(true)
71
- expect(subscriptions).to receive(:add_thread_subscription).with(handler, ['EventType'])
72
- broker.add_thread_subscription(handler, ['EventType'])
81
+ expect(subscriptions).to receive(:add_thread_subscription).with(handler, ["EventType"])
82
+ broker.add_thread_subscription(handler, ["EventType"])
73
83
  end
74
84
 
75
85
  specify "verify and add - thread global subscriptions" do
@@ -1,36 +1,36 @@
1
1
  RSpec.shared_examples :event do |event_class, data, metadata|
2
- it 'allows initialization' do
2
+ it "allows initialization" do
3
3
  expect {
4
4
  event_class.new(event_id: Object.new, data: data || Object.new, metadata: metadata || {})
5
5
  }.not_to raise_error
6
6
  end
7
7
 
8
- it 'provides event_id as string' do
8
+ it "provides event_id as string" do
9
9
  event = event_class.new
10
10
  expect(event.event_id).to be_an_instance_of(String)
11
- expect(event.event_id).not_to eq ''
11
+ expect(event.event_id).not_to eq ""
12
12
  expect(event.event_id).not_to eq nil
13
13
  end
14
14
 
15
- it 'provides message_id as string' do
15
+ it "provides message_id as string" do
16
16
  event = event_class.new
17
17
  expect(event.message_id).to be_an_instance_of(String)
18
18
  end
19
19
 
20
- it 'message_id is the same as event_id' do
20
+ it "message_id is the same as event_id" do
21
21
  event = event_class.new
22
22
  expect(event.event_id).to eq event.message_id
23
23
  end
24
24
 
25
- it 'exposes given event_id to string' do
26
- event = event_class.new(event_id: 1234567890)
27
- expect(event.event_id).to eq '1234567890'
25
+ it "exposes given event_id to string" do
26
+ event = event_class.new(event_id: 1_234_567_890)
27
+ expect(event.event_id).to eq "1234567890"
28
28
  end
29
29
 
30
- it 'provides event type as string' do
30
+ it "provides event type as string" do
31
31
  event = event_class.new
32
32
  expect(event.event_type).to be_an_instance_of(String)
33
- expect(event.event_type).not_to eq ''
33
+ expect(event.event_type).not_to eq ""
34
34
  expect(event.event_type).not_to eq nil
35
35
  end
36
36