celluloid_pubsub 0.0.20 → 0.0.21

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: 6f2cc5d47821ffd7978565d41a340327ab51b6fa
4
- data.tar.gz: dee1d542db5124599409140c02e6f1f3c14a4552
3
+ metadata.gz: 9465c4977a3bc3e524ad74ede798b375706d2995
4
+ data.tar.gz: 488e312ddd2a283eb3c04ad688c7446c0af569ae
5
5
  SHA512:
6
- metadata.gz: f1e2d9aa26ebef0c3444648016876a8365e99c04cdbe6d32f9059186512974a9ed1c5efc0835b287565be5e3e93fd721981b24a0d70670a55bfd744b89f62579
7
- data.tar.gz: 8060745c4484bb5d5a8fed2cdfc2c3ba8b02ca80cda63a033e2cde0b0e4567408c3eff56e5280a24539ffcbbf73cd8298f404e82917770affa114fcb4878c0e5
6
+ metadata.gz: 2c7e91caa3c87ba614eb92e585924690108b848c88b342cb83c41ee92d55cfa05cecebe04734a8fccc7dd98b2dfe35b75a5609cd1c186209635f6ffeb0e72c4a
7
+ data.tar.gz: 75fc469556285f61305268b7c0c17666d371da9636b7f236e7b287eef83022f009178216abb3537e7e2767db95c6442672c2454283420dbae8d3f0b28703a376
@@ -22,21 +22,21 @@ Gem::Specification.new do |s|
22
22
  s.add_runtime_dependency 'celluloid-websocket-client', '0.0.1'
23
23
  s.add_runtime_dependency 'activesupport', '~> 4.1', '>= 4.1.0'
24
24
 
25
- s.add_development_dependency 'rspec-rails', '~> 2.0', '>= 2.0'
26
- s.add_development_dependency 'guard', '~> 2.6', '>= 2.6'
27
- s.add_development_dependency 'guard-rspec', '~> 4.2', '>= 4.2'
28
- s.add_development_dependency 'simplecov', '~> 0.9', '>= 0.9'
25
+ s.add_development_dependency 'rspec-rails', '~> 3.3', '>= 3.3'
26
+ s.add_development_dependency 'guard', '~> 2.13', '>= 2.13'
27
+ s.add_development_dependency 'guard-rspec', '~> 4.6', '>= 4.6'
28
+ s.add_development_dependency 'simplecov', '~> 0.10', '>= 0.10'
29
29
  s.add_development_dependency 'simplecov-summary', '~> 0.0.4', '>= 0.0.4'
30
30
  s.add_development_dependency 'mocha', '~> 1.1', '>= 1.1'
31
31
  s.add_development_dependency 'coveralls', '~> 0.7', '>= 0.7'
32
32
  s.add_development_dependency 'rvm-tester', '~> 1.1', '>= 1.1'
33
33
 
34
- s.add_development_dependency 'rubocop', '0.29'
35
- s.add_development_dependency 'phare', '~> 0.6', '>= 0.6'
34
+ s.add_development_dependency 'rubocop', '~> 0.33', '>= 0.33'
35
+ s.add_development_dependency 'phare', '~> 0.7', '>= 0.7'
36
36
  s.add_development_dependency 'yard', '~> 0.8', '>= 0.8.7'
37
37
  s.add_development_dependency 'yard-rspec', '~> 0.1', '>= 0.1'
38
- s.add_development_dependency 'redcarpet', '~> 3.2', '>= 3.2.2'
38
+ s.add_development_dependency 'redcarpet', '~> 3.3', '>= 3.3'
39
39
  s.add_development_dependency 'github-markup', '~> 1.3', '>= 1.3.3'
40
- s.add_development_dependency 'inch', '~> 0.5', '>= 0.5.10'
40
+ s.add_development_dependency 'inch', '~> 0.6', '>= 0.6'
41
41
  s.add_development_dependency 'guard-inch', '~> 0.1', '>= 0.1.0'
42
42
  end
@@ -19,9 +19,7 @@ class Subscriber
19
19
  include Celluloid::Logger
20
20
 
21
21
  def initialize(options = {})
22
- @client = CelluloidPubsub::Client.connect({ actor: Actor.current }.merge(options)) do |ws|
23
- ws.subscribe('test_channel') # this will execute after the connection is opened
24
- end
22
+ @client = CelluloidPubsub::Client.connect({ actor: Actor.current, channel: 'test_channel' }.merge(options))
25
23
  end
26
24
 
27
25
  def on_message(message)
@@ -46,9 +44,7 @@ class Publisher
46
44
  include Celluloid::Logger
47
45
 
48
46
  def initialize(options = {})
49
- @client = CelluloidPubsub::Client.connect({ actor: Actor.current }.merge(options)) do |ws|
50
- ws.subscribe('test_channel2') # this will execute after the connection is opened
51
- end
47
+ @client = CelluloidPubsub::Client.connect({ actor: Actor.current, channel: 'test_channel2' }.merge(options))
52
48
  @client.publish('test_channel', 'data' => 'my_message') # the message needs to be a Hash
