@@ -10,7 +10,9 @@ var transportConnect = require('dop-transports').connect[transportName];
1010
1111var server = dopServer . listen ( { transport :transportListen } ) ;
1212var client = dopClient . connect ( { transport :transportConnect , listener :server } ) ;
13-
13+ server . on ( 'connect' , function ( node ) {
14+ nodeClient = node ;
15+ } )
1416
1517
1618test ( '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