ably-rest 1.1.0 → 1.1.2
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/README.md +9 -1
- data/ably-rest.gemspec +1 -1
- data/lib/submodules/ably-ruby/.travis.yml +9 -6
- data/lib/submodules/ably-ruby/CHANGELOG.md +25 -2
- data/lib/submodules/ably-ruby/README.md +9 -1
- data/lib/submodules/ably-ruby/ably.gemspec +4 -4
- data/lib/submodules/ably-ruby/lib/ably/logger.rb +7 -1
- data/lib/submodules/ably-ruby/lib/ably/modules/state_machine.rb +1 -1
- data/lib/submodules/ably-ruby/lib/ably/realtime/client.rb +4 -3
- data/lib/submodules/ably-ruby/lib/ably/realtime/connection.rb +26 -15
- data/lib/submodules/ably-ruby/lib/ably/realtime/connection/connection_manager.rb +19 -3
- data/lib/submodules/ably-ruby/lib/ably/rest/client.rb +4 -2
- data/lib/submodules/ably-ruby/lib/ably/version.rb +1 -1
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/auth_spec.rb +13 -10
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/channel_history_spec.rb +26 -20
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/channel_spec.rb +11 -8
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/client_spec.rb +8 -4
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/connection_failures_spec.rb +71 -5
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/connection_spec.rb +125 -14
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/message_spec.rb +17 -17
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/presence_spec.rb +196 -162
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/push_admin_spec.rb +46 -6
- data/lib/submodules/ably-ruby/spec/acceptance/rest/channel_spec.rb +37 -0
- data/lib/submodules/ably-ruby/spec/acceptance/rest/channels_spec.rb +6 -0
- data/lib/submodules/ably-ruby/spec/acceptance/rest/message_spec.rb +8 -27
- data/lib/submodules/ably-ruby/spec/acceptance/rest/push_admin_spec.rb +64 -8
- data/lib/submodules/ably-ruby/spec/spec_helper.rb +1 -1
- data/lib/submodules/ably-ruby/spec/support/debug_failure_helper.rb +9 -5
- data/lib/submodules/ably-ruby/spec/unit/modules/enum_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/unit/realtime/client_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/unit/realtime/connection_spec.rb +1 -1
- metadata +7 -7
@@ -96,8 +96,7 @@ describe 'Ably::Realtime::Channel Message', :event_machine do
|
|
96
96
|
end
|
97
97
|
|
98
98
|
context 'JSON Array' do
|
99
|
-
|
100
|
-
let(:data) { { 'push' => { 'data' => { 'key' => [ true, false, 55, 'string', { 'Hash' => true }, ['array'] ] } } } }
|
99
|
+
let(:data) { { 'push' => { 'data' => { 'key' => [ true, false, 55, nil, 'string', { 'Hash' => true }, ['array'] ] } } } }
|
101
100
|
|
102
101
|
it 'is encoded and decoded to the same Array' do
|
103
102
|
publish_and_check_extras data
|
@@ -353,23 +352,25 @@ describe 'Ably::Realtime::Channel Message', :event_machine do
|
|
353
352
|
first_message_protocol_message ||= protocol_message unless protocol_message.messages.empty?
|
354
353
|
end
|
355
354
|
|
356
|
-
channel.
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
355
|
+
channel.attach do
|
356
|
+
channel.subscribe do |message|
|
357
|
+
messages_received << message
|
358
|
+
if messages_received.count == 2
|
359
|
+
# simulate a duplicate protocol message being received
|
360
|
+
EventMachine.next_tick do
|
361
|
+
connection.__incoming_protocol_msgbus__.publish :protocol_message, first_message_protocol_message
|
362
|
+
end
|
362
363
|
end
|
363
364
|
end
|
364
|
-
|
365
|
-
2.times { |i| EventMachine.add_timer(i.to_f / 5) { channel.publish('event', 'data') } }
|
365
|
+
2.times { |i| EventMachine.add_timer(i.to_f / 5) { channel.publish('event', 'data') } }
|
366
366
|
|
367
|
-
|
368
|
-
|
367
|
+
expect(client.logger).to receive(:error) do |*args, &block|
|
368
|
+
expect(args.concat([block ? block.call : nil]).join(',')).to match(/duplicate/)
|
369
369
|
|
370
|
-
|
371
|
-
|
372
|
-
|
370
|
+
EventMachine.add_timer(0.5) do
|
371
|
+
expect(messages_received.count).to eql(2)
|
372
|
+
stop_reactor
|
373
|
+
end
|
373
374
|
end
|
374
375
|
end
|
375
376
|
end
|
@@ -656,8 +657,7 @@ describe 'Ably::Realtime::Channel Message', :event_machine do
|
|
656
657
|
expect(message_state).to be_empty
|
657
658
|
EventMachine.add_timer(2) do
|
658
659
|
expect(message_state).to contain_exactly(:delivered)
|
659
|
-
|
660
|
-
# expect(msgs_received.length).to eql(1)
|
660
|
+
expect(msgs_received.length).to eql(1)
|
661
661
|
stop_reactor
|
662
662
|
end
|
663
663
|
end
|
@@ -1073,12 +1073,12 @@ describe Ably::Realtime::Presence, :event_machine do
|
|
1073
1073
|
context 'message #connection_id' do
|
1074
1074
|
it 'matches the current client connection_id' do
|
1075
1075
|
channel_client_two.attach do
|
1076
|
-
|
1077
|
-
|
1076
|
+
presence_client_two.subscribe do |presence|
|
1077
|
+
expect(presence.connection_id).to eq(client_one.connection.id)
|
1078
|
+
stop_reactor
|
1079
|
+
end
|
1078
1080
|
|
1079
|
-
|
1080
|
-
expect(presence.connection_id).to eq(client_one.connection.id)
|
1081
|
-
stop_reactor
|
1081
|
+
presence_client_one.enter
|
1082
1082
|
end
|
1083
1083
|
end
|
1084
1084
|
end
|
@@ -1128,22 +1128,26 @@ describe Ably::Realtime::Presence, :event_machine do
|
|
1128
1128
|
end
|
1129
1129
|
|
1130
1130
|
it 'updates the data if :data argument provided' do
|
1131
|
-
|
1132
|
-
presence_client_one.
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1131
|
+
channel_client_one.attach do
|
1132
|
+
presence_client_one.enter('prior') do
|
1133
|
+
presence_client_one.update(data_payload)
|
1134
|
+
end
|
1135
|
+
presence_client_one.subscribe(:update) do |message|
|
1136
|
+
expect(message.data).to eql(data_payload)
|
1137
|
+
stop_reactor
|
1138
|
+
end
|
1137
1139
|
end
|
1138
1140
|
end
|
1139
1141
|
|
1140
1142
|
it 'updates the data to nil if :data argument is not provided (assumes nil value)' do
|
1141
|
-
|
1142
|
-
presence_client_one.
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1143
|
+
channel_client_one.attach do
|
1144
|
+
presence_client_one.enter('prior') do
|
1145
|
+
presence_client_one.update
|
1146
|
+
end
|
1147
|
+
presence_client_one.subscribe(:update) do |message|
|
1148
|
+
expect(message.data).to be_nil
|
1149
|
+
stop_reactor
|
1150
|
+
end
|
1147
1151
|
end
|
1148
1152
|
end
|
1149
1153
|
|
@@ -1157,39 +1161,45 @@ describe Ably::Realtime::Presence, :event_machine do
|
|
1157
1161
|
|
1158
1162
|
context 'when set to a string' do
|
1159
1163
|
it 'emits the new data for the leave event' do
|
1160
|
-
|
1161
|
-
presence_client_one.
|
1162
|
-
|
1164
|
+
channel_client_one.attach do
|
1165
|
+
presence_client_one.enter enter_data do
|
1166
|
+
presence_client_one.leave data
|
1167
|
+
end
|
1163
1168
|
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1169
|
+
presence_client_one.subscribe(:leave) do |presence_message|
|
1170
|
+
expect(presence_message.data).to eql(data)
|
1171
|
+
stop_reactor
|
1172
|
+
end
|
1167
1173
|
end
|
1168
1174
|
end
|
1169
1175
|
end
|
1170
1176
|
|
1171
1177
|
context 'when set to nil' do
|
1172
1178
|
it 'emits the last value for the data attribute when leaving' do
|
1173
|
-
|
1174
|
-
presence_client_one.
|
1175
|
-
|
1179
|
+
channel_client_one.attach do
|
1180
|
+
presence_client_one.enter enter_data do
|
1181
|
+
presence_client_one.leave nil
|
1182
|
+
end
|
1176
1183
|
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1184
|
+
presence_client_one.subscribe(:leave) do |presence_message|
|
1185
|
+
expect(presence_message.data).to eql(enter_data)
|
1186
|
+
stop_reactor
|
1187
|
+
end
|
1180
1188
|
end
|
1181
1189
|
end
|
1182
1190
|
end
|
1183
1191
|
|
1184
1192
|
context 'when not passed as an argument (i.e. nil)' do
|
1185
1193
|
it 'emits the previous value for the data attribute when leaving' do
|
1186
|
-
|
1187
|
-
presence_client_one.
|
1188
|
-
|
1194
|
+
channel_client_one.attach do
|
1195
|
+
presence_client_one.enter enter_data do
|
1196
|
+
presence_client_one.leave
|
1197
|
+
end
|
1189
1198
|
|
1190
|
-
|
1191
|
-
|
1192
|
-
|
1199
|
+
presence_client_one.subscribe(:leave) do |presence_message|
|
1200
|
+
expect(presence_message.data).to eql(enter_data)
|
1201
|
+
stop_reactor
|
1202
|
+
end
|
1193
1203
|
end
|
1194
1204
|
end
|
1195
1205
|
end
|
@@ -1198,38 +1208,42 @@ describe Ably::Realtime::Presence, :event_machine do
|
|
1198
1208
|
it 'does not cache members that have left' do
|
1199
1209
|
enter_ack = false
|
1200
1210
|
|
1201
|
-
|
1202
|
-
presence_client_one.
|
1211
|
+
channel_client_one.attach do
|
1212
|
+
presence_client_one.subscribe(:enter) do
|
1213
|
+
presence_client_one.unsubscribe :enter
|
1203
1214
|
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1215
|
+
expect(presence_client_one.members).to be_in_sync
|
1216
|
+
expect(presence_client_one.members.send(:members).count).to eql(1)
|
1217
|
+
presence_client_one.leave data
|
1218
|
+
end
|
1208
1219
|
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1220
|
+
presence_client_one.enter(enter_data) do
|
1221
|
+
enter_ack = true
|
1222
|
+
end
|
1212
1223
|
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
|
1224
|
+
presence_client_one.subscribe(:leave) do |presence_message|
|
1225
|
+
presence_client_one.unsubscribe :leave
|
1226
|
+
expect(presence_message.data).to eql(data)
|
1227
|
+
expect(presence_client_one.members.send(:members).count).to eql(0)
|
1228
|
+
expect(enter_ack).to eql(true)
|
1229
|
+
stop_reactor
|
1230
|
+
end
|
1219
1231
|
end
|
1220
1232
|
end
|
1221
1233
|
end
|
1222
1234
|
end
|
1223
1235
|
|
1224
1236
|
it 'succeeds and does not emit an event (#RTP10d)' do
|
1225
|
-
channel_client_one.
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1237
|
+
channel_client_one.attach do
|
1238
|
+
channel_client_one.presence.leave do
|
1239
|
+
# allow enough time for leave event to (not) fire
|
1240
|
+
EventMachine.add_timer(2) do
|
1241
|
+
stop_reactor
|
1242
|
+
end
|
1243
|
+
end
|
1244
|
+
channel_client_one.subscribe(:leave) do
|
1245
|
+
raise "No leave event should fire"
|
1229
1246
|
end
|
1230
|
-
end
|
1231
|
-
channel_client_one.subscribe(:leave) do
|
1232
|
-
raise "No leave event should fire"
|
1233
1247
|
end
|
1234
1248
|
end
|
1235
1249
|
|
@@ -1238,26 +1252,30 @@ describe Ably::Realtime::Presence, :event_machine do
|
|
1238
1252
|
|
1239
1253
|
context ':left event' do
|
1240
1254
|
it 'emits the data defined in enter' do
|
1241
|
-
|
1242
|
-
channel_client_one.presence.
|
1243
|
-
|
1255
|
+
channel_client_two.attach do
|
1256
|
+
channel_client_one.presence.enter('data') do
|
1257
|
+
channel_client_one.presence.leave
|
1258
|
+
end
|
1244
1259
|
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1260
|
+
channel_client_two.presence.subscribe(:leave) do |message|
|
1261
|
+
expect(message.data).to eql('data')
|
1262
|
+
stop_reactor
|
1263
|
+
end
|
1248
1264
|
end
|
1249
1265
|
end
|
1250
1266
|
|
1251
1267
|
it 'emits the data defined in update' do
|
1252
|
-
|
1253
|
-
channel_client_one.presence.
|
1254
|
-
channel_client_one.presence.
|
1268
|
+
channel_client_two.attach do
|
1269
|
+
channel_client_one.presence.enter('something else') do
|
1270
|
+
channel_client_one.presence.update('data') do
|
1271
|
+
channel_client_one.presence.leave
|
1272
|
+
end
|
1255
1273
|
end
|
1256
|
-
end
|
1257
1274
|
|
1258
|
-
|
1259
|
-
|
1260
|
-
|
1275
|
+
channel_client_two.presence.subscribe(:leave) do |message|
|
1276
|
+
expect(message.data).to eql('data')
|
1277
|
+
stop_reactor
|
1278
|
+
end
|
1261
1279
|
end
|
1262
1280
|
end
|
1263
1281
|
end
|
@@ -1286,17 +1304,19 @@ describe Ably::Realtime::Presence, :event_machine do
|
|
1286
1304
|
end
|
1287
1305
|
|
1288
1306
|
it 'enters a channel and sets the data based on the provided :data option' do
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1307
|
+
channel_anonymous_client.attach do
|
1308
|
+
client_count.times do |client_id|
|
1309
|
+
presence_client_one.enter_client("client:#{client_id}", data)
|
1310
|
+
end
|
1292
1311
|
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1312
|
+
presence_anonymous_client.subscribe(:enter) do |presence|
|
1313
|
+
expect(presence.data).to eql(data)
|
1314
|
+
clients << presence
|
1315
|
+
next unless clients.count == 5
|
1297
1316
|
|
1298
|
-
|
1299
|
-
|
1317
|
+
expect(clients.map(&:client_id).uniq.count).to eql(5)
|
1318
|
+
stop_reactor
|
1319
|
+
end
|
1300
1320
|
end
|
1301
1321
|
end
|
1302
1322
|
end
|
@@ -1307,12 +1327,12 @@ describe Ably::Realtime::Presence, :event_machine do
|
|
1307
1327
|
it 'matches the current client connection_id' do
|
1308
1328
|
channel_client_two.attach do
|
1309
1329
|
presence_client_one.enter_client(client_id)
|
1310
|
-
end
|
1311
1330
|
|
1312
|
-
|
1313
|
-
|
1314
|
-
|
1315
|
-
|
1331
|
+
presence_client_two.subscribe do |presence|
|
1332
|
+
expect(presence.client_id).to eq(client_id)
|
1333
|
+
expect(presence.connection_id).to eq(client_one.connection.id)
|
1334
|
+
stop_reactor
|
1335
|
+
end
|
1316
1336
|
end
|
1317
1337
|
end
|
1318
1338
|
end
|
@@ -1341,57 +1361,63 @@ describe Ably::Realtime::Presence, :event_machine do
|
|
1341
1361
|
it 'updates the data attribute for the member when :data option provided' do
|
1342
1362
|
updated_callback_count = 0
|
1343
1363
|
|
1344
|
-
|
1345
|
-
|
1346
|
-
presence_client_one.
|
1347
|
-
|
1364
|
+
channel_anonymous_client.attach do
|
1365
|
+
client_count.times do |client_id|
|
1366
|
+
presence_client_one.enter_client("client:#{client_id}") do
|
1367
|
+
presence_client_one.update_client("client:#{client_id}", data) do
|
1368
|
+
updated_callback_count += 1
|
1369
|
+
end
|
1348
1370
|
end
|
1349
1371
|
end
|
1350
|
-
end
|
1351
1372
|
|
1352
|
-
|
1353
|
-
|
1354
|
-
|
1355
|
-
|
1373
|
+
presence_anonymous_client.subscribe(:update) do |presence|
|
1374
|
+
expect(presence.data).to eql(data)
|
1375
|
+
clients << presence
|
1376
|
+
next unless clients.count == 5
|
1356
1377
|
|
1357
|
-
|
1358
|
-
|
1359
|
-
|
1360
|
-
|
1378
|
+
wait_until(lambda { updated_callback_count == 5 }) do
|
1379
|
+
expect(clients.map(&:client_id).uniq.count).to eql(5)
|
1380
|
+
expect(updated_callback_count).to eql(5)
|
1381
|
+
stop_reactor
|
1382
|
+
end
|
1361
1383
|
end
|
1362
1384
|
end
|
1363
1385
|
end
|
1364
1386
|
|
1365
1387
|
it 'updates the data attribute to null for the member when :data option is not provided (assumed null)' do
|
1366
|
-
|
1367
|
-
presence_client_one.
|
1368
|
-
|
1388
|
+
channel_anonymous_client.attach do
|
1389
|
+
presence_client_one.enter_client('client_1') do
|
1390
|
+
presence_client_one.update_client('client_1')
|
1391
|
+
end
|
1369
1392
|
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1393
|
+
presence_anonymous_client.subscribe(:update) do |presence|
|
1394
|
+
expect(presence.client_id).to eql('client_1')
|
1395
|
+
expect(presence.data).to be_nil
|
1396
|
+
stop_reactor
|
1397
|
+
end
|
1374
1398
|
end
|
1375
1399
|
end
|
1376
1400
|
|
1377
1401
|
it 'enters if not already entered' do
|
1378
1402
|
updated_callback_count = 0
|
1379
1403
|
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1404
|
+
channel_anonymous_client.attach do
|
1405
|
+
client_count.times do |client_id|
|
1406
|
+
presence_client_one.update_client("client:#{client_id}", data) do
|
1407
|
+
updated_callback_count += 1
|
1408
|
+
end
|
1383
1409
|
end
|
1384
|
-
end
|
1385
1410
|
|
1386
|
-
|
1387
|
-
|
1388
|
-
|
1389
|
-
|
1411
|
+
presence_anonymous_client.subscribe(:enter) do |presence|
|
1412
|
+
expect(presence.data).to eql(data)
|
1413
|
+
clients << presence
|
1414
|
+
next unless clients.count == 5
|
1390
1415
|
|
1391
|
-
|
1392
|
-
|
1393
|
-
|
1394
|
-
|
1416
|
+
wait_until(lambda { updated_callback_count == 5 }) do
|
1417
|
+
expect(clients.map(&:client_id).uniq.count).to eql(5)
|
1418
|
+
expect(updated_callback_count).to eql(5)
|
1419
|
+
stop_reactor
|
1420
|
+
end
|
1395
1421
|
end
|
1396
1422
|
end
|
1397
1423
|
end
|
@@ -1407,23 +1433,25 @@ describe Ably::Realtime::Presence, :event_machine do
|
|
1407
1433
|
it 'emits the :leave event for each client_id' do
|
1408
1434
|
left_callback_count = 0
|
1409
1435
|
|
1410
|
-
|
1411
|
-
|
1412
|
-
presence_client_one.
|
1413
|
-
|
1436
|
+
channel_anonymous_client.attach do
|
1437
|
+
client_count.times do |client_id|
|
1438
|
+
presence_client_one.enter_client("client:#{client_id}", random_str) do
|
1439
|
+
presence_client_one.leave_client("client:#{client_id}", data) do
|
1440
|
+
left_callback_count += 1
|
1441
|
+
end
|
1414
1442
|
end
|
1415
1443
|
end
|
1416
|
-
end
|
1417
1444
|
|
1418
|
-
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1445
|
+
presence_anonymous_client.subscribe(:leave) do |presence|
|
1446
|
+
expect(presence.data).to eql(data)
|
1447
|
+
clients << presence
|
1448
|
+
next unless clients.count == 5
|
1422
1449
|
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1450
|
+
wait_until(lambda { left_callback_count == 5 }) do
|
1451
|
+
expect(clients.map(&:client_id).uniq.count).to eql(5)
|
1452
|
+
expect(left_callback_count).to eql(5)
|
1453
|
+
stop_reactor
|
1454
|
+
end
|
1427
1455
|
end
|
1428
1456
|
end
|
1429
1457
|
end
|
@@ -1431,21 +1459,23 @@ describe Ably::Realtime::Presence, :event_machine do
|
|
1431
1459
|
it 'succeeds if that client_id has not previously entered the channel' do
|
1432
1460
|
left_callback_count = 0
|
1433
1461
|
|
1434
|
-
|
1435
|
-
|
1436
|
-
|
1462
|
+
channel_anonymous_client.attach do
|
1463
|
+
client_count.times do |client_id|
|
1464
|
+
presence_client_one.leave_client("client:#{client_id}") do
|
1465
|
+
left_callback_count += 1
|
1466
|
+
end
|
1437
1467
|
end
|
1438
|
-
end
|
1439
1468
|
|
1440
|
-
|
1441
|
-
|
1442
|
-
|
1443
|
-
|
1469
|
+
presence_anonymous_client.subscribe(:leave) do |presence|
|
1470
|
+
expect(presence.data).to be_nil
|
1471
|
+
clients << presence
|
1472
|
+
next unless clients.count == 5
|
1444
1473
|
|
1445
|
-
|
1446
|
-
|
1447
|
-
|
1448
|
-
|
1474
|
+
wait_until(lambda { left_callback_count == 5 }) do
|
1475
|
+
expect(clients.map(&:client_id).uniq.count).to eql(5)
|
1476
|
+
expect(left_callback_count).to eql(5)
|
1477
|
+
stop_reactor
|
1478
|
+
end
|
1449
1479
|
end
|
1450
1480
|
end
|
1451
1481
|
end
|
@@ -1453,39 +1483,45 @@ describe Ably::Realtime::Presence, :event_machine do
|
|
1453
1483
|
|
1454
1484
|
context 'with a new value in :data option' do
|
1455
1485
|
it 'emits the leave event with the new data value' do
|
1456
|
-
|
1457
|
-
presence_client_one.
|
1458
|
-
|
1486
|
+
channel_client_one.attach do
|
1487
|
+
presence_client_one.enter_client("client:unique", random_str) do
|
1488
|
+
presence_client_one.leave_client("client:unique", data)
|
1489
|
+
end
|
1459
1490
|
|
1460
|
-
|
1461
|
-
|
1462
|
-
|
1491
|
+
presence_client_one.subscribe(:leave) do |presence_message|
|
1492
|
+
expect(presence_message.data).to eql(data)
|
1493
|
+
stop_reactor
|
1494
|
+
end
|
1463
1495
|
end
|
1464
1496
|
end
|
1465
1497
|
end
|
1466
1498
|
|
1467
1499
|
context 'with a nil value in :data option' do
|
1468
1500
|
it 'emits the leave event with the previous value as a convenience' do
|
1469
|
-
|
1470
|
-
presence_client_one.
|
1471
|
-
|
1501
|
+
channel_client_one.attach do
|
1502
|
+
presence_client_one.enter_client("client:unique", data) do
|
1503
|
+
presence_client_one.leave_client("client:unique", nil)
|
1504
|
+
end
|
1472
1505
|
|
1473
|
-
|
1474
|
-
|
1475
|
-
|
1506
|
+
presence_client_one.subscribe(:leave) do |presence_message|
|
1507
|
+
expect(presence_message.data).to eql(data)
|
1508
|
+
stop_reactor
|
1509
|
+
end
|
1476
1510
|
end
|
1477
1511
|
end
|
1478
1512
|
end
|
1479
1513
|
|
1480
1514
|
context 'with no :data option' do
|
1481
1515
|
it 'emits the leave event with the previous value as a convenience' do
|
1482
|
-
|
1483
|
-
presence_client_one.
|
1484
|
-
|
1516
|
+
channel_client_one.attach do
|
1517
|
+
presence_client_one.enter_client("client:unique", data) do
|
1518
|
+
presence_client_one.leave_client("client:unique")
|
1519
|
+
end
|
1485
1520
|
|
1486
|
-
|
1487
|
-
|
1488
|
-
|
1521
|
+
presence_client_one.subscribe(:leave) do |presence_message|
|
1522
|
+
expect(presence_message.data).to eql(data)
|
1523
|
+
stop_reactor
|
1524
|
+
end
|
1489
1525
|
end
|
1490
1526
|
end
|
1491
1527
|
end
|
@@ -2341,15 +2377,13 @@ describe Ably::Realtime::Presence, :event_machine do
|
|
2341
2377
|
let(:client_one) { auto_close Ably::Realtime::Client.new(client_options.merge(auth_callback: present_only_callback)) }
|
2342
2378
|
|
2343
2379
|
it 'receives presence updates for all presence events generated by the current connection and the presence map is kept up to date (#RTP17a)' do
|
2344
|
-
skip 'This functionality is not yet in sandbox, see https://github.com/ably/realtime/issues/656'
|
2345
|
-
|
2346
2380
|
enter_client_ids = []
|
2347
2381
|
presence_client_one.subscribe(:enter) do |presence_message|
|
2348
2382
|
enter_client_ids << presence_message.client_id
|
2349
2383
|
end
|
2350
2384
|
|
2351
2385
|
leave_client_ids = []
|
2352
|
-
presence_client_one.subscribe(:leave) do
|
2386
|
+
presence_client_one.subscribe(:leave) do |presence_message|
|
2353
2387
|
leave_client_ids << presence_message.client_id
|
2354
2388
|
end
|
2355
2389
|
|