53
49
  end
54
50
 
@@ -28,7 +28,7 @@ module CelluloidPubsub
28
28
  class PubSubWorker
29
29
  include Celluloid
30
30
  include Celluloid::Logger
31
- attr_accessor :actor, :connect_blk, :client, :options, :hostname, :port, :path
31
+ attr_accessor :actor, :client, :options, :hostname, :port, :path, :channel
32
32
 
33
33
  # receives a list of options that are used to connect to the webserver and an actor to which the callbacks are delegated to
34
34
  # when receiving messages from a channel
@@ -44,10 +44,10 @@ module CelluloidPubsub
44
44
  # @return [void]
45
45
  #
46
46
  # @api public
47
- def initialize(options, &connect_blk)
47
+ def initialize(options)
48
48
  parse_options(options)
49
49
  raise "#{self}: Please provide an actor in the options list!!!" if @actor.blank?
50
- @connect_blk = connect_blk
50
+ raise "#{self}: Please provide an channel in the options list!!!" if @channel.blank?
51
51
  @client = Celluloid::WebSocket::Client.new("ws://#{@hostname}:#{@port}#{@path}", Actor.current)
52
52
  end
53
53
 
@@ -66,6 +66,7 @@ module CelluloidPubsub
66
66
  raise 'Options is not a hash' unless options.is_a?(Hash)
67
67
  @options = options.stringify_keys!
68
68
  @actor = @options.fetch('actor', nil)
69
+ @channel = @options.fetch('channel', nil)
69
70
  @hostname = @options.fetch('hostname', CelluloidPubsub::WebServer::HOST)
70
71
  @port = @options.fetch('port', CelluloidPubsub::WebServer::PORT)
71
72
  @path = @options.fetch('path', CelluloidPubsub::WebServer::PATH)
@@ -147,6 +148,7 @@ module CelluloidPubsub
147
148
  def unsubscribe_all
148
149
  send_action('unsubscribe_all')
149
150
  end
151
+
150
152
  # callback executes after connection is opened and delegates action to actor
151
153
  #
152
154
  # @return [void]
@@ -154,7 +156,7 @@ module CelluloidPubsub
154
156
  # @api public
155
157
  def on_open
156
158
  debug("#{self.class} websocket connection opened") if debug_enabled?
157
- @connect_blk.call Actor.current
159
+ async.subscribe(@channel)
158
160
  end
159
161
 
160
162
  # callback executes when actor receives a message from a subscribed channel
@@ -245,8 +247,8 @@ module CelluloidPubsub
245
247
  # @return [CelluloidPubsub::Client::PubSubWorker]
246
248
  #
247
249
  # @api public
248
- def self.connect(options = {}, &connect_blk)
249
- CelluloidPubsub::Client::PubSubWorker.new(options, &connect_blk)
250
+ def self.connect(options = {})
251
+ CelluloidPubsub::Client::PubSubWorker.new(options)
250
252
  end
251
253
  end
252
254
  end
@@ -17,7 +17,7 @@ module CelluloidPubsub
17
17
  # minor release version
18
18
  MINOR = 0
19
19
  # tiny release version
20
- TINY = 20
20
+ TINY = 21
21
21
  # prelease version ( set this only if it is a prelease)
22
22
  PRE = nil
23
23
 
@@ -10,7 +10,7 @@ describe CelluloidPubsub::Client do
10
10
  expected = nil
11
11
  CelluloidPubsub::Client::PubSubWorker.stubs(:new).returns(expected)
12
12
  res = CelluloidPubsub::Client.connect(options, &blk)
13
- res.should eq expected
13
+ expect(res).to eq expected
14
14
  end
15
15
  end
16
16
 
@@ -19,11 +19,12 @@ describe CelluloidPubsub::Client::PubSubWorker do
19
19
  let(:options) { {} }
20
20
  let(:socket) { mock }
21
21
  let(:actor) { mock }
22
+ let(:channel) { 'some_channel' }
22
23
 
23
24
  before(:each) do
24
25
  Celluloid::WebSocket::Client.stubs(:new).returns(socket)
25
26
  socket.stubs(:text)
26
- @worker = CelluloidPubsub::Client::PubSubWorker.new({ 'actor' => actor, enable_debug: true }, &blk)
27
+ @worker = CelluloidPubsub::Client::PubSubWorker.new({ 'actor' => actor, channel: channel, enable_debug: true }, &blk)
27
28
  @worker.stubs(:client).returns(socket)
28
29
  @worker.stubs(:debug)
29
30
  @worker.stubs(:async).returns(@worker)
@@ -32,8 +33,8 @@ describe CelluloidPubsub::Client::PubSubWorker do
32
33
 
33
34
  describe '#initialize' do
34
35
  it 'creates a object' do
35
- @worker.connect_blk.should_not be_nil
36
- @worker.actor.should eq actor
36
+ expect(@worker.channel).to eq channel
37
+ expect(@worker.actor).to eq actor
37
38
  end
38
39
  end
39
40
 
