rails_event_store-rspec 0.42.0 → 1.1.1

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: c741569452ce57f1fd66ab81ddbb10d22e93cbc6e10f4087f1496935b2dae815
4
- data.tar.gz: 28e4eb191bcc671c32e2645dc2c362195d7326eef3f5488d0781d1e1481f49c9
3
+ metadata.gz: bed2ceda4f6a41608bcf10f2c827463223576919a8476754c5531227c2c02fc2
4
+ data.tar.gz: f389aa08ec8d7126d55a95a628aed3e84c93096f6defc23dcba35ae7249d3652
5
5
  SHA512:
6
- metadata.gz: 24a5f4c07c8bcaa2060177f9e3fbba713b8ff515f1ca28c3dbe5fd18dba647dcc10f070ca1286fa931d5378dbc325c405c3538f16e158e2688e967a44a2a95b4
7
- data.tar.gz: 23f79594020caab4e3fc98df169411f951128541a1ad1cf6542c7d91e84f4696d76e69eb90de4b9f6db80c7ba327392dd206ebe6e50ac8f3fd04984fbd60bed0
6
+ metadata.gz: aa06b696427d83d791050c42a29262164438b5ddd6498750191ec05655831e764be019ec13db472b870cb4184d1df1345cb85f4745389bd2ba1fb4371851b972
7
+ data.tar.gz: f59bbcfc2c506f977185aeee99b1cd0a2149b7081604af06ac600a512a38b562421e49eb36e119d5869f86812dfd5fa511c5510ecf2e26625d846c056c7aba98
@@ -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.42.0"
5
+ VERSION = "1.1.1"
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.42.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arkency
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-30 00:00:00.000000000 Z
11
+ date: 2020-08-20 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,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
83
  - !ruby/object:Gem::Version
69
84
  version: '0'
70
85
  requirements: []
71
- rubygems_version: 3.0.6
86
+ rubygems_version: 3.0.3
72
87
  signing_key:
73
88
  specification_version: 4
74
89
  summary: RSpec matchers for RailsEventStore