Skip to content

Commit 82bf481

Browse files
Moumoulsdavimacedo
authored andcommitted
fix queries (parse-community#6363)
1 parent 8ee829f commit 82bf481

File tree

2 files changed

+120
-7
lines changed

2 files changed

+120
-7
lines changed

spec/ParseGraphQLServer.spec.js

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9980,6 +9980,87 @@ describe('ParseGraphQLServer', () => {
99809980
expect(typeof getResult.data.someClass.someField).toEqual('object');
99819981
expect(getResult.data.someClass.someField).toEqual(someFieldValue);
99829982
expect(getResult.data.someClasses.edges.length).toEqual(1);
9983+
9984+
const getGeoWhere = await apolloClient.query({
9985+
query: gql`
9986+
query GeoQuery($latitude: Float!, $longitude: Float!) {
9987+
nearSphere: someClasses(
9988+
where: {
9989+
someField: {
9990+
nearSphere: {
9991+
latitude: $latitude
9992+
longitude: $longitude
9993+
}
9994+
}
9995+
}
9996+
) {
9997+
edges {
9998+
node {
9999+
id
10000+
}
10001+
}
10002+
}
10003+
geoWithin: someClasses(
10004+
where: {
10005+
someField: {
10006+
geoWithin: {
10007+
centerSphere: {
10008+
distance: 10
10009+
center: {
10010+
latitude: $latitude
10011+
longitude: $longitude
10012+
}
10013+
}
10014+
}
10015+
}
10016+
}
10017+
) {
10018+
edges {
10019+
node {
10020+
id
10021+
}
10022+
}
10023+
}
10024+
within: someClasses(
10025+
where: {
10026+
someField: {
10027+
within: {
10028+
box: {
10029+
bottomLeft: {
10030+
latitude: $latitude
10031+
longitude: $longitude
10032+
}
10033+
upperRight: {
10034+
latitude: $latitude
10035+
longitude: $longitude
10036+
}
10037+
}
10038+
}
10039+
}
10040+
}
10041+
) {
10042+
edges {
10043+
node {
10044+
id
10045+
}
10046+
}
10047+
}
10048+
}
10049+
`,
10050+
variables: {
10051+
latitude: 45,
10052+
longitude: 45,
10053+
},
10054+
});
10055+
expect(getGeoWhere.data.nearSphere.edges[0].node.id).toEqual(
10056+
createResult.data.createSomeClass.someClass.id
10057+
);
10058+
expect(getGeoWhere.data.geoWithin.edges[0].node.id).toEqual(
10059+
createResult.data.createSomeClass.someClass.id
10060+
);
10061+
expect(getGeoWhere.data.within.edges[0].node.id).toEqual(
10062+
createResult.data.createSomeClass.someClass.id
10063+
);
998310064
} catch (e) {
998410065
handleError(e);
998510066
}
@@ -10078,6 +10159,34 @@ describe('ParseGraphQLServer', () => {
1007810159
}))
1007910160
);
1008010161
expect(getResult.data.someClasses.edges.length).toEqual(1);
10162+
const getIntersect = await apolloClient.query({
10163+
query: gql`
10164+
query IntersectQuery($point: GeoPointInput!) {
10165+
someClasses(
10166+
where: {
10167+
somePolygonField: { geoIntersects: { point: $point } }
10168+
}
10169+
) {
10170+
edges {
10171+
node {
10172+
id
10173+
somePolygonField {
10174+
latitude
10175+
longitude
10176+
}
10177+
}
10178+
}
10179+
}
10180+
}
10181+
`,
10182+
variables: {
10183+
point: { latitude: 44, longitude: 45 },
10184+
},
10185+
});
10186+
expect(getIntersect.data.someClasses.edges.length).toEqual(1);
10187+
expect(getIntersect.data.someClasses.edges[0].node.id).toEqual(
10188+
createResult.data.createSomeClass.someClass.id
10189+
);
1008110190
} catch (e) {
1008210191
handleError(e);
1008310192
}

src/GraphQL/transformers/query.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -182,13 +182,17 @@ const transformQueryConstraintInputToParse = (
182182
return;
183183
}
184184
switch (fieldName) {
185-
case '$point':
186-
case '$nearSphere':
185+
case 'point':
187186
if (typeof fieldValue === 'object' && !fieldValue.__type) {
188187
fieldValue.__type = 'GeoPoint';
189188
}
190189
break;
191-
case '$box':
190+
case 'nearSphere':
191+
if (typeof fieldValue === 'object' && !fieldValue.__type) {
192+
fieldValue.__type = 'GeoPoint';
193+
}
194+
break;
195+
case 'box':
192196
if (
193197
typeof fieldValue === 'object' &&
194198
fieldValue.bottomLeft &&
@@ -204,10 +208,10 @@ const transformQueryConstraintInputToParse = (
204208
...fieldValue.upperRight,
205209
},
206210
];
207-
constraints[fieldName] = fieldValue;
211+
constraints[parseConstraintMap[fieldName]] = fieldValue;
208212
}
209213
break;
210-
case '$polygon':
214+
case 'polygon':
211215
if (fieldValue instanceof Array) {
212216
fieldValue.forEach(geoPoint => {
213217
if (typeof geoPoint === 'object' && !geoPoint.__type) {
@@ -216,7 +220,7 @@ const transformQueryConstraintInputToParse = (
216220
});
217221
}
218222
break;
219-
case '$centerSphere':
223+
case 'centerSphere':
220224
if (
221225
typeof fieldValue === 'object' &&
222226
fieldValue.center &&
@@ -229,7 +233,7 @@ const transformQueryConstraintInputToParse = (
229233
},
230234
fieldValue.distance,
231235
];
232-
constraints[fieldName] = fieldValue;
236+
constraints[parseConstraintMap[fieldName]] = fieldValue;
233237
}
234238
break;
235239
}

0 commit comments

Comments
 (0)