rails_event_store-rspec 0.41.0 → 1.1.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: 2b66fc36296528b195a82cdc94f825fdf5689b2a0ffe591ae20aec53c8f79e03
4
- data.tar.gz: ff8217f56203aaff0b2edb13dc2603ec17c59e2a6fb2609c384d8848b95b020f
3
+ metadata.gz: 37679dd715a1b625ca268a4439ccb83c0d1c0dc23bd1ad3bbe784c0ce55177e1
4
+ data.tar.gz: 8e31e90d17206f8a2bf43d1cec31ae121f87ee8157de9900b0047a0b6899d434
5
5
  SHA512:
6
- metadata.gz: e61008eac90a34bd61d096c558a7958643f0f32d2d0f6e9a20112c8b2ead505eb87a870c37ad93fcbd07b632a8bcb3b82288544d21923fa99873d02b6077c20b
7
- data.tar.gz: ceed28e09b3df61213dc3a87c80da2919515b494048c48a8e3c596471b6a93e9de487718eebc2f83846acf9de505fc182d55aab9022e8b4f90157a7b6560122a
6
+ metadata.gz: 1f23d708fd762a5e7dca307d2130a5a2d9063cf11b0a6d5c58d7076888683048cd33695de01fd87087aa20c548a8388e5602716fd5bba1b2e7631613344a1ea1
7
+ data.tar.gz: e0180035ed206363a54f217f4c2079dd4cef8014f126de5bc168a0772ab3355469febadaaa497ce27af0a75c7aa1ddcd39474413e4b1fb6cd462e956af9d919d
@@ -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.41.0"
5
+ VERSION = "1.1.0"
6
6
  end
7
7
  end
@@ -27,4 +27,5 @@ Gem::Specification.new do |spec|
27
27
  spec.require_paths = ['lib']
28
28
 
29
29
  spec.add_runtime_dependency 'rspec', '~> 3.0'
30
+ spec.add_runtime_dependency 'diff-lcs', '>= 1.4.4'
30
31
  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.41.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arkency
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-19 00:00:00.000000000 Z
11
+ date: 2020-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: diff-lcs
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.4.4
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.4.4
27
41
  description:
28
42
  email:
29
43
  - dev@arkency.com
@@ -38,6 +52,7 @@ files:
38
52
  - bin/console
39
53
  - bin/setup
40
54
  - lib/rails_event_store/rspec.rb
55
+ - lib/rails_event_store/rspec/apply.rb
41
56
  - lib/rails_event_store/rspec/be_event.rb
42
57
  - lib/rails_event_store/rspec/have_applied.rb
43
58
  - lib/rails_event_store/rspec/have_published.rb
@@ -68,8 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
83
  - !ruby/object:Gem::Version
69
84
  version: '0'
70
85
  requirements: []
71
- rubyforge_project:
72
- rubygems_version: 2.7.6.2
86
+ rubygems_version: 3.0.3
73
87
  signing_key:
74
88
  specification_version: 4
75
89
  summary: RSpec matchers for RailsEventStore