From 97c622af3e921a8edc4137f91dcf7c8b402a5867 Mon Sep 17 00:00:00 2001 From: Victor Korzunin Date: Sun, 12 Sep 2021 22:41:20 +0200 Subject: [PATCH] test: introduce basic tests --- .eslintrc.yml | 3 +++ .gitignore | 3 +++ package.json | 2 ++ tests/index.test.ts | 41 +++++++++++++++++++++++++++++++++++++++++ tsconfig.json | 3 ++- 5 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 tests/index.test.ts diff --git a/.eslintrc.yml b/.eslintrc.yml index 11e728e..067787f 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -6,17 +6,20 @@ ignorePatterns: - dist - plop - prisma + - jest.config.js plugins: - jest - '@typescript-eslint' parserOptions: ecmaVersion: 9 sourceType: module + project: ./tsconfig.json extends: - eslint:recommended - plugin:@typescript-eslint/eslint-recommended - plugin:@typescript-eslint/recommended - plugin:jest/recommended + - plugin:jest/style - plugin:eslint-comments/recommended - prettier rules: diff --git a/.gitignore b/.gitignore index 3bc599b..dbe4d4f 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,6 @@ dist/ # Prisma related files dmmf.json + +# Test artifacts +.testArtifacts diff --git a/package.json b/package.json index a865899..47bc8ba 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "@types/jest": "^27.0.1", "@types/node": "^14.17.9", "@types/ramda": "^0.27.44", + "@types/temp": "^0.9.1", "@typescript-eslint/eslint-plugin": "^4.29.2", "@typescript-eslint/parser": "^4.29.2", "eslint": "^7.32.0", @@ -56,6 +57,7 @@ "prettier": "^2.3.2", "prisma": "^2.29.1", "semantic-release": "^17.4.5", + "temp": "^0.9.4", "ts-jest": "^27.0.5", "typescript": "^4.3.5" }, diff --git a/tests/index.test.ts b/tests/index.test.ts new file mode 100644 index 0000000..f3cc551 --- /dev/null +++ b/tests/index.test.ts @@ -0,0 +1,41 @@ +import { getGenerator } from '@prisma/sdk'; +import temp from 'temp'; +import path from 'path'; +import fs from 'fs'; + +describe('given prisma-sequelize-generator,', () => { + beforeAll(() => { + temp.track(); + }); + + afterAll(() => { + temp.cleanupSync(); + }); + + it('should generate models.', async () => { + expect.hasAssertions(); + + const mockDir = temp.mkdirSync({ dir: path.join(__dirname, '../.testArtifacts') }); + + const generator = await getGenerator({ + schemaPath: path.join(__dirname, '../prisma/schema.prisma'), + baseDir: mockDir, + printDownloadProgress: false, + skipDownload: true, + }); + + await generator.generate(); + + const expectedDir = path.join(mockDir, 'sequelize'); + expect(fs.existsSync(expectedDir)).toBe(true); + expect(fs.existsSync(path.join(expectedDir, 'index.ts'))).toBe(true); + expect(fs.existsSync(path.join(expectedDir, 'config.json'))).toBe(true); + expect(fs.existsSync(path.join(expectedDir, 'models', 'index.ts'))).toBe(true); + expect(fs.existsSync(path.join(expectedDir, 'models', 'Post.ts'))).toBe(true); + expect(fs.existsSync(path.join(expectedDir, 'models', 'User.ts'))).toBe(true); + expect(fs.existsSync(path.join(expectedDir, 'utils', 'index.ts'))).toBe(true); + expect(fs.existsSync(path.join(expectedDir, 'utils', 'find.ts'))).toBe(true); + + generator.stop(); + }); +}); diff --git a/tsconfig.json b/tsconfig.json index 98b4044..2634f9a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,7 +14,8 @@ "strictFunctionTypes": true }, "include": [ - "src" + "src/**/*.ts", + "tests/**/*.ts" ], "exclude": [ "node_modules"