@@ -46,25 +47,25 @@ describe CelluloidPubsub::Client::PubSubWorker do
46
47
 
47
48
  it 'parses options' do
48
49
  @worker.parse_options(custom_options)
49
- @worker.actor.should eq(actor)
50
- @worker.hostname.should eq(hostname)
51
- @worker.port.should eq(port)
52
- @worker.path.should eq(path)
50
+ expect(@worker.actor).to eq(actor)
51
+ expect(@worker.hostname).to eq(hostname)
52
+ expect(@worker.port).to eq(port)
53
+ expect(@worker.path).to eq(path)
53
54
  end
54
55
 
55
56
  it 'sets defaults' do
56
57
  @worker.parse_options({})
57
- @worker.actor.should eq(nil)
58
- @worker.hostname.should eq('0.0.0.0')
59
- @worker.port.should eq(1234)
60
- @worker.path.should eq('/ws')
58
+ expect(@worker.actor).to eq(nil)
59
+ expect(@worker.hostname).to eq('0.0.0.0')
60
+ expect(@worker.port).to eq(1234)
61
+ expect(@worker.path).to eq('/ws')
61
62
  end
62
63
  end
63
64
 
64
65
  describe '#debug_enabled?' do
65
66
  it 'checks if debug is enabled' do
66
67
  act = @worker.debug_enabled?
67
- act.should eq(true)
68
+ expect(act).to eq(true)
68
69
  end
69
70
  end
70
71
 
@@ -89,14 +90,14 @@ describe CelluloidPubsub::Client::PubSubWorker do
89
90
  message.expects(:present?).returns(true)
90
91
  message.stubs(:[]).with('client_action').returns('successful_subscription')
91
92
  actual = @worker.succesfull_subscription?(message)
92
- actual.should eq(true)
93
+ expect(actual).to eq(true)
93
94
  end
94
95
 
95
96
  it 'checks the message and returns false' do
96
97
  message.expects(:present?).returns(true)
97
98
  message.stubs(:[]).with('client_action').returns('something_else')
98
99
  actual = @worker.succesfull_subscription?(message)
99
- actual.should eq(false)
100
+ expect(actual).to eq(false)
100
101
  end
101
102
  end
102
103
 
@@ -113,7 +114,7 @@ describe CelluloidPubsub::Client::PubSubWorker do
113
114
  let(:channel) { 'some_channel' }
114
115
  let(:data) { 'some_message' }
115
116
  it 'chats with the server' do
116
- @worker.connect_blk.expects(:call)
117
+ @worker.expects(:subscribe).with(channel)
117
118
  @worker.on_open
118
119
  end
119
120
  end
