Skip to content

Commit

Permalink
Fix tests for new defaults
Browse files Browse the repository at this point in the history
  • Loading branch information
Sashko Stubailo committed Oct 23, 2016
1 parent e6afc9d commit 183d5bf
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 15 deletions.
2 changes: 1 addition & 1 deletion src/Interfaces.ts
Expand Up @@ -42,7 +42,7 @@ export type IConnectors = { [key: string]: IConnector };

export interface IExecutableSchemaDefinition {
typeDefs: ITypeDefinitions;
resolvers: IResolvers;
resolvers?: IResolvers;
connectors?: IConnectors;
logger?: ILogger;
allowUndefinedInResolve?: boolean;
Expand Down
5 changes: 3 additions & 2 deletions src/schemaGenerator.ts
Expand Up @@ -43,6 +43,7 @@ class SchemaError extends Error {

constructor(message: string) {
super(message);
this.message = message;
Error.captureStackTrace(this, this.constructor);
}
}
Expand Down Expand Up @@ -87,7 +88,7 @@ function _generateSchema(

function makeExecutableSchema({
typeDefs,
resolvers,
resolvers = {},
connectors,
logger,
allowUndefinedInResolve = true,
Expand Down Expand Up @@ -320,7 +321,7 @@ function assertResolveFunctionsPresent(schema: GraphQLSchema, resolverValidation
requireResolversForAllFields = false,
} = resolverValidationOptions;

if (requireResolversForAllFields && (!requireResolversForArgs || !requireResolversForNonScalar)) {
if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) {
throw new TypeError(
'requireResolversForAllFields takes precedence over the more specific assertions. ' +
'Please configure either requireResolversForAllFields or requireResolversForArgs / ' +
Expand Down
30 changes: 18 additions & 12 deletions src/test/testSchemaGenerator.ts
Expand Up @@ -97,10 +97,6 @@ describe('generating schema from shorthand', () => {
expect(() => (<any> makeExecutableSchema)()).to.throw('undefined');
});

it('throws an error if no resolver is provided', () => {
expect(() => (<any> makeExecutableSchema)({ typeDefs: 'blah' })).to.throw('Must provide resolvers');
});

it('throws an error if typeDefinitions are not provided', () => {
expect(() => (<any> makeExecutableSchema)({ typeDefs: undefined, resolvers: {} })).to.throw('Must provide typeDefs');
});
Expand Down Expand Up @@ -576,7 +572,9 @@ describe('generating schema from shorthand', () => {
const rf = { Query: {} };

expectWarning(() => {
makeExecutableSchema({ typeDefs: short, resolvers: rf });
makeExecutableSchema({ typeDefs: short, resolvers: rf, resolverValidationOptions: {
requireResolversForArgs: true,
} });
}, 'Resolve function missing for "Query.bird"');
});

Expand All @@ -593,7 +591,7 @@ describe('generating schema from shorthand', () => {
const rf = { Query: {} };

// tslint:disable-next-line: max-line-length
assert.doesNotThrow(makeExecutableSchema.bind(null, { typeDefs: short, resolvers: rf, resolverValidationOptions: { requireResolversForArgs: false } }), SchemaError);
assert.doesNotThrow(makeExecutableSchema.bind(null, { typeDefs: short, resolvers: rf }), SchemaError);
});

it('throws an error if field.resolve is not a function', () => {
Expand All @@ -610,7 +608,11 @@ describe('generating schema from shorthand', () => {
}),
});

expect(() => assertResolveFunctionsPresent(schema)).to.throw('Resolver "Query.aField" must be a function');
const resolverValidationOptions: IResolverValidationOptions = {
requireResolversForArgs: true,
};

expect(() => assertResolveFunctionsPresent(schema, resolverValidationOptions)).to.throw('Resolver "Query.aField" must be a function');
});

it('throws an error if a resolver is not a function', () => {
Expand Down Expand Up @@ -641,8 +643,12 @@ describe('generating schema from shorthand', () => {

const rf = {};

const resolverValidationOptions: IResolverValidationOptions = {
requireResolversForNonScalar: true,
};

expectWarning(() => {
makeExecutableSchema({ typeDefs: short, resolvers: rf });
makeExecutableSchema({ typeDefs: short, resolvers: rf, resolverValidationOptions });
}, 'Resolve function missing for "Query.bird"');
});

Expand Down Expand Up @@ -714,16 +720,16 @@ describe('generating schema from shorthand', () => {

assertOptionsError({
requireResolversForAllFields: true,
requireResolversForNonScalar: false,
requireResolversForArgs: false,
requireResolversForNonScalar: true,
requireResolversForArgs: true,
});
assertOptionsError({
requireResolversForAllFields: true,
requireResolversForNonScalar: false,
requireResolversForNonScalar: true,
});
assertOptionsError({
requireResolversForAllFields: true,
requireResolversForArgs: false,
requireResolversForArgs: true,
});
});

Expand Down

0 comments on commit 183d5bf

Please sign in to comment.