nodevent 3.0.3 → 3.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module Nodevent
2
- VERSION = "3.0.3"
2
+ VERSION = "3.0.4"
3
3
  end
data/lib/nodevent.rb CHANGED
@@ -3,19 +3,46 @@ require 'json'
3
3
 
4
4
  module NoDevent
5
5
  def self.included(base)
6
- base.extend(NoDevent::Emitter)
6
+ raise "No longer supported, Please include NoDevent::Base instead"
7
7
  end
8
+ module Base
9
+ def self.included(base)
10
+ base.extend(NoDevent::Base)
11
+ end
12
+
13
+ class << self
14
+ def emit(name, message)
15
+ NoDevent::Emitter.emit(self.room, name, message)
16
+ end
17
+ def room(obj)
18
+ NoDevent::Emitter.room(self)
19
+ end
20
+ def room_key(expires)
21
+ Emitter.room_key(self.room, expires)
22
+ end
23
+ end
8
24
 
9
- def emit(name, message=nil)
10
- Emitter.emit(self, name, message || self)
11
- end
25
+ def emit(name, message=nil)
26
+ Emitter.emit(self.room, name, message || self)
27
+ end
28
+
29
+ def room
30
+ Emitter.room(self)
31
+ end
32
+
33
+ def room_key(expires)
34
+ Emitter.room_key(self.room, expires)
35
+ end
12
36
 
13
- def room
14
- Emitter.room(self)
15
- end
16
37
 
17
- def room_key(expires)
18
- Emitter.room_key(self, expires)
38
+ def nodevent_create
39
+ NoDevent::Emitter.emit(self.class.name, 'create', self)
40
+ end
41
+
42
+ def nodevent_update
43
+ self.emit('update')
44
+ end
45
+
19
46
  end
20
47
 
21
48
 
@@ -39,7 +66,7 @@ module NoDevent
39
66
 
40
67
  def config
41
68
  @@config ||= Hash.new({
42
- :host => "http://localhost:8080",
69
+ :host => "http://loadsfcalhost:8080",
43
70
  :namespace => "/nodevent"
44
71
  })
45
72
  @@config
@@ -48,6 +75,7 @@ module NoDevent
48
75
  def emit(room, name, message)
49
76
  room = NoDevent::Emitter.room(room)
50
77
 
