entity_store 0.2.3 → 0.2.4

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
  SHA1:
3
- metadata.gz: 2ae19687251813db58263715d7a1df569d66b125
4
- data.tar.gz: 55b3f49952352534eceb2bf6d819c5f7896d3c32
3
+ metadata.gz: d1ceade888f0ca9a1807f1d103cd9b49f34d1246
4
+ data.tar.gz: 0be6cae4eb7ab32f4e2cde36c4f3028ed42fa068
5
5
  SHA512:
6
- metadata.gz: 4c1f41a9842c6f253ad9b9d47e48c6ee9ff3814cd4b70806ab24d052836925c84b434836de49f052acef98e19d604896df19d914ff0d41dd6028f4865413d80c
7
- data.tar.gz: e363897b835a03e5a4989659f387a5d60da640940c0cbffb5788b2acc07e6c2716d36f5e9376de1590356ca5eaf7cd0da64f0471a26e763cd5be480df2afb9a1
6
+ metadata.gz: f564aadd920f1fd2424178f15e04ceba311d59c2e6a2a41ecc229004b8244dfeb2facd86edc2ddf0273d1c7f7c375a394a6f64e15b9ebec56ebe0617de45440e
7
+ data.tar.gz: fb8885e4a843368e936271aa638de38d754aa24cffa584e1e8674625a6ce659f5132aaae6f1d9a2ea7cd29b105133cb1d1d65894fa66bba774b8d1cc6e5514bf
@@ -2,23 +2,30 @@ module EntityStore
2
2
  class EventBus
3
3
  include Logging
4
4
 
5
+ ALL_METHOD = :all_events
6
+
5
7
  def publish(entity_type, event)
6
8
  publish_to_feed entity_type, event
7
9
 
8
- subscribers_to(event.receiver_name).each do |s|
9
- begin
10
- s.new.send(event.receiver_name, event)
11
- log_debug { "called #{s.name}##{event.receiver_name} with #{event.inspect}" }
12
- rescue => e
13
- log_error "#{e.message} when calling #{s.name}##{event.receiver_name} with #{event.inspect}", e
14
- end
15
- end
10
+ subscribers_to(event.receiver_name).each do |s| send_to_subscriber s, event.receiver_name, event end
11
+ subscribers_to_all.each do |s| send_to_subscriber s, ALL_METHOD, event end
12
+ end
13
+
14
+ def send_to_subscriber subscriber, receiver_name, event
15
+ subscriber.new.send(receiver_name, event)
16
+ log_debug { "called #{subscriber.name}##{receiver_name} with #{event.inspect}" }
17
+ rescue => e
18
+ log_error "#{e.message} when calling #{subscriber.name}##{receiver_name} with #{event.inspect}", e
16
19
  end
17
20
 
18
21
  def subscribers_to(event_name)
19
22
  subscribers.select { |s| s.instance_methods.include?(event_name.to_sym) }
20
23
  end
21
24
 
25
+ def subscribers_to_all
26
+ subscribers.select { |s| s.instance_methods.include?(ALL_METHOD) }
27
+ end
28
+
22
29
  def subscribers
23
30
  EntityStore::Config.event_subscribers
24
31
  end
@@ -1,3 +1,3 @@
1
1
  module EntityStore
2
- VERSION = "0.2.3".freeze
2
+ VERSION = "0.2.4".freeze
3
3
  end
@@ -11,6 +11,12 @@ class DummySubscriber
11
11
  end
12
12
  end
13
13
 
14
+ class DummyAllSubscriber
15
+ def all_events
16
+
17
+ end
18
+ end
19
+
14
20
  describe EventBus do
15
21
  before(:each) do
16
22
  @entity_type = random_string
@@ -19,10 +25,12 @@ describe EventBus do
19
25
  end
20
26
  describe ".publish" do
21
27
  before(:each) do
22
- @subscriber = mock("Subscriber", :dummy_event => true)
28
+ @subscriber = DummySubscriber.new
23
29
  DummySubscriber.stub(:new) { @subscriber }
24
30
  @subscriber_class2 = mock("SubscriberClass", :instance_methods => ['bilge'], :name => "SubscriberClass")
25
- @event_bus.stub(:subscribers).and_return([DummySubscriber, @subscriber_class2])
31
+ @all_subscriber = DummyAllSubscriber.new
32
+ DummyAllSubscriber.stub(:new) { @all_subscriber }
33
+ @event_bus.stub(:subscribers).and_return([DummySubscriber, @subscriber_class2, DummyAllSubscriber])
26
34
  @event_bus.stub(:publish_to_feed)
27
35
  end
28
36
 
@@ -36,6 +44,10 @@ describe EventBus do
36
44
  @subscriber_class2.should_not_receive(:new)
37
45
  subject
38
46
  end
47
+ it "should call the all method of the all subscriber" do
48
+ @all_subscriber.should_receive(:all_events).with(@event)
49
+ subject
50
+ end
39
51
  it "publishes event to the external event push" do
40
52
  @event_bus.should_receive(:publish_to_feed).with(@entity_type, @event)
41
53
  subject
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: entity_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Bird
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-27 00:00:00.000000000 Z
11
+ date: 2013-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mongo
@@ -104,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
104
  version: '0'
105
105
  requirements: []
106
106
  rubyforge_project:
107
- rubygems_version: 2.0.3
107
+ rubygems_version: 2.1.2
108
108
  signing_key:
109
109
  specification_version: 4
110
110
  summary: Event sourced entity store with a replaceable body
@@ -119,3 +119,4 @@ test_files:
119
119
  - spec/entity_store/store_spec.rb
120
120
  - spec/entity_store_spec.rb
121
121
  - spec/spec_helper.rb
122
+ has_rdoc: