|
1 | 1 | var test = require('tape'); |
2 | 2 | var dopServer = require('../../dist/nodejs').create(); |
3 | 3 | var dopClient = require('../../dist/nodejs').create(); |
4 | | - |
| 4 | +dopServer.env = 'SERVER'; |
| 5 | +dopClient.env = 'CLIENT'; |
5 | 6 |
|
6 | 7 | var transportName = process.argv[2] || 'local'; |
7 | 8 | var transportListen = require('dop-transports').listen[transportName]; |
8 | 9 | var transportConnect = require('dop-transports').connect[transportName]; |
9 | 10 |
|
10 | | -var server = dopServer.listen({transport:transportListen, timeout:1}); |
| 11 | +var server = dopServer.listen({transport:transportListen}); |
11 | 12 | var client = dopClient.connect({transport:transportConnect, listener:server}); |
12 | 13 |
|
13 | 14 |
|
14 | 15 |
|
15 | | -// test('Subscribe', function(t) { |
| 16 | +test('Client subscribe synchronously', function(t) { |
| 17 | + |
| 18 | + var DATA = { |
| 19 | + string: 'string', |
| 20 | + boolean: true, |
| 21 | + number: -123, |
| 22 | + Infinity: -Infinity, |
| 23 | + float: 1.234153454354341, |
| 24 | + long: 12313214234312324353454534534, |
| 25 | + undefined: undefined, |
| 26 | + null: null, |
| 27 | + regexp: /molamazo/g, |
| 28 | + date: new Date(), |
| 29 | + "~DOP": [], |
| 30 | + und: "~U", |
| 31 | + inf: '~I', |
| 32 | + fun: '~F', |
| 33 | + nan: '~N', |
| 34 | + reg: '~R', |
| 35 | + deep:{ |
| 36 | + deeper:{the:'end'} |
| 37 | + } |
| 38 | + }; |
| 39 | + var nodeClient; |
| 40 | + dopServer.onsubscribe(function(name, req) { |
| 41 | + if (name === 'DATA') { |
| 42 | + nodeClient = req.node; |
| 43 | + t.equal(dopServer.isTarget(DATA), false, 'Is not registered yet'); |
| 44 | + return DATA; |
| 45 | + } |
| 46 | + else if (name === 'DATA_DEEP') { |
| 47 | + t.equal(dopServer.isRegistered(DATA), true, 'Is registered'); |
| 48 | + t.equal(dopServer.isTarget(DATA), true, 'Is target'); |
| 49 | + t.equal(dopServer.isProxy(DATA.deep), true, 'Is proxy'); |
| 50 | + return DATA.deep; |
| 51 | + } |
| 52 | + else if (name === 'DATA_DEEPER') { |
| 53 | + return dopServer.getObjectTarget(DATA.deep.deeper); |
| 54 | + } |
| 55 | + else if (name === 'ASYNC') { |
| 56 | + setTimeout(function(){ |
| 57 | + req.resolve(dopServer.getObjectProxy(DATA)); |
| 58 | + },10) |
| 59 | + return req; |
| 60 | + } |
| 61 | + else if (name === 'INNER-COPY') { |
| 62 | + return [Math.random(), DATA]; |
| 63 | + } |
| 64 | + else if (name === 'REJECT') { |
| 65 | + req.reject({message:'Subscription rejected'}) |
| 66 | + } |
| 67 | + else if (name === 'RESOLVING STRING') { |
| 68 | + req.resolve('') |
| 69 | + } |
16 | 70 |
|
17 | | - server.on('connect', function(node){ |
18 | | - // node.subscribe('OBJCLIENT'); |
19 | | - }) |
20 | | - dopServer.onsubscribe(function(cuar){ |
21 | | - console.log( cuar ); |
22 | | - return {paco:'pil'}; |
23 | 71 | }) |
24 | 72 |
|
25 | | - myobj = dopClient.register({mola:'mazo'}) |
26 | | - client.subscribe('PUBLIC').into(myobj).then(function(obj){ |
27 | | - console.log( obj===myobj ); |
| 73 | + var objClient, objectDataServer, objectDataClient; |
| 74 | + client.subscribe('DATA').then(function(obj){ |
| 75 | + objClient = obj; |
| 76 | + objectDataServer = dopServer.data.object[1]; |
| 77 | + objectDataClient = dopClient.data.object[1]; |
| 78 | + t.deepEqual(obj, DATA, 'deepEqual data received from server'); |
| 79 | + 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'); |
| 84 | + return client.subscribe('DATA_DEEP'); |
| 85 | + }) |
| 86 | + .then(function(obj_deep){ |
| 87 | + t.equal(obj_deep, objClient.deep, 'DATA_DEEP is the same object'); |
| 88 | + t.deepEqual(obj_deep, DATA.deep, 'DATA_DEEP is deepEqual to original data'); |
| 89 | + return client.subscribe('DATA_DEEPER'); |
| 90 | + }) |
| 91 | + .then(function(obj_deeper){ |
| 92 | + t.equal(obj_deeper, objClient.deep.deeper, 'DATA_DEEPER is the same object'); |
| 93 | + t.deepEqual(obj_deeper, DATA.deep.deeper, 'DATA_DEEPER is deepEqual to original data'); |
| 94 | + return client.subscribe('ASYNC'); |
| 95 | + }) |
| 96 | + .then(function(obj){ |
| 97 | + t.equal(obj, objClient, 'DATA is the same object'); |
| 98 | + t.deepEqual(obj, DATA, 'DATA is deepEqual to original data'); |
| 99 | + return client.subscribe('INNER-COPY'); |
| 100 | + }) |
| 101 | + .then(function(obj){ |
| 102 | + objectDataServer2 = dopServer.data.object[2]; |
| 103 | + objectDataClient2 = dopClient.data.object[2]; |
| 104 | + t.notEqual(objectDataServer.object, objectDataServer2.object[1], 'Not equal to DATA'); |
| 105 | + t.deepEqual(objectDataServer.object, objectDataServer2.object[1], 'deepEqual to DATA'); |
| 106 | + t.deepEqual(dopClient.getObjectId(obj), 2, 'Correct objectId'); |
| 107 | + t.deepEqual(obj[1], DATA, 'deepEqual data received from server'); |
| 108 | + t.deepEqual(objectDataServer2.node[nodeClient.token].subscribed, true, 'Client subscribed'); |
| 109 | + t.deepEqual(objectDataServer2.node[nodeClient.token].owner, false, 'Client is not owner'); |
| 110 | + t.deepEqual(objectDataClient2.node[client.token].subscribed, false, 'Server is not subscribed'); |
| 111 | + t.deepEqual(objectDataClient2.node[client.token].owner, true, 'Server is owner'); |
| 112 | + return client.subscribe('REJECT'); |
| 113 | + }) |
| 114 | + .catch(function(err){ |
| 115 | + t.equal(err.message, 'Subscription rejected', 'Subscription rejected'); |
| 116 | + t.end(); |
| 117 | + return client.subscribe('RESOLVING STRING'); |
28 | 118 | }) |
| 119 | + // .catch(function(err){ |
| 120 | + // console.log( 123131, typeof err ); |
| 121 | + // t.end(); |
| 122 | + // }) |
| 123 | + |
| 124 | +}); |
| 125 | + |
| 126 | + |
| 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) {}); |
| 131 | + |
| 132 | +// test('Into...', function(t) {}); |
| 133 | + |
| 134 | +// test('Server subscribe...', function(t) {}); |
| 135 | + |
| 136 | + |
| 137 | + |
29 | 138 |
|
30 | 139 |
|
31 | | -// }); |
| 140 | + // dopClient.observeProperty(o, 'paco', function(mutation){ |
| 141 | + // console.log( mutation ); |
| 142 | + // }) |
32 | 143 |
|
| 144 | + // dopClient.observe(o, function(mutations){ |
| 145 | + // console.log( mutations ); |
| 146 | + // }) |
0 commit comments