78
+ puts "NoDevent::emit: #{room}, #{name}, #{message}"
51
79
  $redis.publish("events",
52
80
  { :room => room,
53
81
  :event => name,
data/spec/base_spec.rb ADDED
@@ -0,0 +1,165 @@
1
+ require 'spec_helper'
2
+
3
+ module ActiveRecord
4
+ class Base;end
5
+ end
6
+
7
+ class ModelMock < ActiveRecord::Base
8
+ include NoDevent::Base
9
+
10
+ attr_accessor :to_param
11
+
12
+ def initialize(param)
13
+ @to_param = param
14
+ end
15
+ def to_json(options)
16
+ '{"id":"#{to_param}"}'
17
+ end
18
+ end
19
+
20
+ NoDevent::Emitter.config = {
21
+ :host => "http://thehost",
22
+ :namespace => "thenamespace",
23
+ :secret => "asdf"
24
+ }
25
+
26
+ describe NoDevent do
27
+ describe "the class" do
28
+
29
+ it { ModelMock.room.should == "ModelMock" }
30
+
31
+ it "should emit to the right room" do
32
+ $redis.should_receive(:publish).with("events",
33
+ {
34
+ :room => "ModelMock",
35
+ :event => 'theevent',
36
+ :message => 'themessage'}.to_json)
37
+
38
+ ModelMock.emit('theevent', 'themessage')
39
+ end
40
+
41
+ it "should create a key from the right room" do
42
+ t = Time.now
43
+ ts = (t.to_f*1000).to_i
44
+ ModelMock.room_key(t).should ==
45
+ (Digest::SHA2.new << "ModelMock" << ts.to_s << NoDevent::Emitter.config[:secret]).to_s
46
+ end
47
+
48
+ describe "with a custom room name" do
49
+ before do
50
+ ModelMock.stub(:room => "otherRoom")
51
+ end
52
+
53
+ it { ModelMock.room.should == "otherRoom" }
54
+
55
+ it "should emit to the right room" do
56
+ $redis.should_receive(:publish).with("events",
57
+ {
58
+ :room => "otherRoom",
59
+ :event => 'theevent',
60
+ :message => 'themessage'}.to_json)
61
+
62
+ ModelMock.emit('theevent', 'themessage')
63
+ end
64
+
65
+ it "should create a key from the right room" do
66
+ t = Time.now
67
+ ts = (t.to_f*1000).to_i
68
+ ModelMock.room_key(t).should ==
69
+ (Digest::SHA2.new << ModelMock.room << ts.to_s << NoDevent::Emitter.config[:secret]).to_s
70
+ end
71
+ end
72
+ end
73
+
74
+ describe "an instance of the class" do
75
+ let(:instance) {ModelMock.new( 'theparam') }
76
+
77
+ it { instance.room.should == "ModelMock_theparam" }
78
+ it "should emit to the right room" do
79
+ $redis.should_receive(:publish).with("events",
80
+ {
81
+ :room => "ModelMock_theparam",
82
+ :event => 'theevent',
83
+ :message => 'themessage'}.to_json)
84
+
85
+ instance.emit('theevent', 'themessage')
86
+ end
87
+
88
+ describe "#nodevent_create" do
89
+ it "should emit to the right room" do
90
+ $redis.should_receive(:publish).with("events",
91
+ {
92
+ :room => "ModelMock",
93
+ :event => 'create',
94
+ :message => instance}.to_json)
95
+ instance.nodevent_create
96
+
97
+ end
98
+ end
99
+ describe "#nodevent_update" do
100
+ it "should emit to the right room" do
101
+ $redis.should_receive(:publish).with("events",
102
+ {
103
+ :room => "ModelMock_theparam",
104
+ :event => 'update',
105
+ :message => instance}.to_json)
106
+ instance.nodevent_update
107
+
108
+ end
109
+ end
110
+
111
+ it "should create a key from the right room" do
112
+ t = Time.now
113
+ ts = (t.to_f*1000).to_i
114
+ instance.room_key(t).should ==
115
+ (Digest::SHA2.new << instance.room << ts.to_s << NoDevent::Emitter.config[:secret]).to_s
116
+ end
117
+
118
+ describe "with a custom room name" do
119
+ before do
120
+ instance.stub(:room => "otherRoom")
121
+ end
122
+
123
+ it { instance.room.should == "otherRoom" }
124
+
125
+ it "should emit to the right room" do
126
+ $redis.should_receive(:publish).with("events",
127
+ {
128
+ :room => "otherRoom",
129
+ :event => 'theevent',
130
+ :message => 'themessage'}.to_json)
131
+
132
+ instance.emit('theevent', 'themessage')
133
+ end
134
+
135
+ it "should create a key from the right room" do
136
+ t = Time.now
137
+ ts = (t.to_f*1000).to_i
138
+ instance.room_key(t).should ==
139
+ (Digest::SHA2.new << "otherRoom" << ts.to_s << NoDevent::Emitter.config[:secret]).to_s
140
+ end
141
+ describe "#nodevent_create" do
142
+ it "should emit to the right room" do
143
+ $redis.should_receive(:publish).with("events",
144
+ {
145
+ :room => instance.class.room,
146
+ :event => 'create',
147
+ :message => instance}.to_json)
148
+ instance.nodevent_create
149
+
150
+ end
151
+ end
152
+ describe "#nodevent_update" do
153
+ it "should emit to the right room" do
154
+ $redis.should_receive(:publish).with("events",
155
+ {
156
+ :room => instance.room,
157
+ :event => 'update',
158
+ :message => instance}.to_json)
159
+ instance.nodevent_update
160
+
161
+ end
162
+ end
163
+ end
164
+ end
165
+ end
data/spec/spec_helper.rb CHANGED
@@ -24,4 +24,10 @@ RSpec.configure do |config|
24
24
  # the seed, which is printed after each run.
25
25
  # --seed 1234
26
26
  config.order = 'random'
27
+
28
+ config.before(:suite) do
29
+ $redis = Object.new
30
+ end
27
31
  end
32
+
33
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nodevent
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.3
4
+ version: 3.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-23 00:00:00.000000000 Z
12
+ date: 2012-07-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis
@@ -44,7 +44,8 @@ files:
44
44
  - lib/nodevent.rb
45
45
  - lib/nodevent/version.rb
46
46
  - nodevent.gemspec
47
- - spec/nodevent_spec.rb
47
+ - spec/base_spec.rb
48
+ - spec/emitter_spec.rb
48
49
  - spec/spec_helper.rb
49
50
  homepage: https://github.com/cconstantine/NoDevent
50
51
  licenses: []
@@ -71,5 +72,6 @@ signing_key:
71
72
  specification_version: 3
72
73
  summary: Write a gem summary
73
74
  test_files:
74
- - spec/nodevent_spec.rb
75
+ - spec/base_spec.rb
76
+ - spec/emitter_spec.rb
75
77
  - spec/spec_helper.rb
File without changes