@@ -745,13 +745,31 @@ describe('ParseServerRESTController', () => {
745745 await RESTController . request ( 'PUT' , `/classes/MyObject/${ createRes . objectId } ` , {
746746 presentField : 'updated' ,
747747 absentField : undefined ,
748+ nested : { absentField : undefined , presentField : 'value' } ,
748749 } ) ;
749750
750751 const getRes = await RESTController . request ( 'GET' , `/classes/MyObject/${ createRes . objectId } ` ) ;
751752
752753 expect ( getRes . presentField ) . toBe ( 'updated' ) ;
753754 expect ( getRes . absentField ) . toBeUndefined ( ) ;
754755 expect ( 'absentField' in getRes ) . toBe ( false ) ;
756+ expect ( getRes . nested ) . toBeDefined ( ) ;
757+ expect ( getRes . nested . presentField ) . toBe ( 'value' ) ;
758+ expect ( 'absentField' in getRes . nested ) . toBe ( false ) ;
759+ } ) ;
760+
761+ it ( 'should not convert undefined values to null on create with directAccess' , async ( ) => {
762+ const createRes = await RESTController . request ( 'POST' , '/classes/MyObject' , {
763+ presentField : 'hello' ,
764+ absentField : undefined ,
765+ } ) ;
766+ expect ( createRes . objectId ) . toBeDefined ( ) ;
767+
768+ const getRes = await RESTController . request ( 'GET' , `/classes/MyObject/${ createRes . objectId } ` ) ;
769+
770+ expect ( getRes . presentField ) . toBe ( 'hello' ) ;
771+ expect ( getRes . absentField ) . toBeUndefined ( ) ;
772+ expect ( 'absentField' in getRes ) . toBe ( false ) ;
755773 } ) ;
756774
757775 it ( 'should not convert undefined values to null on update without directAccess (HTTP mode)' , async ( ) => {
@@ -774,7 +792,7 @@ describe('ParseServerRESTController', () => {
774792 method : 'PUT' ,
775793 headers,
776794 url : `${ serverURL } /classes/MyObject/${ createRes . data . objectId } ` ,
777- body : { presentField : 'updated' , absentField : undefined } ,
795+ body : { presentField : 'updated' , absentField : undefined , nested : { absentField : undefined , presentField : 'value' } } ,
778796 } ) ;
779797
780798 const getRes = await request ( {
@@ -786,5 +804,35 @@ describe('ParseServerRESTController', () => {
786804 expect ( getRes . data . presentField ) . toBe ( 'updated' ) ;
787805 expect ( getRes . data . absentField ) . toBeUndefined ( ) ;
788806 expect ( 'absentField' in getRes . data ) . toBe ( false ) ;
807+ expect ( getRes . data . nested ) . toBeDefined ( ) ;
808+ expect ( getRes . data . nested . presentField ) . toBe ( 'value' ) ;
809+ expect ( 'absentField' in getRes . data . nested ) . toBe ( false ) ;
810+ } ) ;
811+
812+ it ( 'should not convert undefined values to null on create without directAccess (HTTP mode)' , async ( ) => {
813+ const serverURL = 'http://localhost:8378/1' ;
814+ const headers = {
815+ 'Content-Type' : 'application/json' ,
816+ 'X-Parse-Application-Id' : Parse . applicationId ,
817+ 'X-Parse-Master-Key' : Parse . masterKey ,
818+ } ;
819+
820+ const createRes = await request ( {
821+ method : 'POST' ,
822+ headers,
823+ url : `${ serverURL } /classes/MyObject` ,
824+ body : { presentField : 'hello' , absentField : undefined } ,
825+ } ) ;
826+ expect ( createRes . data . objectId ) . toBeDefined ( ) ;
827+
828+ const getRes = await request ( {
829+ method : 'GET' ,
830+ headers,
831+ url : `${ serverURL } /classes/MyObject/${ createRes . data . objectId } ` ,
832+ } ) ;
833+
834+ expect ( getRes . data . presentField ) . toBe ( 'hello' ) ;
835+ expect ( getRes . data . absentField ) . toBeUndefined ( ) ;
836+ expect ( 'absentField' in getRes . data ) . toBe ( false ) ;
789837 } ) ;
790838} ) ;
0 commit comments