@@ -1,214 +1,214 @@
1
- # encoding:utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe CelluloidPubsub::Reactor do
6
- let(:websocket) { mock }
7
- let(:server) { mock }
8
-
9
- before(:each) do
10
- subject.stubs(:async).returns(subject)
11
- server.stubs(:debug_enabled?).returns(false)
12
- server.stubs(:async).returns(server)
13
- server.stubs(:handle_dispatched_message)
14
- server.stubs(:subscribers).returns({})
15
- websocket.stubs(:read)
16
- subject.stubs(:inspect).returns(subject)
17
- subject.stubs(:run)
18
- subject.work(websocket, server)
19
- subject.stubs(:unsubscribe_from_channel).returns(true)
20
- Celluloid::Actor.stubs(:kill).returns(true)
21
- end
22
-
23
- describe '#work' do
24
- it 'works ' do
25
- subject.expects(:run)
26
- subject.work(websocket, server)
27
- subject.websocket.should eq websocket
28
- subject.server.should eq server
29
- subject.channels.should eq []
30
- end
31
- end
32
-
33
- # describe '#rub' do
34
- # let(:data) { 'some message' }
35
- #
36
- # it 'works ' do
37
- # subject.unstub(:run)
38
- # websocket.stubs(:read).returns(data)
39
- # subject.expects(:handle_websocket_message).with(data)
40
- # subject.run
41
- # end
42
- # end
43
-
44
- describe '#parse_json_data' do
45
- let(:data) { 'some message' }
46
- let(:expected) { data.to_json }
47
-
48
- it 'works with hash ' do
49
- JSON.expects(:parse).with(data).returns(expected)
50
- actual = subject.parse_json_data(data)
51
- actual.should eq expected
52
- end
53
-
54
- it 'works with exception parsing ' do
55
- JSON.expects(:parse).with(data).raises(StandardError)
56
- actual = subject.parse_json_data(data)
57
- actual.should eq data
58
- end
59
- end
60
-
61
- describe '#handle_websocket_message' do
62
- let(:data) { 'some message' }
63
- let(:json_data) { { a: 'b' } }
64
-
65
- it 'handle_websocket_message' do
66
- subject.expects(:parse_json_data).with(data).returns(json_data)
67
- subject.expects(:handle_parsed_websocket_message).with(json_data)
68
- subject.handle_websocket_message(data)
69
- end
70
- end
71
-
72
- describe '#handle_parsed_websocket_message' do
73
- it 'handle_websocket_message with a hash' do
74
- data = { 'client_action' => 'b' }
75
- data.expects(:stringify_keys).returns(data)
76
- subject.expects(:delegate_action).with(data)
77
- subject.handle_parsed_websocket_message(data)
78
- end
79
-
80
- it 'handle_websocket_message with something else than a hash' do
81
- data = 'some message'
82
- subject.expects(:handle_unknown_action).with(data)
83
- subject.handle_parsed_websocket_message(data)
84
- end
85
- end
86
-
87
- describe '#delegate_action' do
88
- it 'unsubscribes all' do
89
- data = { 'client_action' => 'unsubscribe_all' }
90
- subject.expects(:unsubscribe_all).returns('bla')
91
- subject.delegate_action(data)
92
- end
93
-
94
- it 'unsubscribes all' do
95
- data = { 'client_action' => 'unsubscribe', 'channel' => 'some channel' }
96
- subject.expects(:unsubscribe).with(data['channel'])
97
- subject.delegate_action(data)
98
- end
99
-
100
- it 'subscribes to channell' do
101
- data = { 'client_action' => 'subscribe', 'channel' => 'some channel' }
102
- subject.expects(:start_subscriber).with(data['channel'], data)
103
- subject.delegate_action(data)
104
- end
105
-
106
- it 'publish' do
107
- data = { 'client_action' => 'publish', 'channel' => 'some channel', 'data' => 'some data' }
108
- server.expects(:publish_event).with(data['channel'], data['data'].to_json)
109
- subject.delegate_action(data)
110
- end
111
-
112
- it 'handles unknown' do
113
- data = { 'client_action' => 'some action', 'channel' => 'some channel' }
114
- subject.expects(:handle_unknown_action).with(data)
115
- subject.delegate_action(data)
116
- end
117
- end
118
-
119
- describe '#handle_unknown_action' do
120
- it 'handles unknown' do
121
- data = 'some data'
122
- server.expects(:handle_dispatched_message)
123
- subject.handle_unknown_action(data)
124
- end
125
- end
126
-
127
- describe '#unsubscribe_client' do
128
- let(:channel) { 'some channel' }
129
- it 'returns nil' do
130
- act = subject.unsubscribe('')
131
- act.should eq(nil)
132
- end
133
-
134
- it 'unsubscribes' do
135
- subject.channels.stubs(:blank?).returns(false)
136
- subject.channels.expects(:delete).with(channel)
137
- act = subject.unsubscribe(channel)
138
- act.should eq(nil)
139
- end
140
-
141
- it 'unsubscribes' do
142
- subject.channels.stubs(:blank?).returns(true)
143
- subject.websocket.expects(:close)
144
- act = subject.unsubscribe(channel)
145
- act.should eq(nil)
146
- end
147
-
148
- it 'unsubscribes' do
149
- subject.channels.stubs(:blank?).returns(false)
150
- subject.channels.stubs(:delete)
151
- server.stubs(:subscribers).returns("#{channel}" => [{ reactor: subject }])
152
- subject.unsubscribe(channel)
153
- server.subscribers[channel].should eq([])
154
- end
155
- end
156
-
157
- describe '#shutdown' do
158
- it 'shutdowns' do
159
- subject.expects(:terminate)
160
- subject.shutdown
161
- end
162
- end
163
-
164
- describe '#start_subscriber' do
165
- let(:channel) { 'some channel' }
166
- let(:message) { { a: 'b' } }
167
-
168
- it 'subscribes ' do
169
- act = subject.start_subscriber('', message)
170
- act.should eq(nil)
171
- end
172
-
173
- it 'subscribes ' do
174
- subject.stubs(:add_subscriber_to_channel).with(channel, message)
175
- subject.websocket.expects(:<<).with(message.merge('client_action' => 'successful_subscription', 'channel' => channel).to_json)
176
- subject.start_subscriber(channel, message)
177
- end
178
-
179
- # it 'raises error' do
180
- # subject.stubs(:add_subscriber_to_channel).raises(StandardError)
181
- #
182
- # expect do
183
- # subject.start_subscriber(channel, message)
184
- # end.to raise_error(StandardError) { |e|
185
- # expect(e.message).to include(channel)
186
- # }
187
- # end
188
- end
189
-
190
- describe '#add_subscriber_to_channel' do
191
- let(:channel) { 'some channel' }
192
- let(:message) { { a: 'b' } }
193
-
194
- it 'adds subscribed' do
195
- CelluloidPubsub::Registry.channels.stubs(:include?).with(channel).returns(false)
196
- CelluloidPubsub::Registry.channels.expects(:<<).with(channel)
197
- server.subscribers[channel] = []
198
- server.subscribers[channel].expects(:<<).with(reactor: subject, message: message)
199
- subject.add_subscriber_to_channel(channel, message)
200
- subject.channels.should include(channel)
201
- end
202
- end
203
-
204
- describe '#unsubscribe_all' do
205
- let(:channel) { 'some channel' }
206
- let(:message) { { a: 'b' } }
207
-
208
- it 'adds subscribed' do
209
- CelluloidPubsub::Registry.stubs(:channels).returns([channel])
210
- subject.expects(:unsubscribe_from_channel).with(channel)
211
- subject.unsubscribe_all
212
- end
213
- end
214
- end
1
+ # encoding:utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe CelluloidPubsub::Reactor do
6
+ let(:websocket) { mock }
7
+ let(:server) { mock }
8
+
9
+ before(:each) do
10
+ subject.stubs(:async).returns(subject)
11
+ server.stubs(:debug_enabled?).returns(false)
12
+ server.stubs(:async).returns(server)
13
+ server.stubs(:handle_dispatched_message)
14
+ server.stubs(:subscribers).returns({})
15
+ websocket.stubs(:read)
16
+ subject.stubs(:inspect).returns(subject)
17
+ subject.stubs(:run)
18
+ subject.work(websocket, server)
19
+ subject.stubs(:unsubscribe_from_channel).returns(true)
20
+ Celluloid::Actor.stubs(:kill).returns(true)
21
+ end
22
+
23
+ describe '#work' do
24
+ it 'works ' do
25
+ subject.expects(:run)
26
+ subject.work(websocket, server)
27
+ expect(subject.websocket).to eq websocket
28
+ expect(subject.server).to eq server
29
+ expect(subject.channels).to eq []
30
+ end
31
+ end
32
+
33
+ # describe '#rub' do
34
+ # let(:data) { 'some message' }
35
+ #
36
+ # it 'works ' do
37
+ # subject.unstub(:run)
38
+ # websocket.stubs(:read).returns(data)
39
+ # subject.expects(:handle_websocket_message).with(data)
40
+ # subject.run
41
+ # end
42
+ # end
43
+
44
+ describe '#parse_json_data' do
45
+ let(:data) { 'some message' }
46
+ let(:expected) { data.to_json }
47
+
48
+ it 'works with hash ' do
49
+ JSON.expects(:parse).with(data).returns(expected)
50
+ actual = subject.parse_json_data(data)
51
+ expect(actual).to eq expected
52
+ end
53
+
54
+ it 'works with exception parsing ' do
55
+ JSON.expects(:parse).with(data).raises(StandardError)
56
+ actual = subject.parse_json_data(data)
57
+ expect(actual).to eq data
58
+ end
59
+ end
60
+
61
+ describe '#handle_websocket_message' do
62
+ let(:data) { 'some message' }
63
+ let(:json_data) { { a: 'b' } }
64
+
65
+ it 'handle_websocket_message' do
66
+ subject.expects(:parse_json_data).with(data).returns(json_data)
67
+ subject.expects(:handle_parsed_websocket_message).with(json_data)
68
+ subject.handle_websocket_message(data)
69
+ end
70
+ end
71
+
72
+ describe '#handle_parsed_websocket_message' do
73
+ it 'handle_websocket_message with a hash' do
74
+ data = { 'client_action' => 'b' }
75
+ data.expects(:stringify_keys).returns(data)
76
+ subject.expects(:delegate_action).with(data)
77
+ subject.handle_parsed_websocket_message(data)
78
+ end
79
+
80
+ it 'handle_websocket_message with something else than a hash' do
81
+ data = 'some message'
82
+ subject.expects(:handle_unknown_action).with(data)
83
+ subject.handle_parsed_websocket_message(data)
84
+ end
85
+ end
86
+
87
+ describe '#delegate_action' do
88
+ it 'unsubscribes all' do
89
+ data = { 'client_action' => 'unsubscribe_all' }
90
+ subject.expects(:unsubscribe_all).returns('bla')
91
+ subject.delegate_action(data)
92
+ end
93
+
94
+ it 'unsubscribes all' do
95
+ data = { 'client_action' => 'unsubscribe', 'channel' => 'some channel' }
96
+ subject.expects(:unsubscribe).with(data['channel'])
97
+ subject.delegate_action(data)
98
+ end
99
+
100
+ it 'subscribes to channell' do
101
+ data = { 'client_action' => 'subscribe', 'channel' => 'some channel' }
102
+ subject.expects(:start_subscriber).with(data['channel'], data)
103
+ subject.delegate_action(data)
104
+ end
105
+
106
+ it 'publish' do
107
+ data = { 'client_action' => 'publish', 'channel' => 'some channel', 'data' => 'some data' }
108
+ server.expects(:publish_event).with(data['channel'], data['data'].to_json)
109
+ subject.delegate_action(data)
110
+ end
111
+
112
+ it 'handles unknown' do
113
+ data = { 'client_action' => 'some action', 'channel' => 'some channel' }
114
+ subject.expects(:handle_unknown_action).with(data)
115
+ subject.delegate_action(data)
116
+ end
117
+ end
118
+
119
+ describe '#handle_unknown_action' do
120
+ it 'handles unknown' do
121
+ data = 'some data'
122
+ server.expects(:handle_dispatched_message)
123
+ subject.handle_unknown_action(data)
124
+ end
125
+ end
126
+
127
+ describe '#unsubscribe_client' do
128
+ let(:channel) { 'some channel' }
129
+ it 'returns nil' do
130
+ act = subject.unsubscribe('')
131
+ expect(act).to eq(nil)
132
+ end
133
+
134
+ it 'unsubscribes' do
135
+ subject.channels.stubs(:blank?).returns(false)
136
+ subject.channels.expects(:delete).with(channel)
137
+ act = subject.unsubscribe(channel)
138
+ expect(act).to eq(nil)
139
+ end
140
+
141
+ it 'unsubscribes' do
142
+ subject.channels.stubs(:blank?).returns(true)
143
+ subject.websocket.expects(:close)
144
+ act = subject.unsubscribe(channel)
145
+ expect(act).to eq(nil)
146
+ end
147
+
148
+ it 'unsubscribes' do
149
+ subject.channels.stubs(:blank?).returns(false)
150
+ subject.channels.stubs(:delete)
151
+ server.stubs(:subscribers).returns("#{channel}" => [{ reactor: subject }])
152
+ subject.unsubscribe(channel)
153
+ expect(server.subscribers[channel]).to eq([])
154
+ end
155
+ end
156
+
157
+ describe '#shutdown' do
158
+ it 'shutdowns' do
159
+ subject.expects(:terminate)
160
+ subject.shutdown
161
+ end
162
+ end
163
+
164
+ describe '#start_subscriber' do
165
+ let(:channel) { 'some channel' }
166
+ let(:message) { { a: 'b' } }
167
+
168
+ it 'subscribes ' do
169
+ act = subject.start_subscriber('', message)
170
+ expect(act).to eq(nil)
171
+ end
172
+
173
+ it 'subscribes ' do
174
+ subject.stubs(:add_subscriber_to_channel).with(channel, message)
175
+ subject.websocket.expects(:<<).with(message.merge('client_action' => 'successful_subscription', 'channel' => channel).to_json)
176
+ subject.start_subscriber(channel, message)
177
+ end
178
+
179
+ # it 'raises error' do
180
+ # subject.stubs(:add_subscriber_to_channel).raises(StandardError)
181
+ #
182
+ # expect do
183
+ # subject.start_subscriber(channel, message)
184
+ # end.to raise_error(StandardError) { |e|
185
+ # expect(e.message).to include(channel)
186
+ # }
187
+ # end
188
+ end
189
+
190
+ describe '#add_subscriber_to_channel' do
191
+ let(:channel) { 'some channel' }
192
+ let(:message) { { a: 'b' } }
193
+
194
+ it 'adds subscribed' do
195
+ CelluloidPubsub::Registry.channels.stubs(:include?).with(channel).returns(false)
196
+ CelluloidPubsub::Registry.channels.expects(:<<).with(channel)
197
+ server.subscribers[channel] = []
198
+ server.subscribers[channel].expects(:<<).with(reactor: subject, message: message)
199
+ subject.add_subscriber_to_channel(channel, message)
200
+ expect(subject.channels).to include(channel)
201
+ end
202
+ end
203
+
204
+ describe '#unsubscribe_all' do
205
+ let(:channel) { 'some channel' }
206
+ let(:message) { { a: 'b' } }
207
+
208
+ it 'adds subscribed' do
209
+ CelluloidPubsub::Registry.stubs(:channels).returns([channel])
210
+ subject.expects(:unsubscribe_from_channel).with(channel)
211
+ subject.unsubscribe_all
212
+ end
213
+ end
214
+ end
@@ -5,6 +5,6 @@ require 'spec_helper'
5
5
  describe CelluloidPubsub::Registry do
