@@ -416,4 +416,44 @@ describe('LiveQueryClient', () => {
416
416
expect ( liveQueryClient . socket . close ) . toBeCalled ( ) ;
417
417
expect ( liveQueryClient . state ) . toBe ( 'disconnected' ) ;
418
418
} ) ;
419
+
420
+ it ( 'can handle WebSocket subclass' , ( ) => {
421
+ const MyExtendedClass = ParseObject . extend ( 'MyExtendedClass' ) ;
422
+ ParseObject . registerSubclass ( 'MyExtendedClass' , MyExtendedClass ) ;
423
+
424
+ const liveQueryClient = new LiveQueryClient ( {
425
+ applicationId : 'applicationId' ,
426
+ serverURL : 'ws://test' ,
427
+ javascriptKey : 'javascriptKey' ,
428
+ masterKey : 'masterKey' ,
429
+ sessionToken : 'sessionToken'
430
+ } ) ;
431
+ // Add mock subscription
432
+ const subscription = new events . EventEmitter ( ) ;
433
+ liveQueryClient . subscriptions . set ( 1 , subscription ) ;
434
+ const object = new MyExtendedClass ( ) ;
435
+ object . set ( 'key' , 'value' ) ;
436
+ const data = {
437
+ op : 'create' ,
438
+ clientId : 1 ,
439
+ requestId : 1 ,
440
+ object : object . _toFullJSON ( ) ,
441
+ } ;
442
+ const event = {
443
+ data : JSON . stringify ( data )
444
+ }
445
+ // Register checked in advance
446
+ let isChecked = false ;
447
+ subscription . on ( 'create' , function ( parseObject ) {
448
+ isChecked = true ;
449
+ expect ( parseObject instanceof MyExtendedClass ) . toBe ( true ) ;
450
+ expect ( parseObject . get ( 'key' ) ) . toEqual ( 'value' ) ;
451
+ expect ( parseObject . get ( 'className' ) ) . toBeUndefined ( ) ;
452
+ expect ( parseObject . get ( '__type' ) ) . toBeUndefined ( ) ;
453
+ } ) ;
454
+
455
+ liveQueryClient . _handleWebSocketMessage ( event ) ;
456
+
457
+ expect ( isChecked ) . toBe ( true ) ;
458
+ } ) ;
419
459
} ) ;
0 commit comments