@@ -319,6 +319,41 @@ describe('ParseLiveQuery', function () {
319319 await object . save ( ) ;
320320 } ) ;
321321
322+ it ( 'can log on afterLiveQueryEvent throw' , async ( ) => {
323+ await reconfigureServer ( {
324+ liveQuery : {
325+ classNames : [ 'TestObject' ] ,
326+ } ,
327+ startLiveQueryServer : true ,
328+ verbose : false ,
329+ silent : true ,
330+ } ) ;
331+
332+ const object = new TestObject ( ) ;
333+ await object . save ( ) ;
334+
335+ const logger = require ( '../lib/logger' ) . logger ;
336+ spyOn ( logger , 'error' ) . and . callFake ( ( ) => { } ) ;
337+
338+ let session = undefined ;
339+ Parse . Cloud . afterLiveQueryEvent ( 'TestObject' , ( { sessionToken } ) => {
340+ session = sessionToken ;
341+ /* eslint-disable no-undef */
342+ foo . bar ( ) ;
343+ /* eslint-enable no-undef */
344+ } ) ;
345+
346+ const query = new Parse . Query ( TestObject ) ;
347+ query . equalTo ( 'objectId' , object . id ) ;
348+ const subscription = await query . subscribe ( ) ;
349+ object . set ( { foo : 'bar' } ) ;
350+ await object . save ( ) ;
351+ await new Promise ( resolve => subscription . on ( 'error' , resolve ) ) ;
352+ expect ( logger . error ) . toHaveBeenCalledWith (
353+ `Failed running afterLiveQueryEvent on class TestObject for event update with session ${ session } with:\n Error: {"message":"foo is not defined","code":141}`
354+ ) ;
355+ } ) ;
356+
322357 it ( 'can handle afterEvent sendEvent to false' , async done => {
323358 await reconfigureServer ( {
324359 liveQuery : {
@@ -566,6 +601,33 @@ describe('ParseLiveQuery', function () {
566601 await query . subscribe ( ) ;
567602 } ) ;
568603
604+ it ( 'can log on beforeConnect throw' , async ( ) => {
605+ await reconfigureServer ( {
606+ liveQuery : {
607+ classNames : [ 'TestObject' ] ,
608+ } ,
609+ startLiveQueryServer : true ,
610+ verbose : false ,
611+ silent : true ,
612+ } ) ;
613+
614+ const logger = require ( '../lib/logger' ) . logger ;
615+ spyOn ( logger , 'error' ) . and . callFake ( ( ) => { } ) ;
616+ let token = undefined ;
617+ Parse . Cloud . beforeConnect ( ( { sessionToken } ) => {
618+ token = sessionToken ;
619+ /* eslint-disable no-undef */
620+ foo . bar ( ) ;
621+ /* eslint-enable no-undef */
622+ } ) ;
623+ new Parse . Query ( TestObject ) . subscribe ( ) ;
624+ await new Promise ( resolve => Parse . LiveQuery . on ( 'error' , resolve ) ) ;
625+ Parse . LiveQuery . removeAllListeners ( 'error' ) ;
626+ expect ( logger . error ) . toHaveBeenCalledWith (
627+ `Failed running beforeConnect for session ${ token } with:\n Error: {"message":"foo is not defined","code":141}`
628+ ) ;
629+ } ) ;
630+
569631 it ( 'can handle beforeSubscribe error' , async done => {
570632 await reconfigureServer ( {
571633 liveQuery : {
@@ -594,6 +656,34 @@ describe('ParseLiveQuery', function () {
594656 } ) ;
595657 } ) ;
596658
659+ it ( 'can log on beforeSubscribe error' , async ( ) => {
660+ await reconfigureServer ( {
661+ liveQuery : {
662+ classNames : [ 'TestObject' ] ,
663+ } ,
664+ startLiveQueryServer : true ,
665+ verbose : false ,
666+ silent : true ,
667+ } ) ;
668+
669+ const logger = require ( '../lib/logger' ) . logger ;
670+ spyOn ( logger , 'error' ) . and . callFake ( ( ) => { } ) ;
671+
672+ Parse . Cloud . beforeSubscribe ( TestObject , ( ) => {
673+ /* eslint-disable no-undef */
674+ foo . bar ( ) ;
675+ /* eslint-enable no-undef */
676+ } ) ;
677+
678+ const query = new Parse . Query ( TestObject ) ;
679+ const subscription = await query . subscribe ( ) ;
680+ await new Promise ( resolve => subscription . on ( 'error' , resolve ) ) ;
681+
682+ expect ( logger . error ) . toHaveBeenCalledWith (
683+ `Failed running beforeSubscribe on TestObject for session undefined with:\n Error: {"message":"foo is not defined","code":141}`
684+ ) ;
685+ } ) ;
686+
597687 it ( 'can handle mutate beforeSubscribe query' , async done => {
598688 await reconfigureServer ( {
599689 liveQuery : {
0 commit comments