6
6
  it 'has class atributes' do
7
7
  act = CelluloidPubsub::Registry.respond_to?(:channels)
8
- act.should eq true
8
+ expect(act).to eq true
9
9
  end
10
10
  end
@@ -1,49 +1,49 @@
1
- # encoding:utf-8
1
+ # encoding:utf-8
2
2
 
3
- require 'spec_helper'
3
+ require 'spec_helper'
4
4
 
5
- describe CelluloidPubsub::WebServer do
6
- it 'should have host constant' do
7
- CelluloidPubsub::WebServer::HOST.should eq('0.0.0.0')
8
- end
5
+ describe CelluloidPubsub::WebServer do
6
+ it 'should have host constant' do
7
+ expect(CelluloidPubsub::WebServer::HOST).to eq('0.0.0.0')
8
+ end
9
9
 
10
- it 'should have host constant' do
11
- CelluloidPubsub::WebServer::PORT.should eq(1234)
12
- end
10
+ it 'should have host constant' do
11
+ expect(CelluloidPubsub::WebServer::PORT).to eq(1234)
12
+ end
13
13
 
14
- it 'should have host constant' do
15
- CelluloidPubsub::WebServer::PATH.should eq('/ws')
16
- end
17
- let(:options) { {} }
18
- let(:web_server) { mock }
14
+ it 'should have host constant' do
15
+ expect(CelluloidPubsub::WebServer::PATH).to eq('/ws')
16
+ end
17
+ let(:options) { {} }
18
+ let(:web_server) { mock }
19
19
 
