rails_event_store-rspec 0.43.0 → 1.2.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: 423fac8f9b88ddd6eb218e780bd75fbfca415712af91cdb1a5b77f29cf002d96
4
+ data.tar.gz: b3e1e45b28a863f9779778a5d18663e812a234446d170bb1c1679a88a7fdb09e
5
5
  SHA512:
6
- metadata.gz: 76d03ed7f4a245fd87c3442f64e8fa5eafbb4532085864b3d61db24e1d4bfe2cd472f39c84b955713a0da92d5b719c7c0e2c3f023249140d8ac45a4e20dcde79
7
- data.tar.gz: 7365326944a324af9def0c3b5edd4bb5046e21f7bd2b6baf134cc4f1f4712edd62fb842b1d2457341b177b85b0cf99c0bb58a517e7f80abc59f122412623055c
6
+ metadata.gz: 3c5c513a50dc86b2e01f024dfeaaf1e8c7ccb4fed8bc0469632cdc2be908ac925bb90a32b6b824747f4e300c6ebcbc489fe40bce3a33e54098d78fe63f68eb1d
7
+ data.tar.gz: 52533c481ed01efe0a95d578b6f835e94bd1dddb11c77f8e54b580365b191835fe69295a9f12fbad37a2a9a4525fdf7b7bbe40445fd11f983bee06574394ad2f
@@ -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 = "1.2.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.43.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arkency
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-26 00:00:00.000000000 Z
11
+ date: 2020-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -24,7 +24,21 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
- description:
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
41
+ description:
28
42
  email:
29
43
  - dev@arkency.com
30
44
  executables: []
@@ -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
@@ -53,7 +68,7 @@ metadata:
53
68
  changelog_uri: https://github.com/RailsEventStore/rails_event_store/releases
54
69
  source_code_uri: https://github.com/RailsEventStore/rails_event_store
55
70
  bug_tracker_uri: https://github.com/RailsEventStore/rails_event_store/issues
56
- post_install_message:
71
+ post_install_message:
57
72
  rdoc_options: []
58
73
  require_paths:
59
74
  - lib
@@ -68,8 +83,8 @@ 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.3
72
- signing_key:
86
+ rubygems_version: 3.1.4
87
+ signing_key:
73
88
  specification_version: 4
74
89
  summary: RSpec matchers for RailsEventStore
75
90
  test_files: []