From 47d6f16fdc13c17e2cdc624f62369e29dd79a644 Mon Sep 17 00:00:00 2001 From: tkow Date: Mon, 12 Dec 2022 20:30:09 +0900 Subject: [PATCH] feat: workaround --- examples/example-prj/jest-prisma-ex-env.d.ts | 10 +++++++ examples/example-prj/jest-prisma-ex-env.js | 27 ++++++++++++++++++ examples/example-prj/jest-prisma-ex-env.ts | 28 +++++++++++++++++++ examples/example-prj/jest.config.mjs | 2 +- examples/example-prj/package.json | 5 ++-- .../src/service/includeWhere.test.ts | 16 +++++------ package-lock.json | 23 +++++++++++++++ 7 files changed, 100 insertions(+), 11 deletions(-) create mode 100644 examples/example-prj/jest-prisma-ex-env.d.ts create mode 100644 examples/example-prj/jest-prisma-ex-env.js create mode 100644 examples/example-prj/jest-prisma-ex-env.ts diff --git a/examples/example-prj/jest-prisma-ex-env.d.ts b/examples/example-prj/jest-prisma-ex-env.d.ts new file mode 100644 index 0000000..ea465a7 --- /dev/null +++ b/examples/example-prj/jest-prisma-ex-env.d.ts @@ -0,0 +1,10 @@ +import type { Circus } from "@jest/types"; +import type { JestEnvironmentConfig, EnvironmentContext } from "@jest/environment"; +import Environment from "jest-environment-node-single-context"; +export default class PrismaEnvironment extends Environment { + private readonly delegate; + constructor(config: JestEnvironmentConfig, context: EnvironmentContext); + setup(): Promise; + handleTestEvent(event: Circus.Event): Promise | undefined; + teardown(): Promise; +} diff --git a/examples/example-prj/jest-prisma-ex-env.js b/examples/example-prj/jest-prisma-ex-env.js new file mode 100644 index 0000000..8d76f95 --- /dev/null +++ b/examples/example-prj/jest-prisma-ex-env.js @@ -0,0 +1,27 @@ +"use strict"; +var __importDefault = + (this && this.__importDefault) || + function (mod) { + return mod && mod.__esModule ? mod : { default: mod }; + }; +Object.defineProperty(exports, "__esModule", { value: true }); +const jest_prisma_core_1 = require("@quramy/jest-prisma-core"); +const jest_environment_node_single_context_1 = __importDefault(require("jest-environment-node-single-context")); +class PrismaEnvironment extends jest_environment_node_single_context_1.default { + constructor(config, context) { + super(config, context); + this.delegate = new jest_prisma_core_1.PrismaEnvironmentDelegate(config, context); + } + async setup() { + const jestPrisma = await this.delegate.preSetup(); + await super.setup(); + this.global.jestPrisma = jestPrisma; + } + handleTestEvent(event) { + return this.delegate.handleTestEvent(event); + } + async teardown() { + await Promise.all([super.teardown(), this.delegate.teardown()]); + } +} +exports.default = PrismaEnvironment; diff --git a/examples/example-prj/jest-prisma-ex-env.ts b/examples/example-prj/jest-prisma-ex-env.ts new file mode 100644 index 0000000..2361777 --- /dev/null +++ b/examples/example-prj/jest-prisma-ex-env.ts @@ -0,0 +1,28 @@ +import type { Circus } from "@jest/types"; +import type { JestEnvironmentConfig, EnvironmentContext } from "@jest/environment"; + +import { PrismaEnvironmentDelegate } from "@quramy/jest-prisma-core"; +import Environment from "jest-environment-node-single-context"; + +export default class PrismaEnvironment extends Environment { + private readonly delegate: PrismaEnvironmentDelegate; + + constructor(config: JestEnvironmentConfig, context: EnvironmentContext) { + super(config, context); + this.delegate = new PrismaEnvironmentDelegate(config, context); + } + + async setup() { + const jestPrisma = await this.delegate.preSetup(); + await super.setup(); + this.global.jestPrisma = jestPrisma; + } + + handleTestEvent(event: Circus.Event) { + return this.delegate.handleTestEvent(event); + } + + async teardown() { + await Promise.all([super.teardown(), this.delegate.teardown()]); + } +} diff --git a/examples/example-prj/jest.config.mjs b/examples/example-prj/jest.config.mjs index 38ecb05..c8c796c 100644 --- a/examples/example-prj/jest.config.mjs +++ b/examples/example-prj/jest.config.mjs @@ -3,5 +3,5 @@ export default { transform: { "^.+\\.tsx?$": ["ts-jest", { diagnostics: false }], }, - testEnvironment: "@quramy/jest-prisma/environment", + testEnvironment: "./jest-prisma-ex-env.js", }; diff --git a/examples/example-prj/package.json b/examples/example-prj/package.json index b3cbc63..0ab9ab8 100644 --- a/examples/example-prj/package.json +++ b/examples/example-prj/package.json @@ -10,11 +10,12 @@ "test:ci": "DATABASE_URL=\"file:./test.db\" jest" }, "devDependencies": { - "@quramy/jest-prisma": "*", "@prisma/client": "*", + "@quramy/jest-prisma": "*", "@types/jest": "29.2.1", - "prisma": "*", "jest": "29.2.2", + "jest-environment-node-single-context": "^29.0.0", + "prisma": "*", "ts-jest": "29.0.3" }, "dependencies": { diff --git a/examples/example-prj/src/service/includeWhere.test.ts b/examples/example-prj/src/service/includeWhere.test.ts index 4c8388a..ab49466 100644 --- a/examples/example-prj/src/service/includeWhere.test.ts +++ b/examples/example-prj/src/service/includeWhere.test.ts @@ -26,16 +26,16 @@ describe("Should include date type work arround", () => { const user = await prisma.user.findFirst({ where: { createdAt: { - lt: new jestPrisma.Date(), - gte: new jestPrisma.Date(new jestPrisma.Date().getTime() - 1000 * 60 * 60 * 24), + lt: new Date(), + gte: new Date(new Date().getTime() - 1000 * 60 * 60 * 24), }, }, include: { posts: { where: { createdAt: { - lt: new jestPrisma.Date(), - gte: new jestPrisma.Date(new jestPrisma.Date().getTime() - 1000 * 60 * 60 * 24), + lt: new Date(), + gte: new Date(new Date().getTime() - 1000 * 60 * 60 * 24), }, }, }, @@ -47,8 +47,8 @@ describe("Should include date type work arround", () => { where: { author: { createdAt: { - lt: new jestPrisma.Date(), - gte: new jestPrisma.Date(new jestPrisma.Date().getTime() - 1000 * 60 * 60 * 24), + lt: new Date(), + gte: new Date(new Date().getTime() - 1000 * 60 * 60 * 24), }, }, }, @@ -58,8 +58,8 @@ describe("Should include date type work arround", () => { posts: { where: { createdAt: { - lt: new jestPrisma.Date(), - gte: new jestPrisma.Date(new jestPrisma.Date().getTime() - 1000 * 60 * 60 * 24), + lt: new Date(), + gte: new Date(new Date().getTime() - 1000 * 60 * 60 * 24), }, }, }, diff --git a/package-lock.json b/package-lock.json index f8b8b24..c645ab0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,6 +32,7 @@ "@quramy/jest-prisma": "*", "@types/jest": "29.2.1", "jest": "29.2.2", + "jest-environment-node-single-context": "^29.0.0", "prisma": "*", "ts-jest": "29.0.3" } @@ -2404,6 +2405,18 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-environment-node-single-context": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/jest-environment-node-single-context/-/jest-environment-node-single-context-29.0.0.tgz", + "integrity": "sha512-/XB09Hje38Kl5k9ISUpXNom3M4DQo5ifEsnELPFP5r3yrJDRyNQCEjL/9ScUN6z6UeF4FCNZUsiJIX/tGtTXNw==", + "dev": true, + "dependencies": { + "jest-environment-node": "^29.0.1" + }, + "funding": { + "url": "https://github.com/kayahr/jest-environment-node-single-context?sponsor=1" + } + }, "node_modules/jest-get-type": { "version": "29.2.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", @@ -5287,6 +5300,7 @@ "@quramy/jest-prisma": "*", "@types/jest": "29.2.1", "jest": "29.2.2", + "jest-environment-node-single-context": "*", "prisma": "*", "sqlite": "4.1.2", "ts-jest": "29.0.3" @@ -5765,6 +5779,15 @@ "jest-util": "^29.2.1" } }, + "jest-environment-node-single-context": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/jest-environment-node-single-context/-/jest-environment-node-single-context-29.0.0.tgz", + "integrity": "sha512-/XB09Hje38Kl5k9ISUpXNom3M4DQo5ifEsnELPFP5r3yrJDRyNQCEjL/9ScUN6z6UeF4FCNZUsiJIX/tGtTXNw==", + "dev": true, + "requires": { + "jest-environment-node": "^29.0.1" + } + }, "jest-get-type": { "version": "29.2.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz",