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 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