rails_event_store-rspec 0.43.0 → 0.44.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: f25d9f8bb8a7efe686be89557e909028102a66699d55c19cb5ecdfc44c103a4a
4
- data.tar.gz: 257045a220c7410ad35a23f06916390ef1faae662ce72533e7325c352efcb6c2
3
+ metadata.gz: 80da3c942789e05bfefcd921231a7e23e74dc676903fee5d57fb9546e6cc6e4b
4
+ data.tar.gz: 6f0ceffa88b9bad3b57797184112d7503cd45d942b04cb54123085d98dd4e981
5
5
  SHA512:
6
- metadata.gz: 76d03ed7f4a245fd87c3442f64e8fa5eafbb4532085864b3d61db24e1d4bfe2cd472f39c84b955713a0da92d5b719c7c0e2c3f023249140d8ac45a4e20dcde79
7
- data.tar.gz: 7365326944a324af9def0c3b5edd4bb5046e21f7bd2b6baf134cc4f1f4712edd62fb842b1d2457341b177b85b0cf99c0bb58a517e7f80abc59f122412623055c
6
+ metadata.gz: acf77d7182855d4a4870669bc6a50bb77f1779985b2ed2b16d7b4ce9ea2de533195075d7f5f781cb39bda2be0edd0c269048c9cf6b9aff1cf0d157f4feac9d20
7
+ data.tar.gz: 5715289efc1faa0cc72f1b473efd87d19af049d79994065c3b99a0a201a508fbf04562ef15007d4e5d095ea80378d1db3d2e12032cfc82130042e5b8f684c9a4
@@ -13,6 +13,7 @@ require "rails_event_store/rspec/be_event"
13
13
  require "rails_event_store/rspec/have_published"
14
14
  require "rails_event_store/rspec/have_applied"
15
15
  require "rails_event_store/rspec/publish"
16
+ require "rails_event_store/rspec/apply"
16
17
  require "rails_event_store/rspec/matchers"
17
18
 
18
19
  ::RSpec.configure do |config|
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsEventStore
4
+ module RSpec
5
+ class Apply
6
+ def in(aggregate)
7
+ @aggregate = aggregate
8
+ self
9
+ end
10
+
11
+ def strict
12
+ @matcher = ::RSpec::Matchers::BuiltIn::Match.new(@expected)
13
+ self
14
+ end
15
+
16
+ def matches?(event_proc)
17
+ raise_aggregate_not_set unless @aggregate
18
+ before = @aggregate.unpublished_events.to_a
19
+ event_proc.call
20
+ @applied_events = @aggregate.unpublished_events.to_a - before
21
+ if match_events?
22
+ @matcher.matches?(@applied_events)
23
+ else
24
+ !@applied_events.empty?
25
+ end
26
+ end
27
+
28
+ def failure_message
29
+ if match_events?
30
+ <<-EOS
31
+ expected block to have applied:
32
+
33
+ #{@expected}
34
+
35
+ but applied:
36
+
37
+ #{@applied_events}
38
+ EOS
39
+ else
40
+ "expected block to have applied any events"
41
+ end
42
+ end
43
+
44
+ def failure_message_when_negated
45
+ if match_events?
46
+ <<-EOS
47
+ expected block not to have applied:
48
+
49
+ #{@expected}
50
+
51
+ but applied:
52
+
53
+ #{@applied_events}
54
+ EOS
55
+ else
56
+ "expected block not to have applied any events"
57
+ end
58
+ end
59
+
60
+ def description
61
+ "apply events"
62
+ end
63
+
64
+ def supports_block_expectations?
65
+ true
66
+ end
67
+
68
+ private
69
+
70
+ def initialize(*expected)
71
+ @expected = expected
72
+ @matcher = ::RSpec::Matchers::BuiltIn::Include.new(*expected)
73
+ end
74
+
75
+ def match_events?
76
+ !@expected.empty?
77
+ end
78
+
79
+ def raise_aggregate_not_set
80
+ raise SyntaxError, "You have to set the aggregate instance with `in`, e.g. `expect { ... }.to apply(an_event(MyEvent)).in(aggregate)`"
81
+ end
82
+ end
83
+ end
84
+ end
@@ -46,6 +46,10 @@ module RailsEventStore
46
46
  Publish.new(*expected)
47
47
  end
48
48
 
49
+ def apply(*expected)
50
+ Apply.new(*expected)
51
+ end
52
+
49
53
  private
50
54
 
51
55
  def formatter
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rspec/matchers/built_in/base_matcher'
4
-
5
3
  module RailsEventStore
6
4
  module RSpec
7
5
  class Publish
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RailsEventStore
4
4
  module RSpec
5
- VERSION = "0.43.0"
5
+ VERSION = "0.44.0"
6
6
  end
7
7
  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.43.0
4
+ version: 0.44.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arkency
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-26 00:00:00.000000000 Z
11
+ date: 2020-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -38,6 +38,7 @@ files:
38
38
  - bin/console
39
39
  - bin/setup
40
40
  - lib/rails_event_store/rspec.rb
41
+ - lib/rails_event_store/rspec/apply.rb
41
42
  - lib/rails_event_store/rspec/be_event.rb
42
43
  - lib/rails_event_store/rspec/have_applied.rb
43
44
  - lib/rails_event_store/rspec/have_published.rb