From 2f20ea97d6df5e3d5c24e39edcbd163af356cc47 Mon Sep 17 00:00:00 2001 From: Rinto Jose Date: Fri, 7 Jun 2024 23:13:36 +0530 Subject: [PATCH] feat: do not register enums more than once --- src/gql/enum/enum-generator.test.ts | 26 ++++++++++++++++++++++++++ src/gql/enum/enum-generator.ts | 8 ++++++++ 2 files changed, 34 insertions(+) diff --git a/src/gql/enum/enum-generator.test.ts b/src/gql/enum/enum-generator.test.ts index 87903e5..1cd9619 100644 --- a/src/gql/enum/enum-generator.test.ts +++ b/src/gql/enum/enum-generator.test.ts @@ -54,4 +54,30 @@ describe('generateModel', () => { `), ) }) + + test('should not register twice', async () => { + const output = await generate( + 'user.enum.ts', + ` + import { registerEnumType } from '@nestjs/graphql' + + enum Status { + ACTIVE = 'ACTIVE', + DELETED = 'DELETED', + } + registerEnumType(Status, { name: 'Status' }) + `, + ) + expect(toParsedOutput(output)).toBe( + toParsedOutput(` + import { registerEnumType } from '@nestjs/graphql' + + enum Status { + ACTIVE = 'ACTIVE', + DELETED = 'DELETED', + } + registerEnumType(Status, { name: 'Status' }) + `), + ) + }) }) diff --git a/src/gql/enum/enum-generator.ts b/src/gql/enum/enum-generator.ts index 34eb8f3..6b66f96 100644 --- a/src/gql/enum/enum-generator.ts +++ b/src/gql/enum/enum-generator.ts @@ -50,6 +50,14 @@ export async function generateEnum(sourceFile: ts.SourceFile): Promise { if (ts.isEnumDeclaration(node)) return processEnumDeclaration(node, context) + if ( + ts.isExpressionStatement(node) && + ts.isCallExpression(node.expression) && + ts.isIdentifier(node.expression.expression) && + node.expression.expression.text === 'registerEnumType' + ) { + return + } return node }, undefined,