20
- before(:each) do
21
- CelluloidPubsub::WebServer.stubs(:new).returns(web_server)
22
- end
20
+ before(:each) do
21
+ CelluloidPubsub::WebServer.stubs(:new).returns(web_server)
22
+ end
23
23
 
24
- # it '#initialize with default values ' do
25
- # web_server.parse_options({})
26
- # web_server.hostname.should eq(CelluloidPubsub::WebServer::HOST)
27
- # web_server.port.should eq(CelluloidPubsub::WebServer::PORT)
28
- # web_server.path.should eq(CelluloidPubsub::WebServer::PATH)
29
- # web_server.backlog.should eq(1024)
30
- # web_server.spy.should eq(false)
31
- # end
32
- #
33
- # describe '#with custom values' do
34
- # let(:hostname) { '192.0.0.1' }
35
- # let(:port) { 13_456 }
36
- # let(:path) { '/pathy' }
37
- # let(:backlog) { 2048 }
38
- # let(:spy) { true }
39
- #
40
- # it '#initialize with custom values ' do
41
- # web_server.parse_options(hostname: hostname, port: port, path: path, spy: spy, backlog: backlog)
42
- # web_server.hostname.should eq(hostname)
43
- # web_server.port.should eq(port)
44
- # web_server.path.should eq(path)
45
- # web_server.backlog.should eq(backlog)
46
- # web_server.spy.should eq(spy)
47
- # end
48
- # end
49
- end
24
+ # it '#initialize with default values ' do
25
+ # web_server.parse_options({})
26
+ # web_server.hostname.should eq(CelluloidPubsub::WebServer::HOST)
27
+ # web_server.port.should eq(CelluloidPubsub::WebServer::PORT)
28
+ # web_server.path.should eq(CelluloidPubsub::WebServer::PATH)
29
+ # web_server.backlog.should eq(1024)
30
+ # web_server.spy.should eq(false)
31
+ # end
32
+ #
33
+ # describe '#with custom values' do
34
+ # let(:hostname) { '192.0.0.1' }
35
+ # let(:port) { 13_456 }
36
+ # let(:path) { '/pathy' }
37
+ # let(:backlog) { 2048 }
38
+ # let(:spy) { true }
39
+ #
40
+ # it '#initialize with custom values ' do
41
+ # web_server.parse_options(hostname: hostname, port: port, path: path, spy: spy, backlog: backlog)
42
+ # web_server.hostname.should eq(hostname)
43
+ # web_server.port.should eq(port)
44
+ # web_server.path.should eq(path)
45
+ # web_server.backlog.should eq(backlog)
46
+ # web_server.spy.should eq(spy)
47
+ # end
48
+ # end
49
+ end
data/spec/spec_helper.rb CHANGED
@@ -28,8 +28,6 @@ end
28
28
  require 'bundler/setup'
