sandthorn 0.6.0 → 0.7.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f39fd41916e13c8d9af482497da9774295644984
4
- data.tar.gz: b3ae469f87f318a99d27f34049513cf35cae754d
3
+ metadata.gz: 692bd55290b3092568fa5d7ed3d18be9f4d8e581
4
+ data.tar.gz: 41f6b41d080e0b6b2304412a25a435a7c9979021
5
5
  SHA512:
6
- metadata.gz: 2c3d769b134a6421cfe4164190726c9ce1448f06962ee24aee7aec32f14fc1cf7c4c6e5c2a6160c62a0c316f482e8d72709463c2ac3f0298e7584ab02f604011
7
- data.tar.gz: d54a6d161c31dd38ff4bd03217035d35d2f445419d83c59caca649828b32543eaf9714ed8832b56f4262315fad95992936b778bdda52f602254103611067b6c2
6
+ metadata.gz: 764d97697a9b452ba6acdc82b13006c6c6b1118b481908c8a8e17c5b4acd3286009030e0ea5c74d584514cad2ee9f848d4ea8566cff5d9590c6c7c0f345682b0
7
+ data.tar.gz: c3a218cc83d50f65a319200293f7110ed2be7788af640a58ac94efbe439b9da824f3ce1049264c149589e54f556ba273e44d9e95a2a10bf81849267dce71693a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sandthorn (0.6.0)
4
+ sandthorn (0.7.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -22,7 +22,7 @@ GEM
22
22
  mime-types (2.4.3)
23
23
  multi_json (1.10.1)
24
24
  netrc (0.8.0)
25
- pg (0.17.1)
25
+ pg (0.18.1)
26
26
  pry (0.10.1)
27
27
  coderay (~> 1.1.0)
28
28
  method_source (~> 0.8.1)
@@ -46,10 +46,10 @@ GEM
46
46
  rspec-mocks (3.1.3)
47
47
  rspec-support (~> 3.1.0)
48
48
  rspec-support (3.1.2)
49
- sandthorn_driver_sequel (1.1.0)
49
+ sandthorn_driver_sequel (2.0.0)
50
50
  pg
51
- sequel
52
- sequel (4.15.0)
51
+ sequel (~> 4.17)
52
+ sequel (4.20.0)
53
53
  simplecov (0.9.1)
54
54
  docile (~> 1.1.0)
55
55
  multi_json (~> 1.0)
@@ -77,5 +77,5 @@ DEPENDENCIES
77
77
  rake
78
78
  rspec (~> 3.0)
79
79
  sandthorn!
80
- sandthorn_driver_sequel (~> 1.1)
80
+ sandthorn_driver_sequel (~> 2.0)
81
81
  sqlite3
data/lib/sandthorn.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "sandthorn/version"
2
2
  require "sandthorn/errors"
3
+ require "sandthorn/event"
3
4
  require "sandthorn/aggregate_root"
4
5
  require "sandthorn/event_stores"
5
6
  require 'yaml'
@@ -45,38 +46,42 @@ module Sandthorn
45
46
  SecureRandom.uuid
46
47
  end
47
48
 
48
- def get_aggregate_events aggregate_id, aggregate_type
49
- event_store_for(aggregate_type).get_aggregate_events aggregate_id, aggregate_type
49
+ def get_aggregate_events aggregate_type, aggregate_id
50
+ event_store_for(aggregate_type).get_aggregate_events aggregate_id
50
51
  end
51
52
 
52
- def save_events aggregate_events, originating_aggregate_version, aggregate_id, aggregate_type
53
- event_store_for(aggregate_type).save_events aggregate_events, originating_aggregate_version, aggregate_id, *aggregate_type
53
+ def save_events aggregate_events, aggregate_id, aggregate_type
54
+ event_store_for(aggregate_type).save_events aggregate_events, aggregate_id, *aggregate_type
54
55
  end
55
56
 
56
57
  def get_aggregate aggregate_id, aggregate_type
57
- event_store_for(aggregate_type).get_aggregate aggregate_id, aggregate_type
58
+ event_store_for(aggregate_type).get_aggregate_events_from_snapshot aggregate_id
58
59
  end
59
60
 
60
- def save_snapshot aggregate_snapshot, aggregate_id, aggregate_type
61
- event_store_for(aggregate_type).save_snapshot aggregate_snapshot, aggregate_id, aggregate_type
61
+ def save_snapshot(
62
+ aggregate_type: missing_key(:aggregate_type),
63
+ aggregate_snapshot: missing_key(:aggregate_snapshot),
64
+ aggregate_id: missing_key(:aggregate_id)
65
+ )
66
+ event_store_for(aggregate_type).save_snapshot(aggregate_snapshot, aggregate_id)
62
67
  end
63
68
 
64
69
  def get_aggregate_list_by_type aggregate_type
65
- event_store_for(aggregate_type).get_aggregate_list_by_typename aggregate_type
70
+ event_store_for(aggregate_type).get_aggregate_ids(aggregate_type: aggregate_type)
66
71
  end
67
72
 
68
73
  def get_events event_store: :default, aggregate_types: [], take: 0, after_sequence_number: 0
69
74
  event_store = find_event_store(event_store)
70
75
  events = event_store.get_events aggregate_types: aggregate_types, take: take, after_sequence_number: after_sequence_number
71
- events.each do |event|
76
+ events.map do |event|
72
77
  event[:event_args] = deserialize event[:event_data]
73
78
  event.delete(:event_data)
79
+ Event.new(event)
74
80
  end
75
- events
76
81
  end
77
82
 
78
83
  def obsolete_snapshots type_names: [], min_event_distance: 0
79
- obsolete = event_stores.flat_map { |event_store| event_store.obsolete_snapshots(class_names: type_names, max_event_distance: min_event_distance) }
84
+ obsolete = event_stores.flat_map { |event_store| event_store.obsolete_snapshots(aggregate_types: type_names, max_event_distance: min_event_distance) }
80
85
  obsolete.map do |single_obsolete|
81
86
  type = Kernel.const_get single_obsolete[:aggregate_type]
82
87
  aggregate = type.aggregate_find(single_obsolete[:aggregate_id]).tap do |agg|
@@ -97,6 +102,10 @@ module Sandthorn
97
102
  end
98
103
  end
99
104
 
105
+ def missing_key(key)
106
+ raise ArgumentError, "missing keyword: #{key}"
107
+ end
108
+
100
109
  class Configuration
101
110
  extend Forwardable
102
111
 
@@ -27,7 +27,6 @@ module Sandthorn
27
27
  unless aggregate_events.empty?
28
28
  Sandthorn.save_events(
29
29
  aggregate_events,
30
- aggregate_originating_version,
31
30
  aggregate_id,
32
31
  self.class
33
32
  )
@@ -27,7 +27,7 @@ module Sandthorn
27
27
  end
28
28
  @aggregate_snapshot[:event_data] = Sandthorn.serialize @aggregate_snapshot[:event_args]
29
29
  @aggregate_snapshot[:event_args] = nil
30
- Sandthorn.save_snapshot @aggregate_snapshot, @aggregate_id, self.class
30
+ Sandthorn.save_snapshot(aggregate_snapshot: @aggregate_snapshot, aggregate_id: @aggregate_id, aggregate_type: self.class)
31
31
  @aggregate_snapshot = nil
32
32
  end
33
33
  private
@@ -44,7 +44,7 @@ module Sandthorn
44
44
  .serialize aggregate_snapshot[:event_args]
45
45
 
46
46
  @aggregate_snapshot[:event_args] = nil
47
- Sandthorn.save_snapshot aggregate_snapshot, aggregate_id, self.class.name
47
+ Sandthorn.save_snapshot aggregate_snapshot, aggregate_id
48
48
  @aggregate_snapshot = nil
49
49
  end
50
50
  end
@@ -0,0 +1,60 @@
1
+ require 'delegate'
2
+
3
+ module Sandthorn
4
+ class Event < SimpleDelegator
5
+ ATTRS = %i(
6
+ aggregate_id
7
+ aggregate_type
8
+ aggregate_version
9
+ timestamp
10
+ event_name
11
+ event_args
12
+ method_args
13
+ trace
14
+ )
15
+
16
+ ATTRS.each do |attr|
17
+ define_method(attr) do
18
+ self[attr]
19
+ end
20
+ end
21
+
22
+ def new_values
23
+ @changed_attributes ||= build_new_values
24
+ end
25
+
26
+ def attribute_deltas
27
+ @attribute_deltas ||= build_deltas
28
+ end
29
+
30
+ private
31
+
32
+ def build_deltas
33
+ raw_deltas.map { |delta| AttributeDelta.new(delta) }
34
+ end
35
+
36
+ def build_new_values
37
+ attribute_deltas.each_with_object({}) do |delta, changed|
38
+ changed[delta.attribute_name.to_sym] = delta.new_value
39
+ end
40
+ end
41
+
42
+ def raw_deltas
43
+ fetch(:event_args, {}).fetch(:attribute_deltas, [])
44
+ end
45
+
46
+ class AttributeDelta < SimpleDelegator
47
+ ATTRS = %i(
48
+ attribute_name
49
+ old_value
50
+ new_value
51
+ )
52
+
53
+ ATTRS.each do |attr|
54
+ define_method(attr) do
55
+ self[attr]
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -46,7 +46,7 @@ module Sandthorn
46
46
  end
47
47
 
48
48
  def events_with_trace_info
49
- saved = Sandthorn.get_aggregate_events self.aggregate_id, self.class
49
+ saved = Sandthorn.get_aggregate_events(self.class, aggregate_id)
50
50
  unsaved = self.aggregate_events
51
51
  all = saved
52
52
  .concat(unsaved)
@@ -1,3 +1,3 @@
1
1
  module Sandthorn
2
- VERSION = "0.6.0"
2
+ VERSION = "0.7.0"
3
3
  end
data/sandthorn.gemspec CHANGED
@@ -6,8 +6,8 @@ require 'sandthorn/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "sandthorn"
8
8
  spec.version = Sandthorn::VERSION
9
- spec.authors = ["Lars Krantz", "Morgan Hallgren"]
10
- spec.email = ["lars.krantz@alaz.se", "morgan.hallgren@gmail.com"]
9
+ spec.authors = ["Lars Krantz", "Morgan Hallgren", "Jesper Josefsson"]
10
+ spec.email = ["lars.krantz@alaz.se", "morgan.hallgren@gmail.com", "jesper.josefsson@gmail.com"]
11
11
  spec.description = %q{Event sourcing gem}
12
12
  spec.summary = %q{Event sourcing gem}
13
13
  spec.homepage = ""
@@ -29,5 +29,5 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency "autotest-standalone"
30
30
  spec.add_development_dependency "sqlite3"
31
31
  spec.add_development_dependency "coveralls"
32
- spec.add_development_dependency "sandthorn_driver_sequel", "~> 1.1"
32
+ spec.add_development_dependency "sandthorn_driver_sequel", "~> 2.0"
33
33
  end
@@ -0,0 +1,99 @@
1
+ require 'spec_helper'
2
+
3
+ module Sandthorn
4
+ describe Event do
5
+ let(:event_data) do
6
+ JSON.parse(
7
+ '{"aggregate_type":"SandthornProduct",
8
+ "aggregate_version":1,
9
+ "aggregate_id":"62d88e96-c551-4157-a837-1674e3f2698d",
10
+ "sequence_number":114,
11
+ "event_name":"new",
12
+ "timestamp":"2014-08-16 20:02:05 UTC",
13
+ "event_args":{"method_name":"new",
14
+ "method_args":[{"name":"Hahah",
15
+ "price":"50",
16
+ "stock_status":"outofstock"}],
17
+ "attribute_deltas":[{"attribute_name":"name",
18
+ "old_value":null,
19
+ "new_value":"Hahah"},
20
+ {"attribute_name":"price",
21
+ "old_value":null,
22
+ "new_value":50},
23
+ {"attribute_name":"stock_status",
24
+ "old_value":null,
25
+ "new_value":"outofstock"},
26
+ {"attribute_name":"active",
27
+ "old_value":null,
28
+ "new_value":true},
29
+ {"attribute_name":"on_sale",
30
+ "old_value":null,
31
+ "new_value":false},
32
+ {"attribute_name":"aggregate_id",
33
+ "old_value":null,
34
+ "new_value":"62d88e96-c551-4157-a837-1674e3f2698d"}]}}', symbolize_names: true)
35
+ end
36
+
37
+ let(:subject) { Event.new(event_data) }
38
+ describe "primitive attributes" do
39
+ attrs = %i(
40
+ aggregate_id
41
+ aggregate_type
42
+ aggregate_version
43
+ timestamp
44
+ event_name
45
+ event_args
46
+ method_args
47
+ trace
48
+ )
49
+
50
+ attrs.each do |attr|
51
+ it "has an accessor for #{attr}" do
52
+ expect(subject.send(attr)).to eq(subject[attr])
53
+ end
54
+ end
55
+ end
56
+
57
+ describe "#new_values" do
58
+ context "when given the value of an attribute that has changed" do
59
+ it "returns the new value" do
60
+ expect(subject.new_values[:name]).to eq("Hahah")
61
+ end
62
+ end
63
+
64
+ context "when given a non-existing attribute name" do
65
+ it "returns nil" do
66
+ expect(subject.new_values[:foo]).to be_nil
67
+ end
68
+ end
69
+ end
70
+
71
+ describe "#attributes_deltas" do
72
+ it "returns something enumerable" do
73
+ expect(subject.attribute_deltas).to respond_to(:each)
74
+ end
75
+
76
+ describe "a delta" do
77
+ let(:wrapped_delta) { subject.attribute_deltas.first }
78
+ let(:raw_delta) { subject[:event_args][:attribute_deltas].first }
79
+ describe "#attribute_name" do
80
+ it "has the same value as the raw hash" do
81
+ expect(wrapped_delta.attribute_name).to eq(raw_delta[:attribute_name])
82
+ end
83
+ end
84
+
85
+ describe "#new_value" do
86
+ it "has the same value as the raw hash" do
87
+ expect(wrapped_delta.new_value).to eq(raw_delta[:new_value])
88
+ end
89
+ end
90
+
91
+ describe "#old_value" do
92
+ it "has the same value as the raw hash" do
93
+ expect(wrapped_delta.old_value).to eq(raw_delta[:old_value])
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
@@ -52,4 +52,12 @@ describe Sandthorn do
52
52
  end
53
53
  end
54
54
  end
55
+
56
+ describe "::save_snapshot" do
57
+ context "when a keyword is missing" do
58
+ it "raises an ArgumentError" do
59
+ expect { Sandthorn.save_snapshot }.to raise_error(ArgumentError)
60
+ end
61
+ end
62
+ end
55
63
  end
metadata CHANGED
@@ -1,184 +1,186 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sandthorn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lars Krantz
8
8
  - Morgan Hallgren
9
+ - Jesper Josefsson
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2015-03-04 00:00:00.000000000 Z
13
+ date: 2015-03-11 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: bundler
16
17
  requirement: !ruby/object:Gem::Requirement
17
18
  requirements:
18
- - - "~>"
19
+ - - ~>
19
20
  - !ruby/object:Gem::Version
20
21
  version: '1.3'
21
22
  type: :development
22
23
  prerelease: false
23
24
  version_requirements: !ruby/object:Gem::Requirement
24
25
  requirements:
25
- - - "~>"
26
+ - - ~>
26
27
  - !ruby/object:Gem::Version
27
28
  version: '1.3'
28
29
  - !ruby/object:Gem::Dependency
29
30
  name: rake
30
31
  requirement: !ruby/object:Gem::Requirement
31
32
  requirements:
32
- - - ">="
33
+ - - '>='
33
34
  - !ruby/object:Gem::Version
34
35
  version: '0'
35
36
  type: :development
36
37
  prerelease: false
37
38
  version_requirements: !ruby/object:Gem::Requirement
38
39
  requirements:
39
- - - ">="
40
+ - - '>='
40
41
  - !ruby/object:Gem::Version
41
42
  version: '0'
42
43
  - !ruby/object:Gem::Dependency
43
44
  name: rspec
44
45
  requirement: !ruby/object:Gem::Requirement
45
46
  requirements:
46
- - - "~>"
47
+ - - ~>
47
48
  - !ruby/object:Gem::Version
48
49
  version: '3.0'
49
50
  type: :development
50
51
  prerelease: false
51
52
  version_requirements: !ruby/object:Gem::Requirement
52
53
  requirements:
53
- - - "~>"
54
+ - - ~>
54
55
  - !ruby/object:Gem::Version
55
56
  version: '3.0'
56
57
  - !ruby/object:Gem::Dependency
57
58
  name: gem-release
58
59
  requirement: !ruby/object:Gem::Requirement
59
60
  requirements:
60
- - - ">="
61
+ - - '>='
61
62
  - !ruby/object:Gem::Version
62
63
  version: '0'
63
64
  type: :development
64
65
  prerelease: false
65
66
  version_requirements: !ruby/object:Gem::Requirement
66
67
  requirements:
67
- - - ">="
68
+ - - '>='
68
69
  - !ruby/object:Gem::Version
69
70
  version: '0'
70
71
  - !ruby/object:Gem::Dependency
71
72
  name: pry
72
73
  requirement: !ruby/object:Gem::Requirement
73
74
  requirements:
74
- - - ">="
75
+ - - '>='
75
76
  - !ruby/object:Gem::Version
76
77
  version: '0'
77
78
  type: :development
78
79
  prerelease: false
79
80
  version_requirements: !ruby/object:Gem::Requirement
80
81
  requirements:
81
- - - ">="
82
+ - - '>='
82
83
  - !ruby/object:Gem::Version
83
84
  version: '0'
84
85
  - !ruby/object:Gem::Dependency
85
86
  name: pry-doc
86
87
  requirement: !ruby/object:Gem::Requirement
87
88
  requirements:
88
- - - ">="
89
+ - - '>='
89
90
  - !ruby/object:Gem::Version
90
91
  version: '0'
91
92
  type: :development
92
93
  prerelease: false
93
94
  version_requirements: !ruby/object:Gem::Requirement
94
95
  requirements:
95
- - - ">="
96
+ - - '>='
96
97
  - !ruby/object:Gem::Version
97
98
  version: '0'
98
99
  - !ruby/object:Gem::Dependency
99
100
  name: awesome_print
100
101
  requirement: !ruby/object:Gem::Requirement
101
102
  requirements:
102
- - - ">="
103
+ - - '>='
103
104
  - !ruby/object:Gem::Version
104
105
  version: '0'
105
106
  type: :development
106
107
  prerelease: false
107
108
  version_requirements: !ruby/object:Gem::Requirement
108
109
  requirements:
109
- - - ">="
110
+ - - '>='
110
111
  - !ruby/object:Gem::Version
111
112
  version: '0'
112
113
  - !ruby/object:Gem::Dependency
113
114
  name: autotest-standalone
114
115
  requirement: !ruby/object:Gem::Requirement
115
116
  requirements:
116
- - - ">="
117
+ - - '>='
117
118
  - !ruby/object:Gem::Version
118
119
  version: '0'
119
120
  type: :development
120
121
  prerelease: false
121
122
  version_requirements: !ruby/object:Gem::Requirement
122
123
  requirements:
123
- - - ">="
124
+ - - '>='
124
125
  - !ruby/object:Gem::Version
125
126
  version: '0'
126
127
  - !ruby/object:Gem::Dependency
127
128
  name: sqlite3
128
129
  requirement: !ruby/object:Gem::Requirement
129
130
  requirements:
130
- - - ">="
131
+ - - '>='
131
132
  - !ruby/object:Gem::Version
132
133
  version: '0'
133
134
  type: :development
134
135
  prerelease: false
135
136
  version_requirements: !ruby/object:Gem::Requirement
136
137
  requirements:
137
- - - ">="
138
+ - - '>='
138
139
  - !ruby/object:Gem::Version
139
140
  version: '0'
140
141
  - !ruby/object:Gem::Dependency
141
142
  name: coveralls
142
143
  requirement: !ruby/object:Gem::Requirement
143
144
  requirements:
144
- - - ">="
145
+ - - '>='
145
146
  - !ruby/object:Gem::Version
146
147
  version: '0'
147
148
  type: :development
148
149
  prerelease: false
149
150
  version_requirements: !ruby/object:Gem::Requirement
150
151
  requirements:
151
- - - ">="
152
+ - - '>='
152
153
  - !ruby/object:Gem::Version
153
154
  version: '0'
154
155
  - !ruby/object:Gem::Dependency
155
156
  name: sandthorn_driver_sequel
156
157
  requirement: !ruby/object:Gem::Requirement
157
158
  requirements:
158
- - - "~>"
159
+ - - ~>
159
160
  - !ruby/object:Gem::Version
160
- version: '1.1'
161
+ version: '2.0'
161
162
  type: :development
162
163
  prerelease: false
163
164
  version_requirements: !ruby/object:Gem::Requirement
164
165
  requirements:
165
- - - "~>"
166
+ - - ~>
166
167
  - !ruby/object:Gem::Version
167
- version: '1.1'
168
+ version: '2.0'
168
169
  description: Event sourcing gem
169
170
  email:
170
171
  - lars.krantz@alaz.se
171
172
  - morgan.hallgren@gmail.com
173
+ - jesper.josefsson@gmail.com
172
174
  executables: []
173
175
  extensions: []
174
176
  extra_rdoc_files: []
175
177
  files:
176
- - ".autotest"
177
- - ".gitignore"
178
- - ".rspec"
179
- - ".ruby-gemset"
180
- - ".ruby-version"
181
- - ".travis.yml"
178
+ - .autotest
179
+ - .gitignore
180
+ - .rspec
181
+ - .ruby-gemset
182
+ - .ruby-version
183
+ - .travis.yml
182
184
  - Gemfile
183
185
  - Gemfile.lock
184
186
  - Gemfile.lock.old
@@ -192,6 +194,7 @@ files:
192
194
  - lib/sandthorn/aggregate_root_marshal.rb
193
195
  - lib/sandthorn/aggregate_root_snapshot.rb
194
196
  - lib/sandthorn/errors.rb
197
+ - lib/sandthorn/event.rb
195
198
  - lib/sandthorn/event_inspector.rb
196
199
  - lib/sandthorn/event_stores.rb
197
200
  - lib/sandthorn/version.rb
@@ -204,6 +207,7 @@ files:
204
207
  - spec/db/sequel_driver.sqlite3_old
205
208
  - spec/different_driver_spec.rb
206
209
  - spec/event_inspector_spec.rb
210
+ - spec/event_spec.rb
207
211
  - spec/event_stores_spec.rb
208
212
  - spec/get_events_spec.rb
209
213
  - spec/initialize_signature_change_spec.rb
@@ -221,17 +225,17 @@ require_paths:
221
225
  - lib
222
226
  required_ruby_version: !ruby/object:Gem::Requirement
223
227
  requirements:
224
- - - ">="
228
+ - - '>='
225
229
  - !ruby/object:Gem::Version
226
230
  version: '2.0'
227
231
  required_rubygems_version: !ruby/object:Gem::Requirement
228
232
  requirements:
229
- - - ">="
233
+ - - '>='
230
234
  - !ruby/object:Gem::Version
231
235
  version: '0'
232
236
  requirements: []
233
237
  rubyforge_project:
234
- rubygems_version: 2.4.3
238
+ rubygems_version: 2.2.2
235
239
  signing_key:
236
240
  specification_version: 4
237
241
  summary: Event sourcing gem
@@ -244,6 +248,7 @@ test_files:
244
248
  - spec/db/sequel_driver.sqlite3_old
245
249
  - spec/different_driver_spec.rb
246
250
  - spec/event_inspector_spec.rb
251
+ - spec/event_spec.rb
247
252
  - spec/event_stores_spec.rb
248
253
  - spec/get_events_spec.rb
249
254
  - spec/initialize_signature_change_spec.rb