rails_event_store-rspec 0.29.0 → 0.30.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 +4 -4
- data/lib/rails_event_store/rspec/be_event.rb +10 -2
- data/lib/rails_event_store/rspec/have_applied.rb +9 -4
- data/lib/rails_event_store/rspec/have_published.rb +20 -10
- data/lib/rails_event_store/rspec/matchers.rb +29 -3
- data/lib/rails_event_store/rspec/version.rb +1 -1
- data/rails_event_store-rspec.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 390b1d981a082e02362684ad51daa1236313bc6126ec5585c8e17a854f0c3131
|
|
4
|
+
data.tar.gz: 141370fd5d39f1eb5d317ea88e658d28dc75cc0c37f1e5a0c76e9b7ed69305ed
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d1480b7aa2c2076b915dad1a577f01be0f90ab04e12c534137a73921cf9bac45dbf5aec911dfad1bb85791a95b5894b6ce7f973608cf3bcb30dc75d125775500
|
|
7
|
+
data.tar.gz: 836935f2e46c5709a3eb2a4e84885d06622e9ef0739bfd6f21294c9b01ce2eb61d7264ef31e4c3921eba9aba578272110027c929541f6a233f5118526a13a6e0
|
|
@@ -115,9 +115,9 @@ module RailsEventStore
|
|
|
115
115
|
include ::RSpec::Matchers::Composable
|
|
116
116
|
|
|
117
117
|
def initialize(expected, differ:, formatter:)
|
|
118
|
+
@expected = expected
|
|
118
119
|
@differ = differ
|
|
119
120
|
@formatter = formatter
|
|
120
|
-
@expected = expected
|
|
121
121
|
end
|
|
122
122
|
|
|
123
123
|
def matches?(actual)
|
|
@@ -152,7 +152,15 @@ expected: not a kind of #{expected}
|
|
|
152
152
|
end
|
|
153
153
|
|
|
154
154
|
def description
|
|
155
|
-
"be event #{formatter.(expected)}"
|
|
155
|
+
"be an event #{formatter.(expected)}#{data_and_metadata_expectations_description}"
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def data_and_metadata_expectations_description
|
|
159
|
+
predicate = strict? ? "matching" : "including"
|
|
160
|
+
expectation_list = []
|
|
161
|
+
expectation_list << "with data #{predicate} #{formatter.(expected_data)}" if expected_data
|
|
162
|
+
expectation_list << "with metadata #{predicate} #{formatter.(expected_metadata)}" if expected_metadata
|
|
163
|
+
" (#{expectation_list.join(" and ")})" if expectation_list.any?
|
|
156
164
|
end
|
|
157
165
|
|
|
158
166
|
private
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
module RailsEventStore
|
|
2
2
|
module RSpec
|
|
3
3
|
class HaveApplied
|
|
4
|
-
def initialize(mandatory_expected, *optional_expected, differ:,
|
|
4
|
+
def initialize(mandatory_expected, *optional_expected, differ:, phraser:)
|
|
5
5
|
@expected = [mandatory_expected, *optional_expected]
|
|
6
6
|
@matcher = ::RSpec::Matchers::BuiltIn::Include.new(*expected)
|
|
7
7
|
@differ = differ
|
|
8
|
-
@
|
|
8
|
+
@phraser = phraser
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def matches?(aggregate_root)
|
|
@@ -27,6 +27,11 @@ module RailsEventStore
|
|
|
27
27
|
exactly(1)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
+
def strict
|
|
31
|
+
@matcher = ::RSpec::Matchers::BuiltIn::Match.new(expected)
|
|
32
|
+
self
|
|
33
|
+
end
|
|
34
|
+
|
|
30
35
|
def failure_message
|
|
31
36
|
"expected #{expected} to be applied, diff:" +
|
|
32
37
|
differ.diff_as_string(expected.to_s, events.to_s)
|
|
@@ -38,7 +43,7 @@ module RailsEventStore
|
|
|
38
43
|
end
|
|
39
44
|
|
|
40
45
|
def description
|
|
41
|
-
"have applied
|
|
46
|
+
"have applied events that have to (#{phraser.(expected)})"
|
|
42
47
|
end
|
|
43
48
|
|
|
44
49
|
private
|
|
@@ -52,7 +57,7 @@ module RailsEventStore
|
|
|
52
57
|
end
|
|
53
58
|
end
|
|
54
59
|
|
|
55
|
-
attr_reader :
|
|
60
|
+
attr_reader :differ, :phraser, :expected, :events, :count, :matcher
|
|
56
61
|
end
|
|
57
62
|
end
|
|
58
63
|
end
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
module RailsEventStore
|
|
2
2
|
module RSpec
|
|
3
3
|
class HavePublished
|
|
4
|
-
def initialize(mandatory_expected, *optional_expected, differ:,
|
|
4
|
+
def initialize(mandatory_expected, *optional_expected, differ:, phraser:)
|
|
5
5
|
@expected = [mandatory_expected, *optional_expected]
|
|
6
6
|
@matcher = ::RSpec::Matchers::BuiltIn::Include.new(*expected)
|
|
7
7
|
@differ = differ
|
|
8
|
-
@
|
|
8
|
+
@phraser = phraser
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def matches?(event_store)
|
|
12
|
-
@events =
|
|
13
|
-
|
|
12
|
+
@events = event_store.read
|
|
13
|
+
@events = events.stream(stream_name) if stream_name
|
|
14
|
+
@events = events.from(start) if start
|
|
15
|
+
@events = events.each
|
|
14
16
|
@matcher.matches?(events) && matches_count?
|
|
15
17
|
end
|
|
16
18
|
|
|
@@ -29,24 +31,32 @@ module RailsEventStore
|
|
|
29
31
|
end
|
|
30
32
|
alias :time :times
|
|
31
33
|
|
|
34
|
+
def from(event_id)
|
|
35
|
+
@start = event_id
|
|
36
|
+
self
|
|
37
|
+
end
|
|
38
|
+
|
|
32
39
|
def once
|
|
33
40
|
exactly(1)
|
|
34
41
|
end
|
|
35
42
|
|
|
36
43
|
def failure_message
|
|
37
44
|
"expected #{expected} to be published, diff:" +
|
|
38
|
-
differ.diff_as_string(expected.to_s, events.to_s)
|
|
45
|
+
differ.diff_as_string(expected.to_s, events.to_a.to_s)
|
|
39
46
|
end
|
|
40
47
|
|
|
41
48
|
def failure_message_when_negated
|
|
42
49
|
"expected #{expected} not to be published, diff:" +
|
|
43
|
-
differ.diff_as_string(expected.to_s, events.to_s)
|
|
50
|
+
differ.diff_as_string(expected.to_s, events.to_a.to_s)
|
|
44
51
|
end
|
|
45
52
|
|
|
46
53
|
def description
|
|
47
|
-
"have published
|
|
48
|
-
|
|
49
|
-
|
|
54
|
+
"have published events that have to (#{phraser.(expected)})"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def strict
|
|
58
|
+
@matcher = ::RSpec::Matchers::BuiltIn::Match.new(expected)
|
|
59
|
+
self
|
|
50
60
|
end
|
|
51
61
|
|
|
52
62
|
private
|
|
@@ -60,7 +70,7 @@ module RailsEventStore
|
|
|
60
70
|
end
|
|
61
71
|
end
|
|
62
72
|
|
|
63
|
-
attr_reader :
|
|
73
|
+
attr_reader :differ, :phraser, :stream_name, :expected, :count, :events, :start
|
|
64
74
|
end
|
|
65
75
|
end
|
|
66
76
|
end
|
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
module RailsEventStore
|
|
2
2
|
module RSpec
|
|
3
3
|
module Matchers
|
|
4
|
+
class ListPhraser
|
|
5
|
+
def self.call(object)
|
|
6
|
+
items = Array(object).compact.map { |o| format(o) }
|
|
7
|
+
return "" if items.empty?
|
|
8
|
+
if items.one?
|
|
9
|
+
items.join
|
|
10
|
+
else
|
|
11
|
+
"#{items[0...-1].join(", ")}#{" and "}#{items.fetch(-1)}"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def self.format(object)
|
|
18
|
+
if object.respond_to?(:description)
|
|
19
|
+
::RSpec::Support::ObjectFormatter.format(object)
|
|
20
|
+
else
|
|
21
|
+
"be a #{object}"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
4
26
|
def be_an_event(expected)
|
|
5
27
|
BeEvent.new(expected, differ: differ, formatter: formatter)
|
|
6
28
|
end
|
|
@@ -9,22 +31,26 @@ module RailsEventStore
|
|
|
9
31
|
alias :event :be_an_event
|
|
10
32
|
|
|
11
33
|
def have_published(*expected)
|
|
12
|
-
HavePublished.new(*expected, differ: differ,
|
|
34
|
+
HavePublished.new(*expected, differ: differ, phraser: phraser)
|
|
13
35
|
end
|
|
14
36
|
|
|
15
37
|
def have_applied(*expected)
|
|
16
|
-
HaveApplied.new(*expected, differ: differ,
|
|
38
|
+
HaveApplied.new(*expected, differ: differ, phraser: phraser)
|
|
17
39
|
end
|
|
18
40
|
|
|
19
41
|
private
|
|
20
42
|
|
|
21
43
|
def formatter
|
|
22
|
-
::RSpec::Support::ObjectFormatter.
|
|
44
|
+
::RSpec::Support::ObjectFormatter.public_method(:format)
|
|
23
45
|
end
|
|
24
46
|
|
|
25
47
|
def differ
|
|
26
48
|
::RSpec::Support::Differ.new(color: ::RSpec::Matchers.configuration.color?)
|
|
27
49
|
end
|
|
50
|
+
|
|
51
|
+
def phraser
|
|
52
|
+
ListPhraser
|
|
53
|
+
end
|
|
28
54
|
end
|
|
29
55
|
end
|
|
30
56
|
end
|
|
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
|
31
31
|
spec.add_development_dependency 'rspec', '~> 3.6'
|
|
32
32
|
spec.add_development_dependency 'mutant-rspec', '~> 0.8.14'
|
|
33
33
|
spec.add_development_dependency 'rails', '~> 5.1'
|
|
34
|
-
spec.add_development_dependency 'rails_event_store', '= 0.
|
|
34
|
+
spec.add_development_dependency 'rails_event_store', '= 0.30.0'
|
|
35
35
|
|
|
36
36
|
spec.add_runtime_dependency 'rspec', '~> 3.0'
|
|
37
37
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rails_event_store-rspec
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.30.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Arkency
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-05-
|
|
11
|
+
date: 2018-05-31 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -86,14 +86,14 @@ dependencies:
|
|
|
86
86
|
requirements:
|
|
87
87
|
- - '='
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: 0.
|
|
89
|
+
version: 0.30.0
|
|
90
90
|
type: :development
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
94
|
- - '='
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: 0.
|
|
96
|
+
version: 0.30.0
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: rspec
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|