GraphQL classConfig query alias (#6257)

* adds alias option

* added tests
This commit is contained in:
Old Grandpa
2019-12-04 03:14:48 +03:00
committed by Antonio Davi Macedo Coelho de Castro
parent abcc5fdb31
commit 188f033330
3 changed files with 122 additions and 5 deletions

View File

@@ -564,4 +564,102 @@ describe('ParseGraphQLSchema', () => {
).toEqual(Object.keys(mutations2).sort());
});
});
describe('query alias', () => {
it('Should be able to define alias for find query', async () => {
const parseGraphQLSchema = new ParseGraphQLSchema({
databaseController,
parseGraphQLController,
log: defaultLogger,
appId,
});
await parseGraphQLSchema.parseGraphQLController.updateGraphQLConfig({
classConfigs: [
{
className: 'Data',
query: {
get: true,
getAlias: 'precious_data',
find: true,
findAlias: 'data_results',
},
},
],
});
const data = new Parse.Object('Data');
await data.save();
await parseGraphQLSchema.databaseController.schemaCache.clear();
await parseGraphQLSchema.load();
const queries1 = parseGraphQLSchema.graphQLQueries;
expect(Object.keys(queries1)).toContain('data_results');
expect(Object.keys(queries1)).toContain('precious_data');
});
it('should fail if query alias is not a string', async () => {
const parseGraphQLSchema = new ParseGraphQLSchema({
databaseController,
parseGraphQLController,
log: defaultLogger,
appId,
});
const classConfigsBoolFindAlias = {
classConfigs: [
{
className: 'Data',
query: {
get: true,
getAlias: 'valid',
find: true,
findAlias: true,
},
},
],
};
const classConfigsNumberGetAlias = {
classConfigs: [
{
className: 'Pants',
query: {
get: true,
getAlias: 1,
find: true,
findAlias: 'valid',
},
},
],
};
let className;
className = classConfigsBoolFindAlias.classConfigs[0].className;
try {
await parseGraphQLSchema.parseGraphQLController.updateGraphQLConfig(
classConfigsBoolFindAlias
);
} catch (e) {
expect(e).toMatch(
`Invalid graphQLConfig: classConfig:${className} is invalid because "query.findAlias" must be a string`
);
}
className = classConfigsNumberGetAlias.classConfigs[0].className;
try {
await parseGraphQLSchema.parseGraphQLController.updateGraphQLConfig(
classConfigsNumberGetAlias
);
} catch (e) {
expect(e).toMatch(
`Invalid graphQLConfig: classConfig:${className} is invalid because "query.getAlias" must be a string`
);
}
});
});
});