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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MTA4MzQ1NDU2ZDMxMzkzYTQ0ZjkwNzBlMGFlODhhMDE2NWZjYjU5Yw==
4
+ ZmEwZGVmNTFlNWM4ZDQ2YjM4MzRiMWU1OWEzNTA2NjEwYjFhMTdhYg==
5
5
  data.tar.gz: !binary |-
6
- OWIwZmY0NGM0NzBmOGU2MDc2ZGYxMDBkZjY5NjlmNjVmOWJjMjM0Ng==
6
+ ZTc3MDBjMTQ0MzJhMGIxMjllYjBmYTkxMDlhMTg3NmJhYTNmNTNhNA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YWI2ZjJhOTAzMTU3MTNmNzQwNWEyYWE3NTFlMzg2ZTIwYTQzZTRhMzA4MjVi
10
- NTk0ZDc2MDMwOTI1NjQ5NTJmZDdlNGQ5MjJhMzRmMWU3MDUzNTU2YjhkZGI1
11
- MGVkZDY5ZmY2MDM1MWZlZDAxZTk5MWJmYzgwYWNiYjNhOGNjMTQ=
9
+ N2YxMDFhNTE0ZDM2Nzg3NWMzYWZhNDcyOWI3NDE4NjgwNGVkYmY0NWQzOGEz
10
+ NDA5ZGNiNjk3MzEwZjJlOTk3NmVhNGRlMzMyOWU3M2YwZjg0YTJjZGJmMGRh
11
+ MzJiMzg0ZDQ3NmZiYmU2M2JlNTRjZTZmOGRiMmI4MDJjZDFlOGM=
12
12
  data.tar.gz: !binary |-
13
- NTA3NjFkNmFkOTEyOTZjZWE3N2MxYTFhMjc3YjMwMDY5ODU0MDVmMjZjYmFh
14
- YjZmNGNjNmNmOTgyNmE1MTRmMmRjZjc5Njc2NmVhOTViYTViYTJjOGIzNzI5
15
- ZDkxN2RlZjBkNmJiYjg2YmI4NmZhZGZhZDkzZWM3NzM4N2JhOTE=
13
+ YzkwMWRmY2Y0NDc3ODk2YmZkMDNhYzEzMjVmN2IxMzBmNDNmNmUyNjg3NDcw
14
+ MjQwOTU2ZDg4MTA0YTQ2YzE0OThhOGVhNGM4MzQxZmU2Yzg3ZjY0Y2I0ZjEw
15
+ NTQ0MzY5MzUxNTNhOGFlNjI1N2Y0NjRkYTM0MGU2NjAxYjJlYzc=
@@ -1,4 +1,5 @@
1
1
  require "thread/pool"
2
+
2
3
  require "event_aggregator/version"
3
4
  require "event_aggregator/aggregator"
4
5
  require "event_aggregator/listener"
@@ -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 = false - Indicates if EventAggregator::Listener objects
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 = false)
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 )
@@ -1,3 +1,3 @@
1
1
  module EventAggregator
2
- VERSION = "1.1.4"
2
+ VERSION = "1.1.5"
3
3
  end
@@ -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
- before(:each) do
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 'run all callbacks for all message types' do
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
- expect(callback).to receive(:call) {|arg|
243
- expect(arg.message_type).to eql(message1.message_type)
244
- expect(arg.data).to eql(message1.data)
245
- }
246
- expect(callback).to receive(:call) {|arg|
247
- expect(arg.message_type).to eql(message2.message_type)
248
- expect(arg.data).to eql(message2.data)
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
- # 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
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
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-02-14 00:00:00.000000000 Z
11
+ date: 2014-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler