Add tests for ordering by multiple fields (#6316)
* fix(GraphQL): Unable to run queries with order as array An internal server error is thrown if the `order` query parameter is an array. Currently, `order` only works with a single value. * Add tests * Reset cache * Remove one of the tests from Postgres Co-authored-by: Douglas Muraoka <douglas.muraoka@gmail.com>
This commit is contained in:
committed by
GitHub
parent
576631f09e
commit
4107a59063
@@ -372,6 +372,7 @@ describe('ParseGraphQLServer', () => {
|
|||||||
|
|
||||||
object1 = new Parse.Object('GraphQLClass');
|
object1 = new Parse.Object('GraphQLClass');
|
||||||
object1.set('someField', 'someValue1');
|
object1.set('someField', 'someValue1');
|
||||||
|
object1.set('someOtherField', 'A');
|
||||||
const object1ACL = new Parse.ACL();
|
const object1ACL = new Parse.ACL();
|
||||||
object1ACL.setPublicReadAccess(false);
|
object1ACL.setPublicReadAccess(false);
|
||||||
object1ACL.setPublicWriteAccess(false);
|
object1ACL.setPublicWriteAccess(false);
|
||||||
@@ -386,6 +387,7 @@ describe('ParseGraphQLServer', () => {
|
|||||||
|
|
||||||
object2 = new Parse.Object('GraphQLClass');
|
object2 = new Parse.Object('GraphQLClass');
|
||||||
object2.set('someField', 'someValue2');
|
object2.set('someField', 'someValue2');
|
||||||
|
object2.set('someOtherField', 'A');
|
||||||
const object2ACL = new Parse.ACL();
|
const object2ACL = new Parse.ACL();
|
||||||
object2ACL.setPublicReadAccess(false);
|
object2ACL.setPublicReadAccess(false);
|
||||||
object2ACL.setPublicWriteAccess(false);
|
object2ACL.setPublicWriteAccess(false);
|
||||||
@@ -400,6 +402,7 @@ describe('ParseGraphQLServer', () => {
|
|||||||
|
|
||||||
object3 = new Parse.Object('GraphQLClass');
|
object3 = new Parse.Object('GraphQLClass');
|
||||||
object3.set('someField', 'someValue3');
|
object3.set('someField', 'someValue3');
|
||||||
|
object3.set('someOtherField', 'B');
|
||||||
object3.set('pointerToUser', user5);
|
object3.set('pointerToUser', user5);
|
||||||
await object3.save(undefined, { useMasterKey: true });
|
await object3.save(undefined, { useMasterKey: true });
|
||||||
|
|
||||||
@@ -5937,6 +5940,98 @@ describe('ParseGraphQLServer', () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should order by multiple fields', async () => {
|
||||||
|
await prepareData();
|
||||||
|
|
||||||
|
await resetGraphQLCache();
|
||||||
|
|
||||||
|
let result;
|
||||||
|
try {
|
||||||
|
result = await apolloClient.query({
|
||||||
|
query: gql`
|
||||||
|
query OrderByMultipleFields($order: [GraphQLClassOrder!]) {
|
||||||
|
graphQLClasses(order: $order) {
|
||||||
|
edges {
|
||||||
|
node {
|
||||||
|
objectId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
variables: {
|
||||||
|
order: ['someOtherField_DESC', 'someField_ASC'],
|
||||||
|
},
|
||||||
|
context: {
|
||||||
|
headers: {
|
||||||
|
'X-Parse-Master-Key': 'test',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
handleError(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(
|
||||||
|
result.data.graphQLClasses.edges.map(edge => edge.node.objectId)
|
||||||
|
).toEqual([object3.id, object1.id, object2.id]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it_only_db('mongo')(
|
||||||
|
'should order by multiple fields on a relation field',
|
||||||
|
async () => {
|
||||||
|
await prepareData();
|
||||||
|
|
||||||
|
const parentObject = new Parse.Object('ParentClass');
|
||||||
|
const relation = parentObject.relation('graphQLClasses');
|
||||||
|
relation.add(object1);
|
||||||
|
relation.add(object2);
|
||||||
|
relation.add(object3);
|
||||||
|
await parentObject.save();
|
||||||
|
|
||||||
|
await resetGraphQLCache();
|
||||||
|
|
||||||
|
let result;
|
||||||
|
try {
|
||||||
|
result = await apolloClient.query({
|
||||||
|
query: gql`
|
||||||
|
query OrderByMultipleFieldsOnRelation(
|
||||||
|
$id: ID!
|
||||||
|
$order: [GraphQLClassOrder!]
|
||||||
|
) {
|
||||||
|
parentClass(id: $id) {
|
||||||
|
graphQLClasses(order: $order) {
|
||||||
|
edges {
|
||||||
|
node {
|
||||||
|
objectId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
variables: {
|
||||||
|
id: parentObject.id,
|
||||||
|
order: ['someOtherField_DESC', 'someField_ASC'],
|
||||||
|
},
|
||||||
|
context: {
|
||||||
|
headers: {
|
||||||
|
'X-Parse-Master-Key': 'test',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
handleError(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(
|
||||||
|
result.data.parentClass.graphQLClasses.edges.map(
|
||||||
|
edge => edge.node.objectId
|
||||||
|
)
|
||||||
|
).toEqual([object3.id, object1.id, object2.id]);
|
||||||
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user