nodevent 3.0.3 → 3.0.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.
@@ -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