From 9efc60b7e075fce6ef74b79d4bb27803ce4115ec Mon Sep 17 00:00:00 2001 From: Eddy Nguyen Date: Sat, 18 Jan 2025 22:01:10 +1100 Subject: [PATCH] Add tests --- .../graphql-codegen-cli/tests/config.spec.ts | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 packages/graphql-codegen-cli/tests/config.spec.ts diff --git a/packages/graphql-codegen-cli/tests/config.spec.ts b/packages/graphql-codegen-cli/tests/config.spec.ts new file mode 100644 index 00000000000..e1863c52991 --- /dev/null +++ b/packages/graphql-codegen-cli/tests/config.spec.ts @@ -0,0 +1,89 @@ +import { createContext, ensureContext } from '../src/index.js'; + +describe('Codegen config - Context', () => { + it('loads and merge multiple schemas when using GraphQL config', async () => { + const context = await createContext({ + config: './packages/graphql-codegen-cli/tests/test-files/graphql.config.js', + project: 'prj1', + errorsOnly: true, + overwrite: true, + profile: true, + require: [], + silent: false, + watch: false, + }); + + const schema1 = /* GraphQL */ ` + type Query + scalar Date + `; + + const schema2 = /* GraphQL */ ` + extend type Query { + me: User + } + type User { + id: ID! + name: String! + createdAt: Date! + } + `; + + const schema3 = /* GraphQL */ ` + extend type Query { + media: Media + } + interface Media { + id: ID! + } + type Image implements Media { + id: ID! + url: String! + } + type Book implements Media { + id: ID! + title: String! + } + `; + + const mergedSchema = await context.loadSchema([schema1, schema2, schema3]); + + const typeMap = mergedSchema.getTypeMap(); + + expect(typeMap['Query']).toBeDefined(); + expect(typeMap['Date']).toBeDefined(); + expect(typeMap['User']).toBeDefined(); + expect(typeMap['Media']).toBeDefined(); + expect(typeMap['Image']).toBeDefined(); + expect(typeMap['Book']).toBeDefined(); + }); + + it('loads and merge multiple schemas when using input config', async () => { + const context = ensureContext({ + generates: {}, + }); + + const schema1 = /* GraphQL */ ` + type Mutation + scalar DateTime + `; + + const schema2 = /* GraphQL */ ` + extend type Mutation { + createUser: User + } + type User { + id: ID! + createdAt: DateTime! + } + `; + + const mergedSchema = await context.loadSchema([schema1, schema2]); + + const typeMap = mergedSchema.getTypeMap(); + + expect(typeMap['Mutation']).toBeDefined(); + expect(typeMap['DateTime']).toBeDefined(); + expect(typeMap['User']).toBeDefined(); + }); +});