rabbit_feed 2.4.3 → 2.4.4
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 +4 -4
- data/README.md +12 -0
- data/example/non_rails_app/Gemfile.lock +3 -3
- data/example/rails_app/Gemfile.lock +2 -2
- data/lib/rabbit_feed/testing_support/rspec_matchers/publish_event.rb +27 -21
- data/lib/rabbit_feed/version.rb +1 -1
- data/spec/lib/rabbit_feed/testing_support/rspec_matchers/publish_event_spec.rb +36 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5cfc4d957f4cce3aac5cf77870241ec8f60d5495
|
4
|
+
data.tar.gz: b6047ba2d39c634ae3c8d3cbc3b09a1f2849f3ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8dafb9b1caf08fc1025fa1f366585a7eab7844e224d1e935c6a7cbf9c2d068cfe490e7964cac24cdcc4011aa797368998b4e0fccd63ca976ac3053c5f190496e
|
7
|
+
data.tar.gz: 6a740b0c0fdf17fb64516faf622bb77b7b2d30a5f765c5901d6efb14b7d9ef5022e311b1d4c0343c7b439552ca6c99a676cc7b125dcb1b4ad760b4bda92bc23e
|
data/README.md
CHANGED
@@ -168,6 +168,18 @@ describe BeaversController do
|
|
168
168
|
end
|
169
169
|
```
|
170
170
|
|
171
|
+
You can also pass a block with `do/end` (not `{}`) and do more fine grained matching.
|
172
|
+
|
173
|
+
```ruby
|
174
|
+
it 'publishes a create event' do
|
175
|
+
expect{
|
176
|
+
post :create, beaver: { name: 'beaver' }
|
177
|
+
}.to publish_event('user_creates_beaver', nil) do |payload|
|
178
|
+
expect(payload['beaver_name']).to match(/ea/)
|
179
|
+
end
|
180
|
+
end
|
181
|
+
```
|
182
|
+
|
171
183
|
## Consuming events
|
172
184
|
|
173
185
|
The consumer defines to which events it will subscribe as well as how it handles events using the [Event Routing DSL](https://github.com/simplybusiness/rabbit_feed#event-routing-dsl). In a rails app, this can be defined in the [initialiser](https://github.com/simplybusiness/rabbit_feed#initialisation).
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../
|
3
3
|
specs:
|
4
|
-
rabbit_feed (2.4.
|
4
|
+
rabbit_feed (2.4.4)
|
5
5
|
activemodel (>= 3.2.0, < 5.0.0)
|
6
6
|
activesupport (>= 3.2.0, < 5.0.0)
|
7
7
|
avro (>= 1.5.4, < 1.8.0)
|
@@ -30,7 +30,7 @@ GEM
|
|
30
30
|
i18n (0.7.0)
|
31
31
|
json (1.8.3)
|
32
32
|
minitest (5.8.4)
|
33
|
-
multi_json (1.
|
33
|
+
multi_json (1.12.0)
|
34
34
|
pidfile (0.3.0)
|
35
35
|
rake (10.4.2)
|
36
36
|
rspec (3.2.0)
|
@@ -59,4 +59,4 @@ DEPENDENCIES
|
|
59
59
|
rspec
|
60
60
|
|
61
61
|
BUNDLED WITH
|
62
|
-
1.
|
62
|
+
1.11.2
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../
|
3
3
|
specs:
|
4
|
-
rabbit_feed (2.4.
|
4
|
+
rabbit_feed (2.4.4)
|
5
5
|
activemodel (>= 3.2.0, < 5.0.0)
|
6
6
|
activesupport (>= 3.2.0, < 5.0.0)
|
7
7
|
avro (>= 1.5.4, < 1.8.0)
|
@@ -189,4 +189,4 @@ DEPENDENCIES
|
|
189
189
|
unicorn
|
190
190
|
|
191
191
|
BUNDLED WITH
|
192
|
-
1.
|
192
|
+
1.11.2
|
@@ -10,30 +10,19 @@ module RabbitFeed
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def matches?(given_proc, negative_expectation = false)
|
13
|
-
|
14
|
-
::Kernel.warn "`publish_event` was called with non-proc object #{given_proc.inspect}"
|
15
|
-
return false
|
16
|
-
end
|
17
|
-
|
18
|
-
begin
|
19
|
-
TestingSupport.published_events.clear
|
20
|
-
given_proc.call
|
21
|
-
rescue
|
22
|
-
end
|
13
|
+
execute_proc(given_proc)
|
23
14
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
15
|
+
if block_given? && actual_event
|
16
|
+
yield actual_event.payload
|
17
|
+
else
|
18
|
+
received_expected_event = actual_event.present?
|
19
|
+
with_expected_payload = negative_expectation
|
29
20
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
21
|
+
if received_expected_event && !with_expected_payload
|
22
|
+
with_expected_payload = expected_payload.nil? || actual_event.payload == expected_payload
|
23
|
+
end
|
24
|
+
return received_expected_event && with_expected_payload
|
34
25
|
end
|
35
|
-
|
36
|
-
return received_expected_event && with_expected_payload
|
37
26
|
end
|
38
27
|
|
39
28
|
alias == matches?
|
@@ -72,6 +61,23 @@ module RabbitFeed
|
|
72
61
|
|
73
62
|
private
|
74
63
|
|
64
|
+
def execute_proc(given_proc)
|
65
|
+
unless given_proc.respond_to?(:call)
|
66
|
+
::Kernel.warn "`publish_event` was called with non-proc object #{given_proc.inspect}"
|
67
|
+
return false
|
68
|
+
end
|
69
|
+
|
70
|
+
TestingSupport.published_events.clear
|
71
|
+
given_proc.call
|
72
|
+
rescue
|
73
|
+
end
|
74
|
+
|
75
|
+
def actual_event
|
76
|
+
TestingSupport.published_events.detect do |event|
|
77
|
+
event.name == expected_event
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
75
81
|
def expected_payload
|
76
82
|
@expected_payload.respond_to?(:call) ? @expected_payload.call : @expected_payload
|
77
83
|
end
|
data/lib/rabbit_feed/version.rb
CHANGED
@@ -74,6 +74,42 @@ module RabbitFeed
|
|
74
74
|
(matcher.matches? block).should be_falsey
|
75
75
|
end
|
76
76
|
|
77
|
+
context 'with block' do
|
78
|
+
it 'validates block' do
|
79
|
+
expect {
|
80
|
+
RabbitFeed::Producer.publish_event event_name, event_payload
|
81
|
+
}.to publish_event(event_name, nil) do |actual_payload|
|
82
|
+
expect(actual_payload['field']).to eq 'value'
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'validates block with `with` will be ignored' do
|
87
|
+
eval_block = Proc.new {|actual_payload|
|
88
|
+
expect(actual_payload['field']).to eq 'value'
|
89
|
+
}
|
90
|
+
matcher = described_class.new(event_name, nil).with({field: 'different name'})
|
91
|
+
block = Proc.new { RabbitFeed::Producer.publish_event event_name, {'field' => 'value'} }
|
92
|
+
|
93
|
+
(matcher.matches? block, &eval_block).should be true
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'does not evaluates block with {}' do
|
97
|
+
expect {
|
98
|
+
RabbitFeed::Producer.publish_event event_name, event_payload
|
99
|
+
}.to publish_event(event_name, nil) { |actual_payload|
|
100
|
+
raise 'this block should not be evaluated'
|
101
|
+
}
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'does not evaluate block if the expectation block does not return actual payload' do
|
105
|
+
expect {
|
106
|
+
nil
|
107
|
+
}.not_to publish_event(event_name, nil) do |actual_payload|
|
108
|
+
raise 'this block should not be evaluated'
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
77
113
|
context 'when validating the payload' do
|
78
114
|
context 'and the payload is not a Proc' do
|
79
115
|
it 'validates the event payload' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rabbit_feed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.
|
4
|
+
version: 2.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simply Business
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04
|
11
|
+
date: 2016-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bunny
|
@@ -368,7 +368,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
368
368
|
version: '0'
|
369
369
|
requirements: []
|
370
370
|
rubyforge_project:
|
371
|
-
rubygems_version: 2.
|
371
|
+
rubygems_version: 2.4.5.1
|
372
372
|
signing_key:
|
373
373
|
specification_version: 4
|
374
374
|
summary: Enables your Ruby applications to perform centralized event logging with
|