@@ -372,6 +372,7 @@ describe('ParseGraphQLServer', () => {
372
372
373
373
object1 = new Parse . Object ( 'GraphQLClass' ) ;
374
374
object1 . set ( 'someField' , 'someValue1' ) ;
375
+ object1 . set ( 'someOtherField' , 'A' ) ;
375
376
const object1ACL = new Parse . ACL ( ) ;
376
377
object1ACL . setPublicReadAccess ( false ) ;
377
378
object1ACL . setPublicWriteAccess ( false ) ;
@@ -386,6 +387,7 @@ describe('ParseGraphQLServer', () => {
386
387
387
388
object2 = new Parse . Object ( 'GraphQLClass' ) ;
388
389
object2 . set ( 'someField' , 'someValue2' ) ;
390
+ object2 . set ( 'someOtherField' , 'A' ) ;
389
391
const object2ACL = new Parse . ACL ( ) ;
390
392
object2ACL . setPublicReadAccess ( false ) ;
391
393
object2ACL . setPublicWriteAccess ( false ) ;
@@ -400,6 +402,7 @@ describe('ParseGraphQLServer', () => {
400
402
401
403
object3 = new Parse . Object ( 'GraphQLClass' ) ;
402
404
object3 . set ( 'someField' , 'someValue3' ) ;
405
+ object3 . set ( 'someOtherField' , 'B' ) ;
403
406
object3 . set ( 'pointerToUser' , user5 ) ;
404
407
await object3 . save ( undefined , { useMasterKey : true } ) ;
405
408
@@ -5937,6 +5940,98 @@ describe('ParseGraphQLServer', () => {
5937
5940
}
5938
5941
} ) ;
5939
5942
} ) ;
5943
+
5944
+ it ( 'should order by multiple fields' , async ( ) => {
5945
+ await prepareData ( ) ;
5946
+
5947
+ await resetGraphQLCache ( ) ;
5948
+
5949
+ let result ;
5950
+ try {
5951
+ result = await apolloClient . query ( {
5952
+ query : gql `
5953
+ query OrderByMultipleFields($order: [GraphQLClassOrder!]) {
5954
+ graphQLClasses(order: $order) {
5955
+ edges {
5956
+ node {
5957
+ objectId
5958
+ }
5959
+ }
5960
+ }
5961
+ }
5962
+ ` ,
5963
+ variables : {
5964
+ order : [ 'someOtherField_DESC' , 'someField_ASC' ] ,
5965
+ } ,
5966
+ context : {
5967
+ headers : {
5968
+ 'X-Parse-Master-Key' : 'test' ,
5969
+ } ,
5970
+ } ,
5971
+ } ) ;
5972
+ } catch ( e ) {
5973
+ handleError ( e ) ;
5974
+ }
5975
+
5976
+ expect (
5977
+ result . data . graphQLClasses . edges . map ( edge => edge . node . objectId )
5978
+ ) . toEqual ( [ object3 . id , object1 . id , object2 . id ] ) ;
5979
+ } ) ;
5980
+
5981
+ it_only_db ( 'mongo' ) (
5982
+ 'should order by multiple fields on a relation field' ,
5983
+ async ( ) => {
5984
+ await prepareData ( ) ;
5985
+
5986
+ const parentObject = new Parse . Object ( 'ParentClass' ) ;
5987
+ const relation = parentObject . relation ( 'graphQLClasses' ) ;
5988
+ relation . add ( object1 ) ;
5989
+ relation . add ( object2 ) ;
5990
+ relation . add ( object3 ) ;
5991
+ await parentObject . save ( ) ;
5992
+
5993
+ await resetGraphQLCache ( ) ;
5994
+
5995
+ let result ;
5996
+ try {
5997
+ result = await apolloClient . query ( {
5998
+ query : gql `
5999
+ query OrderByMultipleFieldsOnRelation(
6000
+ $id: ID!
6001
+ $order: [GraphQLClassOrder!]
6002
+ ) {
6003
+ parentClass(id: $id) {
6004
+ graphQLClasses(order: $order) {
6005
+ edges {
6006
+ node {
6007
+ objectId
6008
+ }
6009
+ }
6010
+ }
6011
+ }
6012
+ }
6013
+ ` ,
6014
+ variables : {
6015
+ id : parentObject . id ,
6016
+ order : [ 'someOtherField_DESC' , 'someField_ASC' ] ,
6017
+ } ,
6018
+ context : {
6019
+ headers : {
6020
+ 'X-Parse-Master-Key' : 'test' ,
6021
+ } ,
6022
+ } ,
6023
+ } ) ;
6024
+ } catch ( e ) {
6025
+ handleError ( e ) ;
6026
+ }
6027
+
6028
+ expect (
6029
+ result . data . parentClass . graphQLClasses . edges . map (
6030
+ edge => edge . node . objectId
6031
+ )
6032
+ ) . toEqual ( [ object3 . id , object1 . id , object2 . id ] ) ;
6033
+ }
6034
+ ) ;
5940
6035
} ) ;
5941
6036
} ) ;
5942
6037
0 commit comments