29
29
  require 'celluloid_pubsub'
30
30
 
31
- require 'rspec/autorun'
32
-
33
31
  RSpec.configure do |config|
34
32
  require 'rspec/expectations'
35
33
  config.include RSpec::Matchers
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: celluloid_pubsub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.20
4
+ version: 0.0.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - bogdanRada
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-27 00:00:00.000000000 Z
11
+ date: 2015-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: celluloid
@@ -110,80 +110,80 @@ dependencies:
110
110
  requirements:
111
111
  - - "~>"
112
112
  - !ruby/object:Gem::Version
113
- version: '2.0'
113
+ version: '3.3'
114
114
  - - ">="
115
115
  - !ruby/object:Gem::Version
116
- version: '2.0'
116
+ version: '3.3'
117
117
  type: :development
118
118
  prerelease: false
119
119
  version_requirements: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '2.0'
123
+ version: '3.3'
124
124
  - - ">="
125
125
  - !ruby/object:Gem::Version
126
- version: '2.0'
126
+ version: '3.3'
127
127
  - !ruby/object:Gem::Dependency
128
128
  name: guard
129
129
  requirement: !ruby/object:Gem::Requirement
130
130
  requirements:
131
131
  - - "~>"
132
132
  - !ruby/object:Gem::Version
133
- version: '2.6'
133
+ version: '2.13'
134
134
  - - ">="
135
135
  - !ruby/object:Gem::Version
136
- version: '2.6'
136
+ version: '2.13'
137
137
  type: :development
138
138
  prerelease: false
139
139
  version_requirements: !ruby/object:Gem::Requirement
140
140
  requirements:
141
141
  - - "~>"
142
142
  - !ruby/object:Gem::Version
143
- version: '2.6'
143
+ version: '2.13'
144
144
  - - ">="
145
145
  - !ruby/object:Gem::Version
146
- version: '2.6'
146
+ version: '2.13'
147
147
  - !ruby/object:Gem::Dependency
148
148
  name: guard-rspec
149
149
  requirement: !ruby/object:Gem::Requirement
150
150
  requirements:
151
151
  - - "~>"
152
152
  - !ruby/object:Gem::Version
153
- version: '4.2'
153
+ version: '4.6'
154
154
  - - ">="
