rails_event_store-rspec 0.30.0 → 0.31.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: 390b1d981a082e02362684ad51daa1236313bc6126ec5585c8e17a854f0c3131
4
- data.tar.gz: 141370fd5d39f1eb5d317ea88e658d28dc75cc0c37f1e5a0c76e9b7ed69305ed
3
+ metadata.gz: cb9a52d06b29f2a7a988faca6b6afcea7f924cd2cc9ea2c275a623ebf4b3baa5
4
+ data.tar.gz: 918a68a7eb907a49d7e46cfdd442bf745041278a35cda3c5eaa3bb43eb97cb3b
5
5
  SHA512:
6
- metadata.gz: d1480b7aa2c2076b915dad1a577f01be0f90ab04e12c534137a73921cf9bac45dbf5aec911dfad1bb85791a95b5894b6ce7f973608cf3bcb30dc75d125775500
7
- data.tar.gz: 836935f2e46c5709a3eb2a4e84885d06622e9ef0739bfd6f21294c9b01ce2eb61d7264ef31e4c3921eba9aba578272110027c929541f6a233f5118526a13a6e0
6
+ metadata.gz: 558ca421234b71bbdff9d26277b7847b3b651fbd74cea055b11fdad4f94c2474aa15306f3adbc427d09391ce5882a04b0403aee4e32b718b002400cad7fad9f8
7
+ data.tar.gz: 59b5c894b412ac0aa5a7504604da0cf6f8eac590b3d258ac4b9fd0118eb8f778e905d7b911e0e27badd445664e5ee95163de054e266b6bb894e05edf4ea4fa1a
data/Makefile CHANGED
@@ -5,7 +5,9 @@ IGNORE = RailsEventStore::RSpec::Matchers\#differ \
5
5
  RailsEventStore::RSpec::Matchers\#formatter \
6
6
  RailsEventStore::RSpec::Matchers\#have_published \
7
7
  RailsEventStore::RSpec::Matchers\#have_applied \
8
- RailsEventStore::RSpec::Matchers\#be_an_event
8
+ RailsEventStore::RSpec::Matchers\#publish \
9
+ RailsEventStore::RSpec::Matchers\#be_an_event \
10
+ RailsEventStore::RSpec::Publish\#last_event
9
11
  SUBJECT ?= RailsEventStore::RSpec*
10
12
 
11
13
  install: ## Install gem dependencies
data/README.md CHANGED
@@ -86,7 +86,7 @@ In a simplest form it would read all streams backward up to a page limit (100 ev
86
86
 
87
87
  ```ruby
88
88
  event_store = RailsEventStore::Client.new
89
- event_store.publish_event(OrderPlaced.new(data: { order_id: 42 }))
89
+ event_store.publish(OrderPlaced.new(data: { order_id: 42 }))
90
90
 
91
91
  expect(event_store).to have_published(an_event(OrderPlaced))
92
92
  ```
@@ -95,7 +95,7 @@ Expectation can be narrowed to the specific stream.
95
95
 
96
96
  ```ruby
97
97
  event_store = RailsEventStore::Client.new
98
- event_store.publish_event(OrderPlaced.new(data: { order_id: 42 }), stream_name: "Order$42")
98
+ event_store.publish(OrderPlaced.new(data: { order_id: 42 }), stream_name: "Order$42")
99
99
 
100
100
  expect(event_store).to have_published(an_event(OrderPlaced)).in_stream("Order$42")
101
101
  ```
@@ -10,6 +10,7 @@ require "rails_event_store/rspec/version"
10
10
  require "rails_event_store/rspec/be_event"
11
11
  require "rails_event_store/rspec/have_published"
12
12
  require "rails_event_store/rspec/have_applied"
13
+ require "rails_event_store/rspec/publish"
13
14
  require "rails_event_store/rspec/matchers"
14
15
 
15
16
  ::RSpec.configure do |config|
@@ -38,6 +38,10 @@ module RailsEventStore
38
38
  HaveApplied.new(*expected, differ: differ, phraser: phraser)
39
39
  end
40
40
 
41
+ def publish(*expected)
42
+ Publish.new(*expected)
43
+ end
44
+
41
45
  private
42
46
 
43
47
  def formatter
@@ -0,0 +1,90 @@
1
+ require 'rspec/matchers/built_in/base_matcher'
2
+
3
+ module RailsEventStore
4
+ module RSpec
5
+ class Publish
6
+ def in(event_store)
7
+ @event_store = event_store
8
+ self
9
+ end
10
+
11
+ def in_stream(stream)
12
+ @stream = stream
13
+ self
14
+ end
15
+
16
+ def matches?(event_proc)
17
+ raise_event_store_not_set unless @event_store
18
+ spec = @event_store.read
19
+ spec = spec.stream(@stream) if @stream
20
+ last_event_before_block = last_event(spec)
21
+ event_proc.call
22
+ spec = spec.from(last_event_before_block.event_id) if last_event_before_block
23
+ @published_events = spec.each.to_a
24
+ if match_events?
25
+ ::RSpec::Matchers::BuiltIn::Include.new(*@expected).matches?(@published_events)
26
+ else
27
+ !@published_events.empty?
28
+ end
29
+ end
30
+
31
+ def failure_message
32
+ if match_events?
33
+ <<-EOS
34
+ expected block to have published:
35
+
36
+ #{@expected}
37
+
38
+ #{"in stream #{@stream} " if @stream}but published:
39
+
40
+ #{@published_events}
41
+ EOS
42
+ else
43
+ "expected block to have published any events"
44
+ end
45
+ end
46
+
47
+ def failure_message_when_negated
48
+ if match_events?
49
+ <<-EOS
50
+ expected block not to have published:
51
+
52
+ #{@expected}
53
+
54
+ #{"in stream #{@stream} " if @stream}but published:
55
+
56
+ #{@published_events}
57
+ EOS
58
+ else
59
+ "expected block not to have published any events"
60
+ end
61
+ end
62
+
63
+ def description
64
+ "publish events"
65
+ end
66
+
67
+ def supports_block_expectations?
68
+ true
69
+ end
70
+
71
+ private
72
+
73
+ def initialize(*expected)
74
+ @expected = expected
75
+ end
76
+
77
+ def match_events?
78
+ !@expected.empty?
79
+ end
80
+
81
+ def last_event(spec)
82
+ spec.backward.limit(1).each.first
83
+ end
84
+
85
+ def raise_event_store_not_set
86
+ raise SyntaxError, "You have to set the event store instance with `in`, e.g. `expect { ... }.to publish(an_event(MyEvent)).in(event_store)`"
87
+ end
88
+ end
89
+ end
90
+ end
@@ -1,5 +1,5 @@
1
1
  module RailsEventStore
2
2
  module RSpec
3
- VERSION = "0.30.0"
3
+ VERSION = "0.31.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.30.0'
34
+ spec.add_development_dependency 'rails_event_store', '= 0.31.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.30.0
4
+ version: 0.31.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-31 00:00:00.000000000 Z
11
+ date: 2018-07-17 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.30.0
89
+ version: 0.31.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.30.0
96
+ version: 0.31.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -127,6 +127,7 @@ files:
127
127
  - lib/rails_event_store/rspec/have_applied.rb
128
128
  - lib/rails_event_store/rspec/have_published.rb
129
129
  - lib/rails_event_store/rspec/matchers.rb
130
+ - lib/rails_event_store/rspec/publish.rb
130
131
  - lib/rails_event_store/rspec/version.rb
131
132
  - rails_event_store-rspec.gemspec
132
133
  homepage: https://railseventstore.org