ably 0.6.2 → 0.7.0
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 +4 -4
- data/.rspec +1 -0
- data/.ruby-version.old +1 -0
- data/.travis.yml +0 -2
- data/Rakefile +22 -4
- data/SPEC.md +1676 -0
- data/ably.gemspec +1 -1
- data/lib/ably.rb +0 -8
- data/lib/ably/auth.rb +54 -46
- data/lib/ably/exceptions.rb +19 -5
- data/lib/ably/logger.rb +1 -1
- data/lib/ably/models/error_info.rb +1 -1
- data/lib/ably/models/idiomatic_ruby_wrapper.rb +11 -9
- data/lib/ably/models/message.rb +15 -12
- data/lib/ably/models/message_encoders/base.rb +6 -5
- data/lib/ably/models/message_encoders/base64.rb +1 -0
- data/lib/ably/models/message_encoders/cipher.rb +6 -3
- data/lib/ably/models/message_encoders/json.rb +1 -0
- data/lib/ably/models/message_encoders/utf8.rb +2 -9
- data/lib/ably/models/nil_logger.rb +20 -0
- data/lib/ably/models/paginated_resource.rb +5 -2
- data/lib/ably/models/presence_message.rb +21 -12
- data/lib/ably/models/protocol_message.rb +22 -6
- data/lib/ably/modules/ably.rb +11 -0
- data/lib/ably/modules/async_wrapper.rb +2 -0
- data/lib/ably/modules/conversions.rb +23 -3
- data/lib/ably/modules/encodeable.rb +2 -1
- data/lib/ably/modules/enum.rb +2 -0
- data/lib/ably/modules/event_emitter.rb +7 -1
- data/lib/ably/modules/event_machine_helpers.rb +2 -0
- data/lib/ably/modules/http_helpers.rb +2 -0
- data/lib/ably/modules/model_common.rb +12 -2
- data/lib/ably/modules/state_emitter.rb +76 -0
- data/lib/ably/modules/state_machine.rb +53 -0
- data/lib/ably/modules/statesman_monkey_patch.rb +33 -0
- data/lib/ably/modules/uses_state_machine.rb +74 -0
- data/lib/ably/realtime.rb +4 -2
- data/lib/ably/realtime/channel.rb +51 -58
- data/lib/ably/realtime/channel/channel_manager.rb +91 -0
- data/lib/ably/realtime/channel/channel_state_machine.rb +68 -0
- data/lib/ably/realtime/client.rb +70 -26
- data/lib/ably/realtime/client/incoming_message_dispatcher.rb +31 -13
- data/lib/ably/realtime/client/outgoing_message_dispatcher.rb +1 -1
- data/lib/ably/realtime/connection.rb +135 -92
- data/lib/ably/realtime/connection/connection_manager.rb +216 -33
- data/lib/ably/realtime/connection/connection_state_machine.rb +30 -73
- data/lib/ably/realtime/models/nil_channel.rb +10 -1
- data/lib/ably/realtime/presence.rb +336 -92
- data/lib/ably/rest.rb +2 -2
- data/lib/ably/rest/channel.rb +13 -4
- data/lib/ably/rest/client.rb +138 -38
- data/lib/ably/rest/middleware/logger.rb +24 -3
- data/lib/ably/rest/presence.rb +12 -7
- data/lib/ably/version.rb +1 -1
- data/spec/acceptance/realtime/channel_history_spec.rb +101 -85
- data/spec/acceptance/realtime/channel_spec.rb +461 -120
- data/spec/acceptance/realtime/client_spec.rb +119 -0
- data/spec/acceptance/realtime/connection_failures_spec.rb +499 -0
- data/spec/acceptance/realtime/connection_spec.rb +571 -97
- data/spec/acceptance/realtime/message_spec.rb +347 -333
- data/spec/acceptance/realtime/presence_history_spec.rb +35 -40
- data/spec/acceptance/realtime/presence_spec.rb +769 -239
- data/spec/acceptance/realtime/stats_spec.rb +14 -22
- data/spec/acceptance/realtime/time_spec.rb +16 -20
- data/spec/acceptance/rest/auth_spec.rb +425 -364
- data/spec/acceptance/rest/base_spec.rb +108 -176
- data/spec/acceptance/rest/channel_spec.rb +89 -89
- data/spec/acceptance/rest/channels_spec.rb +30 -32
- data/spec/acceptance/rest/client_spec.rb +273 -0
- data/spec/acceptance/rest/encoders_spec.rb +185 -0
- data/spec/acceptance/rest/message_spec.rb +186 -163
- data/spec/acceptance/rest/presence_spec.rb +150 -111
- data/spec/acceptance/rest/stats_spec.rb +45 -40
- data/spec/acceptance/rest/time_spec.rb +8 -10
- data/spec/rspec_config.rb +10 -1
- data/spec/shared/client_initializer_behaviour.rb +212 -0
- data/spec/{support/model_helper.rb → shared/model_behaviour.rb} +6 -6
- data/spec/{support/protocol_msgbus_helper.rb → shared/protocol_msgbus_behaviour.rb} +1 -1
- data/spec/spec_helper.rb +9 -0
- data/spec/support/api_helper.rb +11 -0
- data/spec/support/event_machine_helper.rb +101 -3
- data/spec/support/markdown_spec_formatter.rb +90 -0
- data/spec/support/private_api_formatter.rb +36 -0
- data/spec/support/protocol_helper.rb +32 -0
- data/spec/support/random_helper.rb +15 -0
- data/spec/support/test_app.rb +4 -0
- data/spec/unit/auth_spec.rb +68 -0
- data/spec/unit/logger_spec.rb +77 -66
- data/spec/unit/models/error_info_spec.rb +1 -1
- data/spec/unit/models/idiomatic_ruby_wrapper_spec.rb +2 -3
- data/spec/unit/models/message_encoders/base64_spec.rb +2 -2
- data/spec/unit/models/message_encoders/cipher_spec.rb +2 -2
- data/spec/unit/models/message_encoders/utf8_spec.rb +2 -46
- data/spec/unit/models/message_spec.rb +160 -15
- data/spec/unit/models/paginated_resource_spec.rb +29 -27
- data/spec/unit/models/presence_message_spec.rb +163 -20
- data/spec/unit/models/protocol_message_spec.rb +43 -8
- data/spec/unit/modules/async_wrapper_spec.rb +2 -3
- data/spec/unit/modules/conversions_spec.rb +1 -1
- data/spec/unit/modules/enum_spec.rb +2 -3
- data/spec/unit/modules/event_emitter_spec.rb +62 -5
- data/spec/unit/modules/state_emitter_spec.rb +283 -0
- data/spec/unit/realtime/channel_spec.rb +107 -2
- data/spec/unit/realtime/channels_spec.rb +1 -0
- data/spec/unit/realtime/client_spec.rb +8 -48
- data/spec/unit/realtime/connection_spec.rb +3 -3
- data/spec/unit/realtime/incoming_message_dispatcher_spec.rb +2 -2
- data/spec/unit/realtime/presence_spec.rb +13 -4
- data/spec/unit/realtime/realtime_spec.rb +0 -11
- data/spec/unit/realtime/websocket_transport_spec.rb +2 -2
- data/spec/unit/rest/channel_spec.rb +109 -0
- data/spec/unit/rest/channels_spec.rb +4 -3
- data/spec/unit/rest/client_spec.rb +30 -125
- data/spec/unit/rest/rest_spec.rb +10 -0
- data/spec/unit/util/crypto_spec.rb +10 -5
- data/spec/unit/util/pub_sub_spec.rb +5 -5
- metadata +44 -12
- data/spec/integration/modules/state_emitter_spec.rb +0 -80
- data/spec/integration/rest/auth.rb +0 -9
@@ -0,0 +1,10 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Ably::Rest do
|
5
|
+
let(:options) { { api_key: 'app.key:secret' } }
|
6
|
+
|
7
|
+
specify 'constructor returns an Ably::Rest::Client' do
|
8
|
+
expect(Ably::Rest.new(options)).to be_instance_of(Ably::Rest::Client)
|
9
|
+
end
|
10
|
+
end
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'msgpack'
|
3
3
|
|
4
4
|
describe Ably::Util::Crypto do
|
5
|
-
let(:seret_key) {
|
5
|
+
let(:seret_key) { random_str }
|
6
6
|
let(:cipher_options) { { key: seret_key } }
|
7
7
|
subject { Ably::Util::Crypto.new(cipher_options) }
|
8
8
|
|
@@ -22,10 +22,15 @@ describe Ably::Util::Crypto do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
context 'encrypts & decrypt' do
|
25
|
-
let(:string) {
|
26
|
-
let(:byte_array) {
|
25
|
+
let(:string) { random_str }
|
26
|
+
let(:byte_array) { random_str.to_msgpack.unpack('C*') }
|
27
27
|
|
28
|
-
specify 'a string' do
|
28
|
+
specify '#encrypt encrypts a string' do
|
29
|
+
encrypted = subject.encrypt(string)
|
30
|
+
expect(subject.decrypt(encrypted)).to eql(string)
|
31
|
+
end
|
32
|
+
|
33
|
+
specify '#decrypt decrypts a string' do
|
29
34
|
encrypted = subject.encrypt(string)
|
30
35
|
expect(subject.decrypt(encrypted)).to eql(string)
|
31
36
|
end
|
@@ -34,7 +39,7 @@ describe Ably::Util::Crypto do
|
|
34
39
|
context 'encrypting an empty string' do
|
35
40
|
let(:empty_string) { '' }
|
36
41
|
|
37
|
-
it 'raises an
|
42
|
+
it 'raises an ArgumentError' do
|
38
43
|
expect { subject.encrypt(empty_string) }.to raise_error ArgumentError, /data must not be empty/
|
39
44
|
end
|
40
45
|
end
|
@@ -8,7 +8,7 @@ describe Ably::Util::PubSub do
|
|
8
8
|
subject { Ably::Util::PubSub.new(options) }
|
9
9
|
|
10
10
|
context 'event fan out' do
|
11
|
-
specify 'allows publishing to more than on subscriber' do
|
11
|
+
specify '#publish allows publishing to more than on subscriber' do
|
12
12
|
expect(obj).to receive(:received_message).with(msg).twice
|
13
13
|
2.times do
|
14
14
|
subject.subscribe(:message) { |msg| obj.received_message msg }
|
@@ -16,7 +16,7 @@ describe Ably::Util::PubSub do
|
|
16
16
|
subject.publish :message, msg
|
17
17
|
end
|
18
18
|
|
19
|
-
it 'sends only messages to matching event names' do
|
19
|
+
it '#publish sends only messages to #subscribe callbacks matching event names' do
|
20
20
|
expect(obj).to receive(:received_message).with(msg).once
|
21
21
|
subject.subscribe(:valid) { |msg| obj.received_message msg }
|
22
22
|
subject.publish :valid, msg
|
@@ -24,7 +24,7 @@ describe Ably::Util::PubSub do
|
|
24
24
|
subject.publish 'valid', msg
|
25
25
|
end
|
26
26
|
|
27
|
-
context 'with coercion' do
|
27
|
+
context 'with coercion', api_private: true do
|
28
28
|
let(:options) do
|
29
29
|
{ coerce_into: Proc.new { |event| String(event) } }
|
30
30
|
end
|
@@ -48,7 +48,7 @@ describe Ably::Util::PubSub do
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
context 'without coercion' do
|
51
|
+
context 'without coercion', api_private: true do
|
52
52
|
it 'only matches event names on type matches' do
|
53
53
|
expect(obj).to_not receive(:received_message).with(msg)
|
54
54
|
subject.subscribe('valid') { |msg| obj.received_message msg }
|
@@ -57,7 +57,7 @@ describe Ably::Util::PubSub do
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
context '#
|
60
|
+
context '#unsubscribe' do
|
61
61
|
let(:callback) { Proc.new { |msg| obj.received_message msg } }
|
62
62
|
|
63
63
|
before do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ably
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lewis Marshall
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-01-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: eventmachine
|
@@ -143,14 +143,14 @@ dependencies:
|
|
143
143
|
requirements:
|
144
144
|
- - "~>"
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version:
|
146
|
+
version: 3.1.0
|
147
147
|
type: :development
|
148
148
|
prerelease: false
|
149
149
|
version_requirements: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
151
|
- - "~>"
|
152
152
|
- !ruby/object:Gem::Version
|
153
|
-
version:
|
153
|
+
version: 3.1.0
|
154
154
|
- !ruby/object:Gem::Dependency
|
155
155
|
name: yard
|
156
156
|
requirement: !ruby/object:Gem::Requirement
|
@@ -188,11 +188,14 @@ extensions: []
|
|
188
188
|
extra_rdoc_files: []
|
189
189
|
files:
|
190
190
|
- ".gitignore"
|
191
|
+
- ".rspec"
|
192
|
+
- ".ruby-version.old"
|
191
193
|
- ".travis.yml"
|
192
194
|
- Gemfile
|
193
195
|
- LICENSE.txt
|
194
196
|
- README.md
|
195
197
|
- Rakefile
|
198
|
+
- SPEC.md
|
196
199
|
- ably.gemspec
|
197
200
|
- lib/ably.rb
|
198
201
|
- lib/ably/auth.rb
|
@@ -206,10 +209,12 @@ files:
|
|
206
209
|
- lib/ably/models/message_encoders/cipher.rb
|
207
210
|
- lib/ably/models/message_encoders/json.rb
|
208
211
|
- lib/ably/models/message_encoders/utf8.rb
|
212
|
+
- lib/ably/models/nil_logger.rb
|
209
213
|
- lib/ably/models/paginated_resource.rb
|
210
214
|
- lib/ably/models/presence_message.rb
|
211
215
|
- lib/ably/models/protocol_message.rb
|
212
216
|
- lib/ably/models/token.rb
|
217
|
+
- lib/ably/modules/ably.rb
|
213
218
|
- lib/ably/modules/async_wrapper.rb
|
214
219
|
- lib/ably/modules/channels_collection.rb
|
215
220
|
- lib/ably/modules/conversions.rb
|
@@ -221,8 +226,13 @@ files:
|
|
221
226
|
- lib/ably/modules/message_pack.rb
|
222
227
|
- lib/ably/modules/model_common.rb
|
223
228
|
- lib/ably/modules/state_emitter.rb
|
229
|
+
- lib/ably/modules/state_machine.rb
|
230
|
+
- lib/ably/modules/statesman_monkey_patch.rb
|
231
|
+
- lib/ably/modules/uses_state_machine.rb
|
224
232
|
- lib/ably/realtime.rb
|
225
233
|
- lib/ably/realtime/channel.rb
|
234
|
+
- lib/ably/realtime/channel/channel_manager.rb
|
235
|
+
- lib/ably/realtime/channel/channel_state_machine.rb
|
226
236
|
- lib/ably/realtime/channels.rb
|
227
237
|
- lib/ably/realtime/client.rb
|
228
238
|
- lib/ably/realtime/client/incoming_message_dispatcher.rb
|
@@ -250,6 +260,8 @@ files:
|
|
250
260
|
- lib/ably/version.rb
|
251
261
|
- spec/acceptance/realtime/channel_history_spec.rb
|
252
262
|
- spec/acceptance/realtime/channel_spec.rb
|
263
|
+
- spec/acceptance/realtime/client_spec.rb
|
264
|
+
- spec/acceptance/realtime/connection_failures_spec.rb
|
253
265
|
- spec/acceptance/realtime/connection_spec.rb
|
254
266
|
- spec/acceptance/realtime/message_spec.rb
|
255
267
|
- spec/acceptance/realtime/presence_history_spec.rb
|
@@ -260,21 +272,27 @@ files:
|
|
260
272
|
- spec/acceptance/rest/base_spec.rb
|
261
273
|
- spec/acceptance/rest/channel_spec.rb
|
262
274
|
- spec/acceptance/rest/channels_spec.rb
|
275
|
+
- spec/acceptance/rest/client_spec.rb
|
276
|
+
- spec/acceptance/rest/encoders_spec.rb
|
263
277
|
- spec/acceptance/rest/message_spec.rb
|
264
278
|
- spec/acceptance/rest/presence_spec.rb
|
265
279
|
- spec/acceptance/rest/stats_spec.rb
|
266
280
|
- spec/acceptance/rest/time_spec.rb
|
267
|
-
- spec/integration/modules/state_emitter_spec.rb
|
268
|
-
- spec/integration/rest/auth.rb
|
269
281
|
- spec/resources/crypto-data-128.json
|
270
282
|
- spec/resources/crypto-data-256.json
|
271
283
|
- spec/rspec_config.rb
|
284
|
+
- spec/shared/client_initializer_behaviour.rb
|
285
|
+
- spec/shared/model_behaviour.rb
|
286
|
+
- spec/shared/protocol_msgbus_behaviour.rb
|
272
287
|
- spec/spec_helper.rb
|
273
288
|
- spec/support/api_helper.rb
|
274
289
|
- spec/support/event_machine_helper.rb
|
275
|
-
- spec/support/
|
276
|
-
- spec/support/
|
290
|
+
- spec/support/markdown_spec_formatter.rb
|
291
|
+
- spec/support/private_api_formatter.rb
|
292
|
+
- spec/support/protocol_helper.rb
|
293
|
+
- spec/support/random_helper.rb
|
277
294
|
- spec/support/test_app.rb
|
295
|
+
- spec/unit/auth_spec.rb
|
278
296
|
- spec/unit/logger_spec.rb
|
279
297
|
- spec/unit/models/error_info_spec.rb
|
280
298
|
- spec/unit/models/idiomatic_ruby_wrapper_spec.rb
|
@@ -291,6 +309,7 @@ files:
|
|
291
309
|
- spec/unit/modules/conversions_spec.rb
|
292
310
|
- spec/unit/modules/enum_spec.rb
|
293
311
|
- spec/unit/modules/event_emitter_spec.rb
|
312
|
+
- spec/unit/modules/state_emitter_spec.rb
|
294
313
|
- spec/unit/realtime/channel_spec.rb
|
295
314
|
- spec/unit/realtime/channels_spec.rb
|
296
315
|
- spec/unit/realtime/client_spec.rb
|
@@ -299,8 +318,10 @@ files:
|
|
299
318
|
- spec/unit/realtime/presence_spec.rb
|
300
319
|
- spec/unit/realtime/realtime_spec.rb
|
301
320
|
- spec/unit/realtime/websocket_transport_spec.rb
|
321
|
+
- spec/unit/rest/channel_spec.rb
|
302
322
|
- spec/unit/rest/channels_spec.rb
|
303
323
|
- spec/unit/rest/client_spec.rb
|
324
|
+
- spec/unit/rest/rest_spec.rb
|
304
325
|
- spec/unit/util/crypto_spec.rb
|
305
326
|
- spec/unit/util/pub_sub_spec.rb
|
306
327
|
homepage: http://github.com/ably/ably-ruby
|
@@ -330,6 +351,8 @@ summary: A Ruby client library for ably.io, the real-time messaging service
|
|
330
351
|
test_files:
|
331
352
|
- spec/acceptance/realtime/channel_history_spec.rb
|
332
353
|
- spec/acceptance/realtime/channel_spec.rb
|
354
|
+
- spec/acceptance/realtime/client_spec.rb
|
355
|
+
- spec/acceptance/realtime/connection_failures_spec.rb
|
333
356
|
- spec/acceptance/realtime/connection_spec.rb
|
334
357
|
- spec/acceptance/realtime/message_spec.rb
|
335
358
|
- spec/acceptance/realtime/presence_history_spec.rb
|
@@ -340,21 +363,27 @@ test_files:
|
|
340
363
|
- spec/acceptance/rest/base_spec.rb
|
341
364
|
- spec/acceptance/rest/channel_spec.rb
|
342
365
|
- spec/acceptance/rest/channels_spec.rb
|
366
|
+
- spec/acceptance/rest/client_spec.rb
|
367
|
+
- spec/acceptance/rest/encoders_spec.rb
|
343
368
|
- spec/acceptance/rest/message_spec.rb
|
344
369
|
- spec/acceptance/rest/presence_spec.rb
|
345
370
|
- spec/acceptance/rest/stats_spec.rb
|
346
371
|
- spec/acceptance/rest/time_spec.rb
|
347
|
-
- spec/integration/modules/state_emitter_spec.rb
|
348
|
-
- spec/integration/rest/auth.rb
|
349
372
|
- spec/resources/crypto-data-128.json
|
350
373
|
- spec/resources/crypto-data-256.json
|
351
374
|
- spec/rspec_config.rb
|
375
|
+
- spec/shared/client_initializer_behaviour.rb
|
376
|
+
- spec/shared/model_behaviour.rb
|
377
|
+
- spec/shared/protocol_msgbus_behaviour.rb
|
352
378
|
- spec/spec_helper.rb
|
353
379
|
- spec/support/api_helper.rb
|
354
380
|
- spec/support/event_machine_helper.rb
|
355
|
-
- spec/support/
|
356
|
-
- spec/support/
|
381
|
+
- spec/support/markdown_spec_formatter.rb
|
382
|
+
- spec/support/private_api_formatter.rb
|
383
|
+
- spec/support/protocol_helper.rb
|
384
|
+
- spec/support/random_helper.rb
|
357
385
|
- spec/support/test_app.rb
|
386
|
+
- spec/unit/auth_spec.rb
|
358
387
|
- spec/unit/logger_spec.rb
|
359
388
|
- spec/unit/models/error_info_spec.rb
|
360
389
|
- spec/unit/models/idiomatic_ruby_wrapper_spec.rb
|
@@ -371,6 +400,7 @@ test_files:
|
|
371
400
|
- spec/unit/modules/conversions_spec.rb
|
372
401
|
- spec/unit/modules/enum_spec.rb
|
373
402
|
- spec/unit/modules/event_emitter_spec.rb
|
403
|
+
- spec/unit/modules/state_emitter_spec.rb
|
374
404
|
- spec/unit/realtime/channel_spec.rb
|
375
405
|
- spec/unit/realtime/channels_spec.rb
|
376
406
|
- spec/unit/realtime/client_spec.rb
|
@@ -379,8 +409,10 @@ test_files:
|
|
379
409
|
- spec/unit/realtime/presence_spec.rb
|
380
410
|
- spec/unit/realtime/realtime_spec.rb
|
381
411
|
- spec/unit/realtime/websocket_transport_spec.rb
|
412
|
+
- spec/unit/rest/channel_spec.rb
|
382
413
|
- spec/unit/rest/channels_spec.rb
|
383
414
|
- spec/unit/rest/client_spec.rb
|
415
|
+
- spec/unit/rest/rest_spec.rb
|
384
416
|
- spec/unit/util/crypto_spec.rb
|
385
417
|
- spec/unit/util/pub_sub_spec.rb
|
386
418
|
has_rdoc:
|
@@ -1,80 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Ably::Modules::StateEmitter do
|
4
|
-
class ExampleStateWithEventEmitter
|
5
|
-
include Ably::Modules::EventEmitter
|
6
|
-
extend Ably::Modules::Enum
|
7
|
-
|
8
|
-
STATE = ruby_enum('STATE',
|
9
|
-
:initializing,
|
10
|
-
:connecting,
|
11
|
-
:connected,
|
12
|
-
:disconnected
|
13
|
-
)
|
14
|
-
include Ably::Modules::StateEmitter
|
15
|
-
|
16
|
-
def initialize
|
17
|
-
@state = :initializing
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
let(:initial_state) { :initializing }
|
22
|
-
|
23
|
-
subject { ExampleStateWithEventEmitter.new }
|
24
|
-
|
25
|
-
specify '#state returns current state' do
|
26
|
-
expect(subject.state).to eq(:initializing)
|
27
|
-
end
|
28
|
-
|
29
|
-
specify '#state= sets current state' do
|
30
|
-
expect { subject.state = :connecting }.to change { subject.state }.to(:connecting)
|
31
|
-
end
|
32
|
-
|
33
|
-
specify '#change_state sets current state' do
|
34
|
-
expect { subject.change_state :connecting }.to change { subject.state }.to(:connecting)
|
35
|
-
end
|
36
|
-
|
37
|
-
context '#change_state with arguments' do
|
38
|
-
let(:args) { [5,3,1] }
|
39
|
-
let(:callback_status) { { called: false } }
|
40
|
-
|
41
|
-
it 'passes the arguments through to the triggered callback' do
|
42
|
-
subject.on(:connecting) do |*callback_args|
|
43
|
-
expect(callback_args).to eql(args)
|
44
|
-
callback_status[:called] = true
|
45
|
-
end
|
46
|
-
expect { subject.change_state :connecting, *args }.to change { subject.state }.to(:connecting)
|
47
|
-
expect(callback_status).to eql(called: true)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
context '#state?' do
|
52
|
-
it 'returns true if state matches' do
|
53
|
-
expect(subject.state?(initial_state)).to eql(true)
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'returns false if state does not match' do
|
57
|
-
expect(subject.state?(:connecting)).to eql(false)
|
58
|
-
end
|
59
|
-
|
60
|
-
context 'and convenience predicates for states' do
|
61
|
-
it 'returns true if state matches' do
|
62
|
-
expect(subject.initializing?).to eql(true)
|
63
|
-
end
|
64
|
-
|
65
|
-
it 'returns false if state does not match' do
|
66
|
-
expect(subject.connecting?).to eql(false)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
context '#state STATE coercion' do
|
72
|
-
it 'allows valid STATE values' do
|
73
|
-
expect { subject.state = :connected }.to_not raise_error
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'prevents invalid STATE values' do
|
77
|
-
expect { subject.state = :invalid }.to raise_error KeyError
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
@@ -1,9 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Ably::Auth do
|
4
|
-
let(:client) { Ably::Rest::Client.new(key_id: 'id', key_secret: 'secret') }
|
5
|
-
|
6
|
-
it 'has immutable options' do
|
7
|
-
expect { client.auth.options['key_id'] = 'new_id' }.to raise_error RuntimeError, /can't modify frozen Hash/
|
8
|
-
end
|
9
|
-
end
|