From 9cd8d65448d589566c4281aa4bc99c026c5029c4 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Sat, 31 Jan 2026 20:27:45 +0000 Subject: [PATCH] Initial upload with CI/CD workflow --- tests/generator.test.ts | 46 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 tests/generator.test.ts diff --git a/tests/generator.test.ts b/tests/generator.test.ts new file mode 100644 index 0000000..f62f963 --- /dev/null +++ b/tests/generator.test.ts @@ -0,0 +1,46 @@ +import * as path from 'path'; +import { generateTypeScriptInterface } from '../src/utils/typeGenerator'; +import { parseEnvFile } from '../src/core/parser'; +import { parseSchemaFromEnv } from '../src/core/validator'; + +describe('TypeGenerator', () => { + const fixturesDir = path.join(__dirname, 'fixtures'); + + test('generates TypeScript interface from schema', () => { + const envPath = path.join(fixturesDir, '.env'); + const parsed = parseEnvFile(envPath); + const schema = parseSchemaFromEnv(parsed.flat); + + const result = generateTypeScriptInterface(schema, parsed, 'TestEnv'); + + expect(result).toContain('export interface TestEnv {'); + expect(result).toContain('PORT: number;'); + expect(result).toContain('NODE_ENV: string;'); + expect(result).toContain('DEBUG: boolean;'); + }); + + test('generates nested interfaces for underscore-prefixed variables', () => { + const envPath = path.join(fixturesDir, '.env'); + const parsed = parseEnvFile(envPath); + const schema = parseSchemaFromEnv(parsed.flat); + + const result = generateTypeScriptInterface(schema, parsed, 'TestEnv'); + + expect(result).toContain('export interface Db {'); + expect(result).toContain('HOST?: string;'); + expect(result).toContain('PORT?: string;'); + expect(result).toContain('USER?: string;'); + }); + + test('generates proper types for different value types', () => { + const envPath = path.join(fixturesDir, '.env'); + const parsed = parseEnvFile(envPath); + const schema = parseSchemaFromEnv(parsed.flat); + + const result = generateTypeScriptInterface(schema, parsed, 'TestEnv'); + + expect(result).toMatch(/PORT(?:\?|): number/); + expect(result).toMatch(/NODE_ENV(?:\?|): string/); + expect(result).toMatch(/DEBUG(?:\?|): boolean/); + }); +});