event_aggregator 1.1.4 → 1.1.5
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 +8 -8
- data/lib/event_aggregator.rb +1 -0
- data/lib/event_aggregator/aggregator.rb +1 -2
- data/lib/event_aggregator/message.rb +4 -4
- data/lib/event_aggregator/version.rb +1 -1
- data/spec/lib/event_aggregator/aggregator_spec.rb +131 -27
- data/spec/spec_helper.rb +17 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZmEwZGVmNTFlNWM4ZDQ2YjM4MzRiMWU1OWEzNTA2NjEwYjFhMTdhYg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZTc3MDBjMTQ0MzJhMGIxMjllYjBmYTkxMDlhMTg3NmJhYTNmNTNhNA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
N2YxMDFhNTE0ZDM2Nzg3NWMzYWZhNDcyOWI3NDE4NjgwNGVkYmY0NWQzOGEz
|
10
|
+
NDA5ZGNiNjk3MzEwZjJlOTk3NmVhNGRlMzMyOWU3M2YwZjg0YTJjZGJmMGRh
|
11
|
+
MzJiMzg0ZDQ3NmZiYmU2M2JlNTRjZTZmOGRiMmI4MDJjZDFlOGM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YzkwMWRmY2Y0NDc3ODk2YmZkMDNhYzEzMjVmN2IxMzBmNDNmNmUyNjg3NDcw
|
14
|
+
MjQwOTU2ZDg4MTA0YTQ2YzE0OThhOGVhNGM4MzQxZmU2Yzg3ZjY0Y2I0ZjEw
|
15
|
+
NTQ0MzY5MzUxNTNhOGFlNjI1N2Y0NjRkYTM0MGU2NjAxYjJlYzc=
|
data/lib/event_aggregator.rb
CHANGED
@@ -129,7 +129,6 @@ module EventAggregator
|
|
129
129
|
raise "Illegal message_type" if message_type == nil
|
130
130
|
raise "Illegal callback" unless callback.respond_to?(:call) && callback.arity == 1
|
131
131
|
|
132
|
-
|
133
132
|
@@producers[message_type] = callback
|
134
133
|
end
|
135
134
|
|
@@ -155,7 +154,7 @@ module EventAggregator
|
|
155
154
|
|
156
155
|
private
|
157
156
|
def self.perform_message_job(data, callback, async, consisten_data)
|
158
|
-
case [async, consisten_data]
|
157
|
+
case [async, consisten_data || data == nil]
|
159
158
|
when [true, true] then @@pool.process{ EventAggregator::MessageJob.new.perform(data, callback) }
|
160
159
|
when [true, false] then @@pool.process{ EventAggregator::MessageJob.new.perform(data.clone, callback) }
|
161
160
|
when [false, true] then EventAggregator::MessageJob.new.perform(data, callback)
|
@@ -30,9 +30,9 @@ module EventAggregator
|
|
30
30
|
# data - The data that will be passed to the
|
31
31
|
# EventAggregator::Listener objects
|
32
32
|
# async = true - Indicates if message should be published async or not
|
33
|
-
# consisten_data =
|
33
|
+
# consisten_data = true - Indicates if EventAggregator::Listener objects
|
34
34
|
# should recieve a consistent object reference or clones.
|
35
|
-
def initialize(message_type, data, async = true, consisten_data =
|
35
|
+
def initialize(message_type, data, async = true, consisten_data = true)
|
36
36
|
raise "Illegal Message Type" if message_type == nil
|
37
37
|
|
38
38
|
@message_type = message_type
|
@@ -47,9 +47,9 @@ module EventAggregator
|
|
47
47
|
def publish
|
48
48
|
Aggregator.message_publish( self )
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
# Public: Will provide data if a producer of this message_type is present.
|
52
|
-
#
|
52
|
+
#
|
53
53
|
# Returns Requested data if a producer is present. Nil otherwise.
|
54
54
|
def request
|
55
55
|
Aggregator.message_request( self )
|
@@ -8,10 +8,15 @@ describe EventAggregator::Aggregator do
|
|
8
8
|
let(:callback) { lambda{ |data| } }
|
9
9
|
let(:random_string) { Faker::Internet.password }
|
10
10
|
let(:random_number) { Faker::Number.number(rand(9)) }
|
11
|
-
|
12
|
-
|
11
|
+
let(:empty_object) { Object.new }
|
12
|
+
|
13
|
+
before(:all) do
|
13
14
|
EventAggregator::Aggregator.reset
|
14
15
|
end
|
16
|
+
|
17
|
+
after(:each) do
|
18
|
+
EventAggregator::Aggregator.restart_pool
|
19
|
+
end
|
15
20
|
describe "self.register" do
|
16
21
|
describe 'legal parameters' do
|
17
22
|
it "no errors" do
|
@@ -229,7 +234,57 @@ describe EventAggregator::Aggregator do
|
|
229
234
|
EventAggregator::Aggregator.message_publish(message)
|
230
235
|
end
|
231
236
|
|
232
|
-
it '
|
237
|
+
it 'runs all callbacks when data is different types' do
|
238
|
+
EventAggregator::Aggregator.register_all(listener, callback)
|
239
|
+
|
240
|
+
message1 = EventAggregator::Message.new(message_type , nil)
|
241
|
+
message2 = EventAggregator::Message.new(message_type + "2", random_number)
|
242
|
+
message3 = EventAggregator::Message.new(message_type + "3", random_string)
|
243
|
+
message4 = EventAggregator::Message.new(message_type + "4", empty_object)
|
244
|
+
message5 = EventAggregator::Message.new(message_type + "5", true)
|
245
|
+
message6 = EventAggregator::Message.new(message_type + "6", false)
|
246
|
+
|
247
|
+
expect(callback).to receive(:call).with(message1)
|
248
|
+
expect(callback).to receive(:call).with(message2)
|
249
|
+
expect(callback).to receive(:call).with(message3)
|
250
|
+
expect(callback).to receive(:call).with(message4)
|
251
|
+
expect(callback).to receive(:call).with(message5)
|
252
|
+
expect(callback).to receive(:call).with(message6)
|
253
|
+
|
254
|
+
EventAggregator::Aggregator.message_publish(message1)
|
255
|
+
EventAggregator::Aggregator.message_publish(message2)
|
256
|
+
EventAggregator::Aggregator.message_publish(message3)
|
257
|
+
EventAggregator::Aggregator.message_publish(message4)
|
258
|
+
EventAggregator::Aggregator.message_publish(message5)
|
259
|
+
EventAggregator::Aggregator.message_publish(message6)
|
260
|
+
end
|
261
|
+
|
262
|
+
it 'runs all callbacks when data is different types register one' do
|
263
|
+
EventAggregator::Aggregator.register(listener, message_type, callback)
|
264
|
+
|
265
|
+
message1 = EventAggregator::Message.new(message_type, nil)
|
266
|
+
message2 = EventAggregator::Message.new(message_type, random_number)
|
267
|
+
message3 = EventAggregator::Message.new(message_type, random_string)
|
268
|
+
message4 = EventAggregator::Message.new(message_type, empty_object)
|
269
|
+
message5 = EventAggregator::Message.new(message_type, true)
|
270
|
+
message6 = EventAggregator::Message.new(message_type, false)
|
271
|
+
|
272
|
+
expect(callback).to receive(:call).with(nil)
|
273
|
+
expect(callback).to receive(:call).with(random_number)
|
274
|
+
expect(callback).to receive(:call).with(random_string)
|
275
|
+
expect(callback).to receive(:call).with(empty_object)
|
276
|
+
expect(callback).to receive(:call).with(true)
|
277
|
+
expect(callback).to receive(:call).with(false)
|
278
|
+
|
279
|
+
EventAggregator::Aggregator.message_publish(message1)
|
280
|
+
EventAggregator::Aggregator.message_publish(message2)
|
281
|
+
EventAggregator::Aggregator.message_publish(message3)
|
282
|
+
EventAggregator::Aggregator.message_publish(message4)
|
283
|
+
EventAggregator::Aggregator.message_publish(message5)
|
284
|
+
EventAggregator::Aggregator.message_publish(message6)
|
285
|
+
end
|
286
|
+
|
287
|
+
it 'run all callbacks for all message types register all' do #Fails with seed: 34154
|
233
288
|
EventAggregator::Aggregator.register_all(listener, callback)
|
234
289
|
|
235
290
|
message1 = EventAggregator::Message.new(message_type , data)
|
@@ -239,30 +294,13 @@ describe EventAggregator::Aggregator do
|
|
239
294
|
message5 = EventAggregator::Message.new(message_type + "5", data)
|
240
295
|
message6 = EventAggregator::Message.new(message_type + "6", data)
|
241
296
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
expect(callback).to receive(:call)
|
247
|
-
|
248
|
-
|
249
|
-
}
|
250
|
-
expect(callback).to receive(:call) {|arg|
|
251
|
-
expect(arg.message_type).to eql(message3.message_type)
|
252
|
-
expect(arg.data).to eql(message3.data)
|
253
|
-
}
|
254
|
-
expect(callback).to receive(:call) {|arg|
|
255
|
-
expect(arg.message_type).to eql(message4.message_type)
|
256
|
-
expect(arg.data).to eql(message4.data)
|
257
|
-
}
|
258
|
-
expect(callback).to receive(:call) {|arg|
|
259
|
-
expect(arg.message_type).to eql(message5.message_type)
|
260
|
-
expect(arg.data).to eql(message5.data)
|
261
|
-
}
|
262
|
-
expect(callback).to receive(:call) {|arg|
|
263
|
-
expect(arg.message_type).to eql(message6.message_type)
|
264
|
-
expect(arg.data).to eql(message6.data)
|
265
|
-
}
|
297
|
+
|
298
|
+
expect(callback).to receive(:call).with(message1)
|
299
|
+
expect(callback).to receive(:call).with(message2)
|
300
|
+
expect(callback).to receive(:call).with(message3)
|
301
|
+
expect(callback).to receive(:call).with(message4)
|
302
|
+
expect(callback).to receive(:call).with(message5)
|
303
|
+
expect(callback).to receive(:call).with(message6)
|
266
304
|
|
267
305
|
|
268
306
|
EventAggregator::Aggregator.message_publish(message1)
|
@@ -579,4 +617,70 @@ describe EventAggregator::Aggregator do
|
|
579
617
|
end
|
580
618
|
end
|
581
619
|
end
|
620
|
+
|
621
|
+
describe 'propagates fully' do
|
622
|
+
class TestClassSingle
|
623
|
+
include EventAggregator::Listener
|
624
|
+
|
625
|
+
def initialize
|
626
|
+
message_type_register("message_type", method(:test_method))
|
627
|
+
end
|
628
|
+
|
629
|
+
def test_method(data)
|
630
|
+
self.self_called(data)
|
631
|
+
end
|
632
|
+
def self_called(data)
|
633
|
+
end
|
634
|
+
end
|
635
|
+
|
636
|
+
class TestClassAll
|
637
|
+
include EventAggregator::Listener
|
638
|
+
|
639
|
+
def initialize
|
640
|
+
message_type_register_all(method(:test_method))
|
641
|
+
end
|
642
|
+
|
643
|
+
def test_method(data)
|
644
|
+
self.self_called(data)
|
645
|
+
end
|
646
|
+
def self_called(data)
|
647
|
+
end
|
648
|
+
end
|
649
|
+
|
650
|
+
it "calls method on test class single" do
|
651
|
+
test_class = TestClassSingle.new
|
652
|
+
expect(test_class).to receive(:self_called).with(data)
|
653
|
+
message = EventAggregator::Message.new("message_type", data)
|
654
|
+
EventAggregator::Aggregator.message_publish(message)
|
655
|
+
end
|
656
|
+
|
657
|
+
it "calls method on test class all" do
|
658
|
+
test_class = TestClassAll.new
|
659
|
+
message = EventAggregator::Message.new("message_type", data)
|
660
|
+
expect(test_class).to receive(:self_called){|e| expect(e.message_type).to eq("message_type") and expect(e.data).to eq(data)}
|
661
|
+
EventAggregator::Aggregator.message_publish(message)
|
662
|
+
end
|
663
|
+
|
664
|
+
it "calls method on test class single full-stack" do
|
665
|
+
test_class = TestClassSingle.new
|
666
|
+
expect(test_class).to receive(:self_called).with(data)
|
667
|
+
message = EventAggregator::Message.new("message_type", data)
|
668
|
+
message.publish
|
669
|
+
end
|
670
|
+
|
671
|
+
it "calls method on test class all full-stack" do
|
672
|
+
test_class = TestClassAll.new
|
673
|
+
message = EventAggregator::Message.new("message_type", data)
|
674
|
+
expect(test_class).to receive(:self_called){|e| expect(e.message_type).to eq("message_type") and expect(e.data).to eq(data)}
|
675
|
+
message.publish
|
676
|
+
end
|
677
|
+
it "calls method on mulitple" do
|
678
|
+
test_class = TestClassAll.new
|
679
|
+
test_class2 = TestClassSingle.new
|
680
|
+
message = EventAggregator::Message.new("message_type", data)
|
681
|
+
expect(test_class).to receive(:self_called){|e| expect(e.message_type).to eq("message_type") and expect(e.data).to eq(data)}
|
682
|
+
expect(test_class2).to receive(:self_called){|e| expect(e.message_type).to eq("message_type") and expect(e.data).to eq(data)}
|
683
|
+
message.publish
|
684
|
+
end
|
685
|
+
end
|
582
686
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -10,13 +10,13 @@ Coveralls.wear!
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
class Thread::Pool
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
13
|
+
# class Thread::Pool
|
14
|
+
|
15
|
+
# # Public: Overriding the process-call of the thread::pool so we can do tests better
|
16
|
+
# def process (*args, &block)
|
17
|
+
# block.call(*args)
|
18
|
+
# end
|
19
|
+
# end
|
20
20
|
|
21
21
|
RSpec.configure do |config|
|
22
22
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
@@ -29,3 +29,13 @@ RSpec.configure do |config|
|
|
29
29
|
# --seed 1234
|
30
30
|
config.order = "random"
|
31
31
|
end
|
32
|
+
|
33
|
+
|
34
|
+
class EventAggregator::Aggregator
|
35
|
+
|
36
|
+
def self.restart_pool
|
37
|
+
@@pool.shutdown
|
38
|
+
@@pool = Thread.pool(4)
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: event_aggregator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephan Eriksen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|