rails_event_store-rspec 0.29.0 → 0.30.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70db937a2e115aceb3d4c01978447620202dc5a41b64b5c24672869e09844c77
4
- data.tar.gz: 6c6b02698b8c45e31317b18a35369f96667c3562097394846f79c0ea58b2a7dd
3
+ metadata.gz: 390b1d981a082e02362684ad51daa1236313bc6126ec5585c8e17a854f0c3131
4
+ data.tar.gz: 141370fd5d39f1eb5d317ea88e658d28dc75cc0c37f1e5a0c76e9b7ed69305ed
5
5
  SHA512:
6
- metadata.gz: 0b8244bd6ba6e6fb550f9ee846271dfeb92822d053e63f51b6c118677d38d26569e47987e6be5b027637ce38927794fb4ff7a1309269064e903f343f3927ef5b
7
- data.tar.gz: 75bcc8649432de809b2980fe6f2f4373a36881ae853ba7a6fb80d5fa53848fa0ffa9e80bdd5d9144913b6ccc9eeae83b913f6bca837cab67994fe6d25c6d1ef6
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:, formatter:)
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
- @formatter = formatter
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 [%s]" % expected.map { |e| formatter.(e) }.join(', ')
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 :formatter, :differ, :expected, :events, :count, :matcher
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:, formatter:)
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
- @formatter = formatter
8
+ @phraser = phraser
9
9
  end
10
10
 
11
11
  def matches?(event_store)
12
- @events = stream_name ? event_store.read_events_backward(stream_name)
13
- : event_store.read_all_streams_backward
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 [%s]" % expected
48
- .map { |e| formatter.(e) }
49
- .join(', ')
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 :formatter, :differ, :stream_name, :expected, :count, :events
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, formatter: formatter)
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, formatter: formatter)
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.method(:format)
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
@@ -1,5 +1,5 @@
1
1
  module RailsEventStore
2
2
  module RSpec
3
- VERSION = "0.29.0"
3
+ VERSION = "0.30.0"
4
4
  end
5
5
  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.29.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.29.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-06 00:00:00.000000000 Z
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.29.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.29.0
96
+ version: 0.30.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement