Skip to content

Commit 127bed2

Browse files
committed
Making subscribe tests
1 parent 6a6b2c1 commit 127bed2

File tree

5 files changed

+86
-76
lines changed

5 files changed

+86
-76
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
dop.core.createAsync = function(node, request_id) {
2+
dop.core.createAsync = function() {
33
var resolve, reject,
44
promise = new Promise(function(res, rej) {
55
resolve = res;

src/protocol/onsubscribe.js

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,10 @@ dop.protocol.onsubscribe = function(node, request_id, request) {
1717
dop.core.sendResponse(node, response);
1818
return object;
1919
}
20-
else {
20+
else
2121
// http://www.2ality.com/2016/03/promise-rejections-vs-exceptions.html
22-
try {
23-
dop.util.invariant(false, 'dop.onsubscribe callback must return or resolve a regular object');
24-
} catch(err) {
25-
console.log( 123,err );
26-
return reject(err);
27-
}
28-
// reject()
29-
}
22+
// http://stackoverflow.com/questions/41254636/catch-an-error-inside-of-promise-resolver
23+
dop.util.invariant(false, 'dop.onsubscribe callback must return or resolve a regular object');
3024

3125

3226
}, function reject(error) {

test/transports/.testsocketio.js

Lines changed: 0 additions & 51 deletions
This file was deleted.

test/transports/subscribe.js

Lines changed: 82 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ var transportConnect = require('dop-transports').connect[transportName];
1010

1111
var server = dopServer.listen({transport:transportListen});
1212
var client = dopClient.connect({transport:transportConnect, listener:server});
13-
13+
server.on('connect', function(node) {
14+
nodeClient = node;
15+
})
1416

1517

1618
test('Client subscribe synchronously', function(t) {
@@ -64,10 +66,10 @@ test('Client subscribe synchronously', function(t) {
6466
else if (name === 'REJECT') {
6567
req.reject({message:'Subscription rejected'})
6668
}
67-
else if (name === 'RESOLVING STRING') {
68-
req.resolve('')
69+
else if (name === 'NOOBJECT') {
70+
req.resolve('NOOBJECT');
71+
setTimeout(t.end.bind(t), 10);
6972
}
70-
7173
})
7274

7375
var objClient, objectDataServer, objectDataClient;
@@ -77,10 +79,10 @@ test('Client subscribe synchronously', function(t) {
7779
objectDataClient = dopClient.data.object[1];
7880
t.deepEqual(obj, DATA, 'deepEqual data received from server');
7981
t.deepEqual(objectDataServer.object, dopServer.getObjectProxy(DATA), 'Same object stored in server');
80-
t.deepEqual(objectDataServer.node[nodeClient.token].subscribed, true, 'Client subscribed');
81-
t.deepEqual(objectDataServer.node[nodeClient.token].owner, false, 'Client is not owner');
82-
t.deepEqual(objectDataClient.node[client.token].subscribed, false, 'Server is not subscribed');
83-
t.deepEqual(objectDataClient.node[client.token].owner, true, 'Server is owner');
82+
t.equal(objectDataServer.node[nodeClient.token].subscribed, true, 'Client subscribed');
83+
t.equal(objectDataServer.node[nodeClient.token].owner, false, 'Client is not owner');
84+
t.equal(objectDataClient.node[client.token].subscribed, false, 'Server is not subscribed');
85+
t.equal(objectDataClient.node[client.token].owner, true, 'Server is owner');
8486
return client.subscribe('DATA_DEEP');
8587
})
8688
.then(function(obj_deep){
@@ -113,8 +115,7 @@ test('Client subscribe synchronously', function(t) {
113115
})
114116
.catch(function(err){
115117
t.equal(err.message, 'Subscription rejected', 'Subscription rejected');
116-
t.end();
117-
return client.subscribe('RESOLVING STRING');
118+
return client.subscribe('NOOBJECT');
118119
})
119120
// .catch(function(err){
120121
// console.log( 123131, typeof err );
@@ -124,14 +125,80 @@ test('Client subscribe synchronously', function(t) {
124125
});
125126

126127

127-
// test('Client subscribe asynchronously same object', function(t) {});
128-
// test('Client subscribe asynchronously different objects', function(t) {});
129-
// test('Multiple Clients subscribe Same object', function(t) {});
130-
// test('Multiple Clients subscribe different objects', function(t) {});
128+
test('Client subscribe asynchronously same object', function(t) {
129+
var objectServer = {test:1234};
130+
dopServer.onsubscribe(function() {
131+
return objectServer;
132+
});
133+
134+
var objectClient;
135+
client.subscribe().then(function(obj){
136+
objectClient = obj;
137+
});
138+
client.subscribe().then(function(obj){
139+
t.equal(obj, objectClient, 'Same object');
140+
t.deepEqual(objectServer, objectClient, 'deepEqual to objectServer');
141+
t.end();
142+
});
143+
});
144+
145+
146+
test('Client subscribe asynchronously different objects', function(t) {
147+
148+
dopServer.onsubscribe(function() {
149+
return {test:Math.random()};
150+
});
151+
152+
var objectClient1, objectClient2;
153+
client.subscribe().then(function(obj){
154+
objectClient1 = obj;
155+
});
156+
client.subscribe().then(function(obj){
157+
objectClient2 = obj;
158+
});
159+
client.subscribe().then(function(obj){
160+
var objectClient3 = obj;
161+
var objectId1 = dopClient.getObjectId(objectClient1);
162+
var objectId2 = dopClient.getObjectId(objectClient2);
163+
var objectId3 = dopClient.getObjectId(objectClient3);
164+
t.equal(objectId1, objectId2-1, 'Correct ID order');
165+
t.equal(objectId2, objectId3-1, 'Correct ID order2');
166+
t.equal(objectClient1.hasOwnProperty('test'), true, 'objectClient1 hasOwnProperty test');
167+
t.equal(objectClient2.hasOwnProperty('test'), true, 'objectClient2 hasOwnProperty test');
168+
t.equal(objectClient3.hasOwnProperty('test'), true, 'objectClient3 hasOwnProperty test');
169+
t.notDeepEqual(objectClient1, objectClient2);
170+
t.notDeepEqual(objectClient2, objectClient3);
171+
t.notDeepEqual(objectClient1, objectClient3);
172+
t.end();
173+
});
174+
});
175+
176+
test('Server subscribe client object', function(t) {
177+
var objClient = {test:Math.random()};
178+
dopClient.onsubscribe(function() {
179+
return objClient;
180+
});
181+
nodeClient.subscribe().then(function(objServer){
182+
var objectDataServer = dopServer.data.object[dopServer.getObjectId(objServer)];
183+
var objectDataClient = dopClient.data.object[dopServer.getObjectId(objClient)];
184+
t.equal(objServer.hasOwnProperty('test'), true, 'obj hasOwnProperty test');
185+
t.deepEqual(objServer, objClient);
186+
t.equal(objectDataClient.node[client.token].subscribed, true, 'Server is subscribed');
187+
t.equal(objectDataClient.node[client.token].owner, false, 'Server is not owner');
188+
t.equal(objectDataServer.node[nodeClient.token].subscribed, false, 'Client is not subscribed');
189+
t.equal(objectDataServer.node[nodeClient.token].owner, true, 'Client is owner');
190+
191+
})
192+
});
193+
194+
// test('Server subscribe client object that is from server', function(t) {
195+
196+
// });
197+
198+
131199

132200
// test('Into...', function(t) {});
133201

134-
// test('Server subscribe...', function(t) {});
135202

136203

137204

0 commit comments

Comments
 (0)