openapi-to-graphql-lxwang2
Version:
Generates a GraphQL schema for a given OpenAPI Specification (OAS)
70 lines (61 loc) • 1.71 kB
text/typescript
// Copyright IBM Corp. 2017,2018. All Rights Reserved.
// Node module: openapi-to-graphql
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT
/* globals beforeAll, test, expect */
const openAPIToGraphQL = require('../lib/index')
const Oas3Tools = require('../lib/oas_3_tools')
const { parse, validate } = require('graphql')
/**
* Set up the schema first
*/
const oas = require('./fixtures/government_social_work.json')
let createdSchema
beforeAll(() => {
return openAPIToGraphQL
.createGraphQLSchema(oas)
.then(({ schema, report }) => {
createdSchema = schema
})
})
test('All query endpoints present', () => {
let oasGetCount = 0
for (let path in oas.paths) {
for (let method in oas.paths[path]) {
if (method === 'get') oasGetCount++
}
}
const gqlTypes = Object.keys(createdSchema._typeMap.Query.getFields()).length
expect(gqlTypes).toEqual(oasGetCount)
})
test('All mutation endpoints present', () => {
let oasMutCount = 0
for (let path in oas.paths) {
for (let method in oas.paths[path]) {
if (Oas3Tools.isOperation(method) && method !== 'get') oasMutCount++
}
}
const gqlTypes = Object.keys(createdSchema._typeMap.Mutation.getFields())
.length
expect(gqlTypes).toEqual(oasMutCount)
})
test('Get resource', () => {
const query = `{
assessmentTypes (
contentType: ""
acceptLanguage: ""
userAgent:""
apiVersion:"1.1.0"
offset: "40"
limit: "test"
) {
data {
assessmentTypeId
}
}
}`
const ast = parse(query)
const errors = validate(createdSchema, ast)
expect(errors).toEqual([])
})