Skip to content

Commit

Permalink
Improve typings for validation functions
Browse files Browse the repository at this point in the history
Split out from graphql#1438
  • Loading branch information
IvanGoncharov committed Jul 31, 2018
1 parent e124ca8 commit 6bde844
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 13 deletions.
18 changes: 9 additions & 9 deletions src/validation/__tests__/harness.js
Original file line number Diff line number Diff line change
Expand Up @@ -421,30 +421,30 @@ export const testSchema = new GraphQLSchema({
],
});

function expectValid(schema, rules, queryString) {
const errors = validate(schema, parse(queryString), rules);
function expectValid(schema, rule, queryString) {
const errors = validate(schema, parse(queryString), [rule]);
expect(errors).to.deep.equal([], 'Should validate');
}

function expectInvalid(schema, rules, queryString, expectedErrors) {
const errors = validate(schema, parse(queryString), rules);
function expectInvalid(schema, rule, queryString, expectedErrors) {
const errors = validate(schema, parse(queryString), [rule]);
expect(errors).to.have.length.of.at.least(1, 'Should not validate');
expect(errors).to.deep.equal(expectedErrors);
return errors;
}

export function expectPassesRule(rule, queryString) {
return expectValid(testSchema, [rule], queryString);
return expectValid(testSchema, rule, queryString);
}

export function expectFailsRule(rule, queryString, errors) {
return expectInvalid(testSchema, [rule], queryString, errors);
return expectInvalid(testSchema, rule, queryString, errors);
}

export function expectPassesRuleWithSchema(schema, rule, queryString, errors) {
return expectValid(schema, [rule], queryString, errors);
export function expectPassesRuleWithSchema(schema, rule, queryString) {
return expectValid(schema, rule, queryString);
}

export function expectFailsRuleWithSchema(schema, rule, queryString, errors) {
return expectInvalid(schema, [rule], queryString, errors);
return expectInvalid(schema, rule, queryString, errors);
}
7 changes: 4 additions & 3 deletions src/validation/specifiedRules.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
* @flow strict
*/

import type { ASTVisitor } from '../language/visitor';
import type ValidationContext from './ValidationContext';

// Spec Section: "Executable Definitions"
import { ExecutableDefinitions } from './rules/ExecutableDefinitions';

Expand Down Expand Up @@ -85,15 +88,13 @@ import { OverlappingFieldsCanBeMerged } from './rules/OverlappingFieldsCanBeMerg
// Spec Section: "Input Object Field Uniqueness"
import { UniqueInputFieldNames } from './rules/UniqueInputFieldNames';

import type ValidationContext from './ValidationContext';

/**
* This set includes all validation rules defined by the GraphQL spec.
*
* The order of the rules in this list has been adjusted to lead to the
* most clear output when encountering multiple validation errors.
*/
export const specifiedRules: Array<(context: ValidationContext) => any> = [
export const specifiedRules: Array<(ValidationContext) => ASTVisitor> = [
ExecutableDefinitions,
UniqueOperationNames,
LoneAnonymousOperation,
Expand Down
3 changes: 2 additions & 1 deletion src/validation/validate.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

import invariant from '../jsutils/invariant';
import type { GraphQLError } from '../error';
import type { ASTVisitor } from '../language/visitor';
import { visit, visitInParallel, visitWithTypeInfo } from '../language/visitor';
import type { DocumentNode } from '../language/ast';
import type { GraphQLSchema } from '../type/schema';
Expand Down Expand Up @@ -36,7 +37,7 @@ import ValidationContext from './ValidationContext';
export function validate(
schema: GraphQLSchema,
documentAST: DocumentNode,
rules?: $ReadOnlyArray<any> = specifiedRules,
rules?: $ReadOnlyArray<(ValidationContext) => ASTVisitor> = specifiedRules,
typeInfo?: TypeInfo = new TypeInfo(schema),
): $ReadOnlyArray<GraphQLError> {
invariant(documentAST, 'Must provide document');
Expand Down

0 comments on commit 6bde844

Please sign in to comment.