155
155
  - !ruby/object:Gem::Version
156
- version: '4.2'
156
+ version: '4.6'
157
157
  type: :development
158
158
  prerelease: false
159
159
  version_requirements: !ruby/object:Gem::Requirement
160
160
  requirements:
161
161
  - - "~>"
162
162
  - !ruby/object:Gem::Version
163
- version: '4.2'
163
+ version: '4.6'
164
164
  - - ">="
165
165
  - !ruby/object:Gem::Version
166
- version: '4.2'
166
+ version: '4.6'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: simplecov
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '0.9'
173
+ version: '0.10'
174
174
  - - ">="
175
175
  - !ruby/object:Gem::Version
176
- version: '0.9'
176
+ version: '0.10'
177
177
  type: :development
178
178
  prerelease: false
179
179
  version_requirements: !ruby/object:Gem::Requirement
180
180
  requirements:
181
181
  - - "~>"
182
182
  - !ruby/object:Gem::Version
183
- version: '0.9'
183
+ version: '0.10'
184
184
  - - ">="
185
185
  - !ruby/object:Gem::Version
186
- version: '0.9'
186
+ version: '0.10'
187
187
  - !ruby/object:Gem::Dependency
188
188
  name: simplecov-summary
189
189
  requirement: !ruby/object:Gem::Requirement
@@ -268,36 +268,42 @@ dependencies:
268
268
  name: rubocop
269
269
  requirement: !ruby/object:Gem::Requirement
270
270
  requirements:
271
- - - '='
271
+ - - "~>"
272
+ - !ruby/object:Gem::Version
273
+ version: '0.33'
274
+ - - ">="
272
275
  - !ruby/object:Gem::Version
273
- version: '0.29'
276
+ version: '0.33'
274
277
  type: :development
275
278
  prerelease: false
276
279
  version_requirements: !ruby/object:Gem::Requirement
277
280
  requirements:
278
- - - '='
281
+ - - "~>"
279
282
  - !ruby/object:Gem::Version
280
- version: '0.29'
283
+ version: '0.33'
284
+ - - ">="
285
+ - !ruby/object:Gem::Version
286
+ version: '0.33'
281
287
  - !ruby/object:Gem::Dependency
282
288
  name: phare
283
289
  requirement: !ruby/object:Gem::Requirement
284
290
  requirements:
285
291
  - - "~>"
286
292
  - !ruby/object:Gem::Version
287
- version: '0.6'
293
+ version: '0.7'
288
294
  - - ">="
289
295
  - !ruby/object:Gem::Version
290
- version: '0.6'
296
+ version: '0.7'
291
297
  type: :development
292
298
  prerelease: false
293
299
  version_requirements: !ruby/object:Gem::Requirement
294
300
  requirements:
295
301
  - - "~>"
296
302
  - !ruby/object:Gem::Version
297
- version: '0.6'
303
+ version: '0.7'
298
304
  - - ">="
299
305
  - !ruby/object:Gem::Version
300
- version: '0.6'
306
+ version: '0.7'
301
307
  - !ruby/object:Gem::Dependency
302
308
  name: yard
303
309
  requirement: !ruby/object:Gem::Requirement
@@ -344,20 +350,20 @@ dependencies:
344
350
  requirements:
345
351
  - - "~>"
346
352
  - !ruby/object:Gem::Version
347
- version: '3.2'
353
+ version: '3.3'
348
354
  - - ">="
349
355
  - !ruby/object:Gem::Version
350
- version: 3.2.2
356
+ version: '3.3'
351
357
  type: :development
352
358
  prerelease: false
353
359
  version_requirements: !ruby/object:Gem::Requirement
354
360
  requirements:
355
361
  - - "~>"
356
362
  - !ruby/object:Gem::Version
357
- version: '3.2'
363
+ version: '3.3'
358
364
  - - ">="
359
365
  - !ruby/object:Gem::Version
360
- version: 3.2.2
366
+ version: '3.3'
361
367
  - !ruby/object:Gem::Dependency
362
368
  name: github-markup
363
369
  requirement: !ruby/object:Gem::Requirement
@@ -384,20 +390,20 @@ dependencies:
384
390
  requirements:
385
391
  - - "~>"
386
392
  - !ruby/object:Gem::Version
387
- version: '0.5'
393
+ version: '0.6'
388
394
  - - ">="
389
395
  - !ruby/object:Gem::Version
390
- version: 0.5.10
396
+ version: '0.6'
391
397
  type: :development
392
398
  prerelease: false
393
399
  version_requirements: !ruby/object:Gem::Requirement
394
400
  requirements:
395
401
  - - "~>"
396
402
  - !ruby/object:Gem::Version
397
- version: '0.5'
403
+ version: '0.6'
398
404
  - - ">="
399
405
  - !ruby/object:Gem::Version
400
- version: 0.5.10
406
+ version: '0.6'
401
407
  - !ruby/object:Gem::Dependency
402
408
  name: guard-inch
403
409
  requirement: !ruby/object:Gem::Requirement