@geekmidas/testkit 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{KyselyFactory-BrWADI77.d.mts → KyselyFactory-72P98y5I.d.mts} +1 -1
- package/dist/{KyselyFactory-DM2dnUXU.d.cts → KyselyFactory-DLBrYWxU.d.cts} +1 -1
- package/dist/KyselyFactory.d.cts +1 -1
- package/dist/KyselyFactory.d.mts +1 -1
- package/dist/{VitestKyselyTransactionIsolator-ClCazkBO.d.mts → VitestKyselyTransactionIsolator-CnxpE9cH.d.mts} +2 -1
- package/dist/{VitestKyselyTransactionIsolator-UE1J-UoP.d.cts → VitestKyselyTransactionIsolator-DYUYVEh9.d.cts} +2 -1
- package/dist/{VitestKyselyTransactionIsolator-BKGT9nEG.mjs → VitestKyselyTransactionIsolator-Dq4Oeh-Y.mjs} +4 -1
- package/dist/{VitestKyselyTransactionIsolator-CIlpIO78.cjs → VitestKyselyTransactionIsolator-Dqy3qNoJ.cjs} +4 -1
- package/dist/VitestKyselyTransactionIsolator.cjs +2 -2
- package/dist/VitestKyselyTransactionIsolator.d.cts +2 -2
- package/dist/VitestKyselyTransactionIsolator.d.mts +2 -2
- package/dist/VitestKyselyTransactionIsolator.mjs +2 -2
- package/dist/{VitestObjectionTransactionIsolator-CO2nTi9r.d.cts → VitestObjectionTransactionIsolator-CJ4ds5Qv.d.cts} +3 -2
- package/dist/{VitestObjectionTransactionIsolator-D264iuPy.d.mts → VitestObjectionTransactionIsolator-DIM79dCq.d.mts} +3 -2
- package/dist/{VitestObjectionTransactionIsolator-BPoLUFop.mjs → VitestObjectionTransactionIsolator-DVtJG2F3.mjs} +6 -3
- package/dist/{VitestObjectionTransactionIsolator-DyqLp_in.cjs → VitestObjectionTransactionIsolator-LP4B0cqW.cjs} +6 -3
- package/dist/VitestObjectionTransactionIsolator.cjs +2 -2
- package/dist/VitestObjectionTransactionIsolator.d.cts +2 -2
- package/dist/VitestObjectionTransactionIsolator.d.mts +2 -2
- package/dist/VitestObjectionTransactionIsolator.mjs +2 -2
- package/dist/{VitestTransactionIsolator-CruLTRRi.cjs → VitestTransactionIsolator-BQ5FpLtC.cjs} +5 -2
- package/dist/{VitestTransactionIsolator-BWwK-ca6.mjs → VitestTransactionIsolator-CskiiJbW.mjs} +5 -2
- package/dist/{VitestTransactionIsolator-DHf2MxmC.d.cts → VitestTransactionIsolator-DdLNODZg.d.cts} +8 -5
- package/dist/{VitestTransactionIsolator-Xqyjlmw6.d.mts → VitestTransactionIsolator-zdyiS_SY.d.mts} +8 -5
- package/dist/VitestTransactionIsolator.cjs +1 -1
- package/dist/VitestTransactionIsolator.d.cts +2 -2
- package/dist/VitestTransactionIsolator.d.mts +2 -2
- package/dist/VitestTransactionIsolator.mjs +1 -1
- package/dist/__tests__/KyselyFactory.spec.cjs +4 -4
- package/dist/__tests__/KyselyFactory.spec.mjs +4 -4
- package/dist/__tests__/ObjectionFactory.spec.cjs +4 -4
- package/dist/__tests__/ObjectionFactory.spec.mjs +4 -4
- package/dist/__tests__/VitestObjectionTransactionIsolator.spec.cjs +4 -5
- package/dist/__tests__/VitestObjectionTransactionIsolator.spec.mjs +4 -5
- package/dist/__tests__/integration.spec.cjs +4 -4
- package/dist/__tests__/integration.spec.mjs +4 -4
- package/dist/{kysely-Cx_1pZYc.mjs → kysely-BsDbvw3r.mjs} +4 -4
- package/dist/{kysely-CBfCXxUn.cjs → kysely-CP1iJMvq.cjs} +4 -4
- package/dist/kysely.cjs +3 -3
- package/dist/kysely.d.cts +4 -4
- package/dist/kysely.d.mts +4 -4
- package/dist/kysely.mjs +3 -3
- package/dist/{objection-lsMgM5gP.mjs → objection-BEPk9h-g.mjs} +5 -5
- package/dist/{objection-CCD8fMLj.cjs → objection-Di7JSist.cjs} +5 -5
- package/dist/objection.cjs +3 -3
- package/dist/objection.d.cts +4 -4
- package/dist/objection.d.mts +4 -4
- package/dist/objection.mjs +3 -3
- package/package.json +2 -2
- package/src/KyselyFactory.ts +1 -1
- package/src/ObjectionFactory.ts +12 -9
- package/src/VitestKyselyTransactionIsolator.ts +3 -0
- package/src/VitestObjectionTransactionIsolator.ts +5 -2
- package/src/VitestTransactionIsolator.ts +11 -8
- package/src/__tests__/KyselyFactory.spec.ts +1 -1
- package/src/__tests__/ObjectionFactory.spec.ts +1 -1
- package/src/__tests__/VitestObjectionTransactionIsolator.spec.ts +1 -2
- package/src/__tests__/integration.spec.ts +1 -1
- package/src/kysely.ts +6 -3
- package/src/objection.ts +7 -4
|
@@ -164,7 +164,7 @@ declare class KyselyFactory<DB, Builders extends Record<string, any>, Seeds exte
|
|
|
164
164
|
* ```
|
|
165
165
|
*/
|
|
166
166
|
insertMany<K extends keyof Builders>(count: number, builderName: K, attrs?: Parameters<Builders[K]>[0]): Promise<Awaited<ReturnType<Builders[K]>>[]>;
|
|
167
|
-
insertMany<K extends keyof Builders>(count: number, builderName: K, attrs: (idx: number, faker: FakerFactory) => Promise<Parameters<Builders[K]>[0]>): Promise<Awaited<ReturnType<Builders[K]>>[]>;
|
|
167
|
+
insertMany<K extends keyof Builders>(count: number, builderName: K, attrs: (idx: number, faker: FakerFactory) => Parameters<Builders[K]>[0] | Promise<Parameters<Builders[K]>[0]>): Promise<Awaited<ReturnType<Builders[K]>>[]>;
|
|
168
168
|
/**
|
|
169
169
|
* Executes a seed function to create complex test scenarios with multiple related records.
|
|
170
170
|
* Seeds are useful for setting up complete test environments with realistic data relationships.
|
|
@@ -164,7 +164,7 @@ declare class KyselyFactory<DB, Builders extends Record<string, any>, Seeds exte
|
|
|
164
164
|
* ```
|
|
165
165
|
*/
|
|
166
166
|
insertMany<K extends keyof Builders>(count: number, builderName: K, attrs?: Parameters<Builders[K]>[0]): Promise<Awaited<ReturnType<Builders[K]>>[]>;
|
|
167
|
-
insertMany<K extends keyof Builders>(count: number, builderName: K, attrs: (idx: number, faker: FakerFactory) => Promise<Parameters<Builders[K]>[0]>): Promise<Awaited<ReturnType<Builders[K]>>[]>;
|
|
167
|
+
insertMany<K extends keyof Builders>(count: number, builderName: K, attrs: (idx: number, faker: FakerFactory) => Parameters<Builders[K]>[0] | Promise<Parameters<Builders[K]>[0]>): Promise<Awaited<ReturnType<Builders[K]>>[]>;
|
|
168
168
|
/**
|
|
169
169
|
* Executes a seed function to create complex test scenarios with multiple related records.
|
|
170
170
|
* Seeds are useful for setting up complete test environments with realistic data relationships.
|
package/dist/KyselyFactory.d.cts
CHANGED
package/dist/KyselyFactory.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
1
|
+
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-zdyiS_SY.mjs";
|
|
2
2
|
import { Kysely, Transaction } from "kysely";
|
|
3
3
|
|
|
4
4
|
//#region src/VitestKyselyTransactionIsolator.d.ts
|
|
@@ -41,6 +41,7 @@ import { Kysely, Transaction } from "kysely";
|
|
|
41
41
|
* ```
|
|
42
42
|
*/
|
|
43
43
|
declare class VitestKyselyTransactionIsolator<Database> extends VitestPostgresTransactionIsolator<Kysely<Database>, Transaction<Database>> {
|
|
44
|
+
destroy(conn: Kysely<Database>): Promise<void>;
|
|
44
45
|
/**
|
|
45
46
|
* Creates a Kysely transaction with the specified isolation level.
|
|
46
47
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
1
|
+
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-DdLNODZg.cjs";
|
|
2
2
|
import { Kysely, Transaction } from "kysely";
|
|
3
3
|
|
|
4
4
|
//#region src/VitestKyselyTransactionIsolator.d.ts
|
|
@@ -41,6 +41,7 @@ import { Kysely, Transaction } from "kysely";
|
|
|
41
41
|
* ```
|
|
42
42
|
*/
|
|
43
43
|
declare class VitestKyselyTransactionIsolator<Database> extends VitestPostgresTransactionIsolator<Kysely<Database>, Transaction<Database>> {
|
|
44
|
+
destroy(conn: Kysely<Database>): Promise<void>;
|
|
44
45
|
/**
|
|
45
46
|
* Creates a Kysely transaction with the specified isolation level.
|
|
46
47
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
1
|
+
import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-CskiiJbW.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/VitestKyselyTransactionIsolator.ts
|
|
4
4
|
/**
|
|
@@ -39,6 +39,9 @@ import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-B
|
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
41
|
var VitestKyselyTransactionIsolator = class extends VitestPostgresTransactionIsolator {
|
|
42
|
+
destroy(conn) {
|
|
43
|
+
return conn.destroy();
|
|
44
|
+
}
|
|
42
45
|
/**
|
|
43
46
|
* Creates a Kysely transaction with the specified isolation level.
|
|
44
47
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-
|
|
1
|
+
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
2
2
|
|
|
3
3
|
//#region src/VitestKyselyTransactionIsolator.ts
|
|
4
4
|
/**
|
|
@@ -39,6 +39,9 @@ const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-C
|
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
41
|
var VitestKyselyTransactionIsolator = class extends require_VitestTransactionIsolator.VitestPostgresTransactionIsolator {
|
|
42
|
+
destroy(conn) {
|
|
43
|
+
return conn.destroy();
|
|
44
|
+
}
|
|
42
45
|
/**
|
|
43
46
|
* Creates a Kysely transaction with the specified isolation level.
|
|
44
47
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require('./VitestTransactionIsolator-
|
|
2
|
-
const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-
|
|
1
|
+
require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
2
|
+
const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-Dqy3qNoJ.cjs');
|
|
3
3
|
|
|
4
4
|
exports.VitestKyselyTransactionIsolator = require_VitestKyselyTransactionIsolator.VitestKyselyTransactionIsolator;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./VitestTransactionIsolator-
|
|
2
|
-
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-
|
|
1
|
+
import "./VitestTransactionIsolator-DdLNODZg.cjs";
|
|
2
|
+
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-DYUYVEh9.cjs";
|
|
3
3
|
export { VitestKyselyTransactionIsolator };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./VitestTransactionIsolator-
|
|
2
|
-
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-
|
|
1
|
+
import "./VitestTransactionIsolator-zdyiS_SY.mjs";
|
|
2
|
+
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-CnxpE9cH.mjs";
|
|
3
3
|
export { VitestKyselyTransactionIsolator };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./VitestTransactionIsolator-
|
|
2
|
-
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-
|
|
1
|
+
import "./VitestTransactionIsolator-CskiiJbW.mjs";
|
|
2
|
+
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-Dq4Oeh-Y.mjs";
|
|
3
3
|
|
|
4
4
|
export { VitestKyselyTransactionIsolator };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
1
|
+
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-DdLNODZg.cjs";
|
|
2
2
|
import { Knex } from "knex";
|
|
3
3
|
|
|
4
4
|
//#region src/VitestObjectionTransactionIsolator.d.ts
|
|
@@ -32,6 +32,7 @@ import { Knex } from "knex";
|
|
|
32
32
|
* ```
|
|
33
33
|
*/
|
|
34
34
|
declare class VitestObjectionTransactionIsolator extends VitestPostgresTransactionIsolator<Knex, Knex.Transaction> {
|
|
35
|
+
destroy(conn: Knex<any, any[]>): Promise<void>;
|
|
35
36
|
/**
|
|
36
37
|
* Creates a Knex transaction with the specified isolation level.
|
|
37
38
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -51,7 +52,7 @@ declare class VitestObjectionTransactionIsolator extends VitestPostgresTransacti
|
|
|
51
52
|
* });
|
|
52
53
|
* ```
|
|
53
54
|
*/
|
|
54
|
-
transact(
|
|
55
|
+
transact(connection: Knex, level: IsolationLevel, fn: (trx: Knex.Transaction) => Promise<void>): Promise<void>;
|
|
55
56
|
}
|
|
56
57
|
//#endregion
|
|
57
58
|
export { VitestObjectionTransactionIsolator };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
1
|
+
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-zdyiS_SY.mjs";
|
|
2
2
|
import { Knex } from "knex";
|
|
3
3
|
|
|
4
4
|
//#region src/VitestObjectionTransactionIsolator.d.ts
|
|
@@ -32,6 +32,7 @@ import { Knex } from "knex";
|
|
|
32
32
|
* ```
|
|
33
33
|
*/
|
|
34
34
|
declare class VitestObjectionTransactionIsolator extends VitestPostgresTransactionIsolator<Knex, Knex.Transaction> {
|
|
35
|
+
destroy(conn: Knex<any, any[]>): Promise<void>;
|
|
35
36
|
/**
|
|
36
37
|
* Creates a Knex transaction with the specified isolation level.
|
|
37
38
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -51,7 +52,7 @@ declare class VitestObjectionTransactionIsolator extends VitestPostgresTransacti
|
|
|
51
52
|
* });
|
|
52
53
|
* ```
|
|
53
54
|
*/
|
|
54
|
-
transact(
|
|
55
|
+
transact(connection: Knex, level: IsolationLevel, fn: (trx: Knex.Transaction) => Promise<void>): Promise<void>;
|
|
55
56
|
}
|
|
56
57
|
//#endregion
|
|
57
58
|
export { VitestObjectionTransactionIsolator };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
1
|
+
import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-CskiiJbW.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/VitestObjectionTransactionIsolator.ts
|
|
4
4
|
/**
|
|
@@ -30,6 +30,9 @@ import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-B
|
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
32
|
var VitestObjectionTransactionIsolator = class extends VitestPostgresTransactionIsolator {
|
|
33
|
+
destroy(conn) {
|
|
34
|
+
return conn.destroy();
|
|
35
|
+
}
|
|
33
36
|
/**
|
|
34
37
|
* Creates a Knex transaction with the specified isolation level.
|
|
35
38
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -49,9 +52,9 @@ var VitestObjectionTransactionIsolator = class extends VitestPostgresTransaction
|
|
|
49
52
|
* });
|
|
50
53
|
* ```
|
|
51
54
|
*/
|
|
52
|
-
async transact(
|
|
55
|
+
async transact(connection, level, fn) {
|
|
53
56
|
const isolationLevel = level.toLowerCase();
|
|
54
|
-
await
|
|
57
|
+
await connection.transaction(async (trx) => {
|
|
55
58
|
await fn(trx);
|
|
56
59
|
}, { isolationLevel });
|
|
57
60
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-
|
|
1
|
+
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
2
2
|
|
|
3
3
|
//#region src/VitestObjectionTransactionIsolator.ts
|
|
4
4
|
/**
|
|
@@ -30,6 +30,9 @@ const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-C
|
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
32
|
var VitestObjectionTransactionIsolator = class extends require_VitestTransactionIsolator.VitestPostgresTransactionIsolator {
|
|
33
|
+
destroy(conn) {
|
|
34
|
+
return conn.destroy();
|
|
35
|
+
}
|
|
33
36
|
/**
|
|
34
37
|
* Creates a Knex transaction with the specified isolation level.
|
|
35
38
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -49,9 +52,9 @@ var VitestObjectionTransactionIsolator = class extends require_VitestTransaction
|
|
|
49
52
|
* });
|
|
50
53
|
* ```
|
|
51
54
|
*/
|
|
52
|
-
async transact(
|
|
55
|
+
async transact(connection, level, fn) {
|
|
53
56
|
const isolationLevel = level.toLowerCase();
|
|
54
|
-
await
|
|
57
|
+
await connection.transaction(async (trx) => {
|
|
55
58
|
await fn(trx);
|
|
56
59
|
}, { isolationLevel });
|
|
57
60
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require('./VitestTransactionIsolator-
|
|
2
|
-
const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTransactionIsolator-
|
|
1
|
+
require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
2
|
+
const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTransactionIsolator-LP4B0cqW.cjs');
|
|
3
3
|
|
|
4
4
|
exports.VitestObjectionTransactionIsolator = require_VitestObjectionTransactionIsolator.VitestObjectionTransactionIsolator;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./VitestTransactionIsolator-
|
|
2
|
-
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-
|
|
1
|
+
import "./VitestTransactionIsolator-DdLNODZg.cjs";
|
|
2
|
+
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-CJ4ds5Qv.cjs";
|
|
3
3
|
export { VitestObjectionTransactionIsolator };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./VitestTransactionIsolator-
|
|
2
|
-
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-
|
|
1
|
+
import "./VitestTransactionIsolator-zdyiS_SY.mjs";
|
|
2
|
+
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-DIM79dCq.mjs";
|
|
3
3
|
export { VitestObjectionTransactionIsolator };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./VitestTransactionIsolator-
|
|
2
|
-
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-
|
|
1
|
+
import "./VitestTransactionIsolator-CskiiJbW.mjs";
|
|
2
|
+
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-DVtJG2F3.mjs";
|
|
3
3
|
|
|
4
4
|
export { VitestObjectionTransactionIsolator };
|
package/dist/{VitestTransactionIsolator-CruLTRRi.cjs → VitestTransactionIsolator-BQ5FpLtC.cjs}
RENAMED
|
@@ -34,7 +34,7 @@ let IsolationLevel = /* @__PURE__ */ function(IsolationLevel$1) {
|
|
|
34
34
|
* Provides automatic transaction rollback after each test to maintain test isolation.
|
|
35
35
|
* Subclasses must implement the transact() method for their specific database driver.
|
|
36
36
|
*
|
|
37
|
-
* @template
|
|
37
|
+
* @template TConn - The database connection type
|
|
38
38
|
* @template Transaction - The transaction type
|
|
39
39
|
*
|
|
40
40
|
* @example
|
|
@@ -87,7 +87,7 @@ var VitestPostgresTransactionIsolator = class {
|
|
|
87
87
|
* });
|
|
88
88
|
* ```
|
|
89
89
|
*/
|
|
90
|
-
wrapVitestWithTransaction(
|
|
90
|
+
wrapVitestWithTransaction(createConnection, setup, level = IsolationLevel.REPEATABLE_READ) {
|
|
91
91
|
return this.api.extend({ trx: async ({}, use) => {
|
|
92
92
|
class TestRollback extends Error {
|
|
93
93
|
constructor() {
|
|
@@ -96,6 +96,7 @@ var VitestPostgresTransactionIsolator = class {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
let testError;
|
|
99
|
+
const conn = await createConnection();
|
|
99
100
|
try {
|
|
100
101
|
await this.transact(conn, level, async (transaction) => {
|
|
101
102
|
try {
|
|
@@ -109,6 +110,8 @@ var VitestPostgresTransactionIsolator = class {
|
|
|
109
110
|
} catch (error) {
|
|
110
111
|
if (!(error instanceof TestRollback)) throw error;
|
|
111
112
|
if (testError) throw testError;
|
|
113
|
+
} finally {
|
|
114
|
+
await this.destroy(conn);
|
|
112
115
|
}
|
|
113
116
|
} });
|
|
114
117
|
}
|
package/dist/{VitestTransactionIsolator-BWwK-ca6.mjs → VitestTransactionIsolator-CskiiJbW.mjs}
RENAMED
|
@@ -33,7 +33,7 @@ let IsolationLevel = /* @__PURE__ */ function(IsolationLevel$1) {
|
|
|
33
33
|
* Provides automatic transaction rollback after each test to maintain test isolation.
|
|
34
34
|
* Subclasses must implement the transact() method for their specific database driver.
|
|
35
35
|
*
|
|
36
|
-
* @template
|
|
36
|
+
* @template TConn - The database connection type
|
|
37
37
|
* @template Transaction - The transaction type
|
|
38
38
|
*
|
|
39
39
|
* @example
|
|
@@ -86,7 +86,7 @@ var VitestPostgresTransactionIsolator = class {
|
|
|
86
86
|
* });
|
|
87
87
|
* ```
|
|
88
88
|
*/
|
|
89
|
-
wrapVitestWithTransaction(
|
|
89
|
+
wrapVitestWithTransaction(createConnection, setup, level = IsolationLevel.REPEATABLE_READ) {
|
|
90
90
|
return this.api.extend({ trx: async ({}, use) => {
|
|
91
91
|
class TestRollback extends Error {
|
|
92
92
|
constructor() {
|
|
@@ -95,6 +95,7 @@ var VitestPostgresTransactionIsolator = class {
|
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
let testError;
|
|
98
|
+
const conn = await createConnection();
|
|
98
99
|
try {
|
|
99
100
|
await this.transact(conn, level, async (transaction) => {
|
|
100
101
|
try {
|
|
@@ -108,6 +109,8 @@ var VitestPostgresTransactionIsolator = class {
|
|
|
108
109
|
} catch (error) {
|
|
109
110
|
if (!(error instanceof TestRollback)) throw error;
|
|
110
111
|
if (testError) throw testError;
|
|
112
|
+
} finally {
|
|
113
|
+
await this.destroy(conn);
|
|
111
114
|
}
|
|
112
115
|
} });
|
|
113
116
|
}
|
package/dist/{VitestTransactionIsolator-DHf2MxmC.d.cts → VitestTransactionIsolator-DdLNODZg.d.cts}
RENAMED
|
@@ -48,7 +48,7 @@ declare enum IsolationLevel {
|
|
|
48
48
|
* Provides automatic transaction rollback after each test to maintain test isolation.
|
|
49
49
|
* Subclasses must implement the transact() method for their specific database driver.
|
|
50
50
|
*
|
|
51
|
-
* @template
|
|
51
|
+
* @template TConn - The database connection type
|
|
52
52
|
* @template Transaction - The transaction type
|
|
53
53
|
*
|
|
54
54
|
* @example
|
|
@@ -70,7 +70,7 @@ declare enum IsolationLevel {
|
|
|
70
70
|
* });
|
|
71
71
|
* ```
|
|
72
72
|
*/
|
|
73
|
-
declare abstract class VitestPostgresTransactionIsolator<
|
|
73
|
+
declare abstract class VitestPostgresTransactionIsolator<TConn, Transaction> {
|
|
74
74
|
private readonly api;
|
|
75
75
|
/**
|
|
76
76
|
* Abstract method to create a transaction with the specified isolation level.
|
|
@@ -81,7 +81,8 @@ declare abstract class VitestPostgresTransactionIsolator<Connection, Transaction
|
|
|
81
81
|
* @param fn - The function to execute within the transaction
|
|
82
82
|
* @returns Promise that resolves when the transaction completes
|
|
83
83
|
*/
|
|
84
|
-
abstract transact(conn:
|
|
84
|
+
abstract transact(conn: TConn, isolationLevel: IsolationLevel, fn: (trx: Transaction) => Promise<void>): Promise<void>;
|
|
85
|
+
abstract destroy(conn: TConn): Promise<void>;
|
|
85
86
|
/**
|
|
86
87
|
* Creates a new VitestPostgresTransactionIsolator instance.
|
|
87
88
|
*
|
|
@@ -110,9 +111,11 @@ declare abstract class VitestPostgresTransactionIsolator<Connection, Transaction
|
|
|
110
111
|
* });
|
|
111
112
|
* ```
|
|
112
113
|
*/
|
|
113
|
-
wrapVitestWithTransaction(
|
|
114
|
+
wrapVitestWithTransaction(createConnection: DatabaseConnection<TConn>, setup?: (trx: Transaction) => Promise<void>, level?: IsolationLevel): TestAPI<{
|
|
114
115
|
trx: Transaction;
|
|
115
116
|
}>;
|
|
116
117
|
}
|
|
118
|
+
type DatabaseConnectionFn<Conn> = () => Conn | Promise<Conn>;
|
|
119
|
+
type DatabaseConnection<Conn> = DatabaseConnectionFn<Conn>;
|
|
117
120
|
//#endregion
|
|
118
|
-
export { DatabaseFixtures, IsolationLevel, VitestPostgresTransactionIsolator };
|
|
121
|
+
export { DatabaseConnection, DatabaseConnectionFn, DatabaseFixtures, IsolationLevel, VitestPostgresTransactionIsolator };
|
package/dist/{VitestTransactionIsolator-Xqyjlmw6.d.mts → VitestTransactionIsolator-zdyiS_SY.d.mts}
RENAMED
|
@@ -48,7 +48,7 @@ declare enum IsolationLevel {
|
|
|
48
48
|
* Provides automatic transaction rollback after each test to maintain test isolation.
|
|
49
49
|
* Subclasses must implement the transact() method for their specific database driver.
|
|
50
50
|
*
|
|
51
|
-
* @template
|
|
51
|
+
* @template TConn - The database connection type
|
|
52
52
|
* @template Transaction - The transaction type
|
|
53
53
|
*
|
|
54
54
|
* @example
|
|
@@ -70,7 +70,7 @@ declare enum IsolationLevel {
|
|
|
70
70
|
* });
|
|
71
71
|
* ```
|
|
72
72
|
*/
|
|
73
|
-
declare abstract class VitestPostgresTransactionIsolator<
|
|
73
|
+
declare abstract class VitestPostgresTransactionIsolator<TConn, Transaction> {
|
|
74
74
|
private readonly api;
|
|
75
75
|
/**
|
|
76
76
|
* Abstract method to create a transaction with the specified isolation level.
|
|
@@ -81,7 +81,8 @@ declare abstract class VitestPostgresTransactionIsolator<Connection, Transaction
|
|
|
81
81
|
* @param fn - The function to execute within the transaction
|
|
82
82
|
* @returns Promise that resolves when the transaction completes
|
|
83
83
|
*/
|
|
84
|
-
abstract transact(conn:
|
|
84
|
+
abstract transact(conn: TConn, isolationLevel: IsolationLevel, fn: (trx: Transaction) => Promise<void>): Promise<void>;
|
|
85
|
+
abstract destroy(conn: TConn): Promise<void>;
|
|
85
86
|
/**
|
|
86
87
|
* Creates a new VitestPostgresTransactionIsolator instance.
|
|
87
88
|
*
|
|
@@ -110,9 +111,11 @@ declare abstract class VitestPostgresTransactionIsolator<Connection, Transaction
|
|
|
110
111
|
* });
|
|
111
112
|
* ```
|
|
112
113
|
*/
|
|
113
|
-
wrapVitestWithTransaction(
|
|
114
|
+
wrapVitestWithTransaction(createConnection: DatabaseConnection<TConn>, setup?: (trx: Transaction) => Promise<void>, level?: IsolationLevel): TestAPI<{
|
|
114
115
|
trx: Transaction;
|
|
115
116
|
}>;
|
|
116
117
|
}
|
|
118
|
+
type DatabaseConnectionFn<Conn> = () => Conn | Promise<Conn>;
|
|
119
|
+
type DatabaseConnection<Conn> = DatabaseConnectionFn<Conn>;
|
|
117
120
|
//#endregion
|
|
118
|
-
export { DatabaseFixtures, IsolationLevel, VitestPostgresTransactionIsolator };
|
|
121
|
+
export { DatabaseConnection, DatabaseConnectionFn, DatabaseFixtures, IsolationLevel, VitestPostgresTransactionIsolator };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-
|
|
1
|
+
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
2
2
|
|
|
3
3
|
exports.IsolationLevel = require_VitestTransactionIsolator.IsolationLevel;
|
|
4
4
|
exports.VitestPostgresTransactionIsolator = require_VitestTransactionIsolator.VitestPostgresTransactionIsolator;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { DatabaseFixtures, IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
2
|
-
export { DatabaseFixtures, IsolationLevel, VitestPostgresTransactionIsolator };
|
|
1
|
+
import { DatabaseConnection, DatabaseConnectionFn, DatabaseFixtures, IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-DdLNODZg.cjs";
|
|
2
|
+
export { DatabaseConnection, DatabaseConnectionFn, DatabaseFixtures, IsolationLevel, VitestPostgresTransactionIsolator };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { DatabaseFixtures, IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
2
|
-
export { DatabaseFixtures, IsolationLevel, VitestPostgresTransactionIsolator };
|
|
1
|
+
import { DatabaseConnection, DatabaseConnectionFn, DatabaseFixtures, IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-zdyiS_SY.mjs";
|
|
2
|
+
export { DatabaseConnection, DatabaseConnectionFn, DatabaseFixtures, IsolationLevel, VitestPostgresTransactionIsolator };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
1
|
+
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-CskiiJbW.mjs";
|
|
2
2
|
|
|
3
3
|
export { IsolationLevel, VitestPostgresTransactionIsolator };
|
|
@@ -4,16 +4,16 @@ require('../faker-B14IEMIN.cjs');
|
|
|
4
4
|
const require_KyselyFactory = require('../KyselyFactory-Cf0o2YxO.cjs');
|
|
5
5
|
require('../PostgresMigrator-DFcNdCvD.cjs');
|
|
6
6
|
require('../PostgresKyselyMigrator-CfytARcA.cjs');
|
|
7
|
-
require('../VitestTransactionIsolator-
|
|
8
|
-
require('../VitestKyselyTransactionIsolator-
|
|
7
|
+
require('../VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
8
|
+
require('../VitestKyselyTransactionIsolator-Dqy3qNoJ.cjs');
|
|
9
9
|
const require_helpers = require('../helpers-nEUtQ7eo.cjs');
|
|
10
|
-
const require_kysely = require('../kysely-
|
|
10
|
+
const require_kysely = require('../kysely-CP1iJMvq.cjs');
|
|
11
11
|
const require_helpers$1 = require('../helpers-Bf0nXhbu.cjs');
|
|
12
12
|
const pg = require_chunk.__toESM(require("pg"));
|
|
13
13
|
const vitest = require_chunk.__toESM(require("vitest"));
|
|
14
14
|
|
|
15
15
|
//#region src/__tests__/KyselyFactory.spec.ts
|
|
16
|
-
const db = require_helpers.createKyselyDb(require_helpers$1.TEST_DATABASE_CONFIG);
|
|
16
|
+
const db = () => require_helpers.createKyselyDb(require_helpers$1.TEST_DATABASE_CONFIG);
|
|
17
17
|
const itWithTransaction = require_kysely.wrapVitestKyselyTransaction(vitest.it, db, require_helpers$1.createTestTables);
|
|
18
18
|
const int8TypeId = 20;
|
|
19
19
|
pg.default.types.setTypeParser(int8TypeId, (val) => {
|
|
@@ -3,16 +3,16 @@ import "../faker-BGKYFoCT.mjs";
|
|
|
3
3
|
import { KyselyFactory } from "../KyselyFactory-BcYkC0t2.mjs";
|
|
4
4
|
import "../PostgresMigrator-DxPC_gGu.mjs";
|
|
5
5
|
import "../PostgresKyselyMigrator-Bdhl251C.mjs";
|
|
6
|
-
import "../VitestTransactionIsolator-
|
|
7
|
-
import "../VitestKyselyTransactionIsolator-
|
|
6
|
+
import "../VitestTransactionIsolator-CskiiJbW.mjs";
|
|
7
|
+
import "../VitestKyselyTransactionIsolator-Dq4Oeh-Y.mjs";
|
|
8
8
|
import { createKyselyDb } from "../helpers-BuPmgzyQ.mjs";
|
|
9
|
-
import { wrapVitestKyselyTransaction } from "../kysely-
|
|
9
|
+
import { wrapVitestKyselyTransaction } from "../kysely-BsDbvw3r.mjs";
|
|
10
10
|
import { TEST_DATABASE_CONFIG, createTestTables } from "../helpers-B4TXg3Wp.mjs";
|
|
11
11
|
import pg from "pg";
|
|
12
12
|
import { describe, expect, it } from "vitest";
|
|
13
13
|
|
|
14
14
|
//#region src/__tests__/KyselyFactory.spec.ts
|
|
15
|
-
const db = createKyselyDb(TEST_DATABASE_CONFIG);
|
|
15
|
+
const db = () => createKyselyDb(TEST_DATABASE_CONFIG);
|
|
16
16
|
const itWithTransaction = wrapVitestKyselyTransaction(it, db, createTestTables);
|
|
17
17
|
const int8TypeId = 20;
|
|
18
18
|
pg.types.setTypeParser(int8TypeId, (val) => {
|
|
@@ -4,9 +4,9 @@ const require_faker = require('../faker-B14IEMIN.cjs');
|
|
|
4
4
|
const require_ObjectionFactory = require('../ObjectionFactory-CDriunkS.cjs');
|
|
5
5
|
require('../PostgresMigrator-DFcNdCvD.cjs');
|
|
6
6
|
require('../PostgresObjectionMigrator-BG6ymgnt.cjs');
|
|
7
|
-
require('../VitestTransactionIsolator-
|
|
8
|
-
require('../VitestObjectionTransactionIsolator-
|
|
9
|
-
const require_objection = require('../objection-
|
|
7
|
+
require('../VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
8
|
+
require('../VitestObjectionTransactionIsolator-LP4B0cqW.cjs');
|
|
9
|
+
const require_objection = require('../objection-Di7JSist.cjs');
|
|
10
10
|
const require_helpers = require('../helpers-Bf0nXhbu.cjs');
|
|
11
11
|
const vitest = require_chunk.__toESM(require("vitest"));
|
|
12
12
|
const objection = require_chunk.__toESM(require("objection"));
|
|
@@ -27,7 +27,7 @@ var Post = class extends objection.Model {
|
|
|
27
27
|
title;
|
|
28
28
|
user_id;
|
|
29
29
|
};
|
|
30
|
-
const it = require_objection.wrapVitestObjectionTransaction(vitest.test, require_helpers.createKnexDb
|
|
30
|
+
const it = require_objection.wrapVitestObjectionTransaction(vitest.test, require_helpers.createKnexDb, require_helpers.createTestTablesKnex);
|
|
31
31
|
(0, vitest.describe)("ObjectionFactory", () => {
|
|
32
32
|
it("should create an ObjectionFactory instance", ({ trx }) => {
|
|
33
33
|
const builders = {};
|
|
@@ -3,9 +3,9 @@ import { faker } from "../faker-BGKYFoCT.mjs";
|
|
|
3
3
|
import { ObjectionFactory } from "../ObjectionFactory-8hebmnai.mjs";
|
|
4
4
|
import "../PostgresMigrator-DxPC_gGu.mjs";
|
|
5
5
|
import "../PostgresObjectionMigrator-G4h5FLvU.mjs";
|
|
6
|
-
import "../VitestTransactionIsolator-
|
|
7
|
-
import "../VitestObjectionTransactionIsolator-
|
|
8
|
-
import { wrapVitestObjectionTransaction } from "../objection-
|
|
6
|
+
import "../VitestTransactionIsolator-CskiiJbW.mjs";
|
|
7
|
+
import "../VitestObjectionTransactionIsolator-DVtJG2F3.mjs";
|
|
8
|
+
import { wrapVitestObjectionTransaction } from "../objection-BEPk9h-g.mjs";
|
|
9
9
|
import { createKnexDb, createTestTablesKnex } from "../helpers-B4TXg3Wp.mjs";
|
|
10
10
|
import { describe, expect, test } from "vitest";
|
|
11
11
|
import { Model } from "objection";
|
|
@@ -26,7 +26,7 @@ var Post = class extends Model {
|
|
|
26
26
|
title;
|
|
27
27
|
user_id;
|
|
28
28
|
};
|
|
29
|
-
const it$1 = wrapVitestObjectionTransaction(test, createKnexDb
|
|
29
|
+
const it$1 = wrapVitestObjectionTransaction(test, createKnexDb, createTestTablesKnex);
|
|
30
30
|
describe("ObjectionFactory", () => {
|
|
31
31
|
it$1("should create an ObjectionFactory instance", ({ trx }) => {
|
|
32
32
|
const builders = {};
|
|
@@ -4,9 +4,9 @@ require('../faker-B14IEMIN.cjs');
|
|
|
4
4
|
require('../ObjectionFactory-CDriunkS.cjs');
|
|
5
5
|
require('../PostgresMigrator-DFcNdCvD.cjs');
|
|
6
6
|
require('../PostgresObjectionMigrator-BG6ymgnt.cjs');
|
|
7
|
-
require('../VitestTransactionIsolator-
|
|
8
|
-
require('../VitestObjectionTransactionIsolator-
|
|
9
|
-
const require_objection = require('../objection-
|
|
7
|
+
require('../VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
8
|
+
require('../VitestObjectionTransactionIsolator-LP4B0cqW.cjs');
|
|
9
|
+
const require_objection = require('../objection-Di7JSist.cjs');
|
|
10
10
|
const require_helpers = require('../helpers-Bf0nXhbu.cjs');
|
|
11
11
|
const vitest = require_chunk.__toESM(require("vitest"));
|
|
12
12
|
const objection = require_chunk.__toESM(require("objection"));
|
|
@@ -103,8 +103,7 @@ var Comment = class extends objection.Model {
|
|
|
103
103
|
};
|
|
104
104
|
}
|
|
105
105
|
};
|
|
106
|
-
const
|
|
107
|
-
const it = require_objection.wrapVitestObjectionTransaction(vitest.it, knex, async (trx) => {
|
|
106
|
+
const it = require_objection.wrapVitestObjectionTransaction(vitest.it, require_helpers.createKnexDb, async (trx) => {
|
|
108
107
|
await require_helpers.createTestTablesKnex(trx);
|
|
109
108
|
});
|
|
110
109
|
(0, vitest.describe)("VitestObjectionTransactionIsolator", () => {
|
|
@@ -3,9 +3,9 @@ import "../faker-BGKYFoCT.mjs";
|
|
|
3
3
|
import "../ObjectionFactory-8hebmnai.mjs";
|
|
4
4
|
import "../PostgresMigrator-DxPC_gGu.mjs";
|
|
5
5
|
import "../PostgresObjectionMigrator-G4h5FLvU.mjs";
|
|
6
|
-
import "../VitestTransactionIsolator-
|
|
7
|
-
import "../VitestObjectionTransactionIsolator-
|
|
8
|
-
import { wrapVitestObjectionTransaction } from "../objection-
|
|
6
|
+
import "../VitestTransactionIsolator-CskiiJbW.mjs";
|
|
7
|
+
import "../VitestObjectionTransactionIsolator-DVtJG2F3.mjs";
|
|
8
|
+
import { wrapVitestObjectionTransaction } from "../objection-BEPk9h-g.mjs";
|
|
9
9
|
import { createKnexDb, createTestTablesKnex } from "../helpers-B4TXg3Wp.mjs";
|
|
10
10
|
import { describe, expect, it } from "vitest";
|
|
11
11
|
import { Model } from "objection";
|
|
@@ -102,8 +102,7 @@ var Comment = class extends Model {
|
|
|
102
102
|
};
|
|
103
103
|
}
|
|
104
104
|
};
|
|
105
|
-
const
|
|
106
|
-
const it$1 = wrapVitestObjectionTransaction(it, knex, async (trx) => {
|
|
105
|
+
const it$1 = wrapVitestObjectionTransaction(it, createKnexDb, async (trx) => {
|
|
107
106
|
await createTestTablesKnex(trx);
|
|
108
107
|
});
|
|
109
108
|
describe("VitestObjectionTransactionIsolator", () => {
|
|
@@ -4,15 +4,15 @@ require('../faker-B14IEMIN.cjs');
|
|
|
4
4
|
const require_KyselyFactory = require('../KyselyFactory-Cf0o2YxO.cjs');
|
|
5
5
|
require('../PostgresMigrator-DFcNdCvD.cjs');
|
|
6
6
|
require('../PostgresKyselyMigrator-CfytARcA.cjs');
|
|
7
|
-
require('../VitestTransactionIsolator-
|
|
8
|
-
require('../VitestKyselyTransactionIsolator-
|
|
7
|
+
require('../VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
8
|
+
require('../VitestKyselyTransactionIsolator-Dqy3qNoJ.cjs');
|
|
9
9
|
const require_helpers = require('../helpers-nEUtQ7eo.cjs');
|
|
10
|
-
const require_kysely = require('../kysely-
|
|
10
|
+
const require_kysely = require('../kysely-CP1iJMvq.cjs');
|
|
11
11
|
const require_helpers$1 = require('../helpers-Bf0nXhbu.cjs');
|
|
12
12
|
const vitest = require_chunk.__toESM(require("vitest"));
|
|
13
13
|
|
|
14
14
|
//#region src/__tests__/integration.spec.ts
|
|
15
|
-
const db = require_helpers.createKyselyDb(require_helpers$1.TEST_DATABASE_CONFIG);
|
|
15
|
+
const db = () => require_helpers.createKyselyDb(require_helpers$1.TEST_DATABASE_CONFIG);
|
|
16
16
|
const it = require_kysely.wrapVitestKyselyTransaction(vitest.it, db, require_helpers$1.createTestTables);
|
|
17
17
|
(0, vitest.describe)("Testkit Integration Tests", () => {
|
|
18
18
|
(0, vitest.beforeAll)(async () => {});
|
|
@@ -3,15 +3,15 @@ import "../faker-BGKYFoCT.mjs";
|
|
|
3
3
|
import { KyselyFactory } from "../KyselyFactory-BcYkC0t2.mjs";
|
|
4
4
|
import "../PostgresMigrator-DxPC_gGu.mjs";
|
|
5
5
|
import "../PostgresKyselyMigrator-Bdhl251C.mjs";
|
|
6
|
-
import "../VitestTransactionIsolator-
|
|
7
|
-
import "../VitestKyselyTransactionIsolator-
|
|
6
|
+
import "../VitestTransactionIsolator-CskiiJbW.mjs";
|
|
7
|
+
import "../VitestKyselyTransactionIsolator-Dq4Oeh-Y.mjs";
|
|
8
8
|
import { createKyselyDb } from "../helpers-BuPmgzyQ.mjs";
|
|
9
|
-
import { wrapVitestKyselyTransaction } from "../kysely-
|
|
9
|
+
import { wrapVitestKyselyTransaction } from "../kysely-BsDbvw3r.mjs";
|
|
10
10
|
import { TEST_DATABASE_CONFIG, createTestTables } from "../helpers-B4TXg3Wp.mjs";
|
|
11
11
|
import { beforeAll, describe, expect, it } from "vitest";
|
|
12
12
|
|
|
13
13
|
//#region src/__tests__/integration.spec.ts
|
|
14
|
-
const db = createKyselyDb(TEST_DATABASE_CONFIG);
|
|
14
|
+
const db = () => createKyselyDb(TEST_DATABASE_CONFIG);
|
|
15
15
|
const it$1 = wrapVitestKyselyTransaction(it, db, createTestTables);
|
|
16
16
|
describe("Testkit Integration Tests", () => {
|
|
17
17
|
beforeAll(async () => {});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IsolationLevel } from "./VitestTransactionIsolator-
|
|
2
|
-
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-
|
|
1
|
+
import { IsolationLevel } from "./VitestTransactionIsolator-CskiiJbW.mjs";
|
|
2
|
+
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-Dq4Oeh-Y.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/kysely.ts
|
|
5
5
|
/**
|
|
@@ -58,9 +58,9 @@ import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolat
|
|
|
58
58
|
* });
|
|
59
59
|
* ```
|
|
60
60
|
*/
|
|
61
|
-
function wrapVitestKyselyTransaction(api,
|
|
61
|
+
function wrapVitestKyselyTransaction(api, connection, setup, level = IsolationLevel.REPEATABLE_READ) {
|
|
62
62
|
const wrapper = new VitestKyselyTransactionIsolator(api);
|
|
63
|
-
return wrapper.wrapVitestWithTransaction(
|
|
63
|
+
return wrapper.wrapVitestWithTransaction(connection, setup, level);
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-
|
|
2
|
-
const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-
|
|
1
|
+
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
2
|
+
const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-Dqy3qNoJ.cjs');
|
|
3
3
|
|
|
4
4
|
//#region src/kysely.ts
|
|
5
5
|
/**
|
|
@@ -58,9 +58,9 @@ const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransacti
|
|
|
58
58
|
* });
|
|
59
59
|
* ```
|
|
60
60
|
*/
|
|
61
|
-
function wrapVitestKyselyTransaction(api,
|
|
61
|
+
function wrapVitestKyselyTransaction(api, connection, setup, level = require_VitestTransactionIsolator.IsolationLevel.REPEATABLE_READ) {
|
|
62
62
|
const wrapper = new require_VitestKyselyTransactionIsolator.VitestKyselyTransactionIsolator(api);
|
|
63
|
-
return wrapper.wrapVitestWithTransaction(
|
|
63
|
+
return wrapper.wrapVitestWithTransaction(connection, setup, level);
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
//#endregion
|
package/dist/kysely.cjs
CHANGED
|
@@ -3,9 +3,9 @@ require('./faker-B14IEMIN.cjs');
|
|
|
3
3
|
const require_KyselyFactory = require('./KyselyFactory-Cf0o2YxO.cjs');
|
|
4
4
|
require('./PostgresMigrator-DFcNdCvD.cjs');
|
|
5
5
|
const require_PostgresKyselyMigrator = require('./PostgresKyselyMigrator-CfytARcA.cjs');
|
|
6
|
-
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-
|
|
7
|
-
const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-
|
|
8
|
-
const require_kysely = require('./kysely-
|
|
6
|
+
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
7
|
+
const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-Dqy3qNoJ.cjs');
|
|
8
|
+
const require_kysely = require('./kysely-CP1iJMvq.cjs');
|
|
9
9
|
|
|
10
10
|
exports.IsolationLevel = require_VitestTransactionIsolator.IsolationLevel;
|
|
11
11
|
exports.KyselyFactory = require_KyselyFactory.KyselyFactory;
|
package/dist/kysely.d.cts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "./faker-BSH1EMtg.cjs";
|
|
2
2
|
import "./Factory-pNV7ZQ7-.cjs";
|
|
3
|
-
import { KyselyFactory } from "./KyselyFactory-
|
|
3
|
+
import { KyselyFactory } from "./KyselyFactory-DLBrYWxU.cjs";
|
|
4
4
|
import "./PostgresMigrator-D5UkK1_K.cjs";
|
|
5
5
|
import { PostgresKyselyMigrator } from "./PostgresKyselyMigrator-CQ3aUoy_.cjs";
|
|
6
|
-
import { IsolationLevel } from "./VitestTransactionIsolator-
|
|
7
|
-
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-
|
|
6
|
+
import { DatabaseConnection, IsolationLevel } from "./VitestTransactionIsolator-DdLNODZg.cjs";
|
|
7
|
+
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-DYUYVEh9.cjs";
|
|
8
8
|
import { Kysely, Transaction } from "kysely";
|
|
9
9
|
import { TestAPI } from "vitest";
|
|
10
10
|
|
|
@@ -66,7 +66,7 @@ import { TestAPI } from "vitest";
|
|
|
66
66
|
* });
|
|
67
67
|
* ```
|
|
68
68
|
*/
|
|
69
|
-
declare function wrapVitestKyselyTransaction<Database>(api: TestAPI,
|
|
69
|
+
declare function wrapVitestKyselyTransaction<Database>(api: TestAPI, connection: DatabaseConnection<Kysely<Database>>, setup?: (trx: Transaction<Database>) => Promise<void>, level?: IsolationLevel): TestAPI<{
|
|
70
70
|
trx: Transaction<Database>;
|
|
71
71
|
}>;
|
|
72
72
|
//#endregion
|
package/dist/kysely.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "./faker-C-Iuk_R1.mjs";
|
|
2
2
|
import "./Factory-D7P3bKKb.mjs";
|
|
3
|
-
import { KyselyFactory } from "./KyselyFactory-
|
|
3
|
+
import { KyselyFactory } from "./KyselyFactory-72P98y5I.mjs";
|
|
4
4
|
import "./PostgresMigrator-BlvuQl7d.mjs";
|
|
5
5
|
import { PostgresKyselyMigrator } from "./PostgresKyselyMigrator-_6yHZigp.mjs";
|
|
6
|
-
import { IsolationLevel } from "./VitestTransactionIsolator-
|
|
7
|
-
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-
|
|
6
|
+
import { DatabaseConnection, IsolationLevel } from "./VitestTransactionIsolator-zdyiS_SY.mjs";
|
|
7
|
+
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-CnxpE9cH.mjs";
|
|
8
8
|
import { Kysely, Transaction } from "kysely";
|
|
9
9
|
import { TestAPI } from "vitest";
|
|
10
10
|
|
|
@@ -66,7 +66,7 @@ import { TestAPI } from "vitest";
|
|
|
66
66
|
* });
|
|
67
67
|
* ```
|
|
68
68
|
*/
|
|
69
|
-
declare function wrapVitestKyselyTransaction<Database>(api: TestAPI,
|
|
69
|
+
declare function wrapVitestKyselyTransaction<Database>(api: TestAPI, connection: DatabaseConnection<Kysely<Database>>, setup?: (trx: Transaction<Database>) => Promise<void>, level?: IsolationLevel): TestAPI<{
|
|
70
70
|
trx: Transaction<Database>;
|
|
71
71
|
}>;
|
|
72
72
|
//#endregion
|
package/dist/kysely.mjs
CHANGED
|
@@ -3,8 +3,8 @@ import "./faker-BGKYFoCT.mjs";
|
|
|
3
3
|
import { KyselyFactory } from "./KyselyFactory-BcYkC0t2.mjs";
|
|
4
4
|
import "./PostgresMigrator-DxPC_gGu.mjs";
|
|
5
5
|
import { PostgresKyselyMigrator } from "./PostgresKyselyMigrator-Bdhl251C.mjs";
|
|
6
|
-
import { IsolationLevel } from "./VitestTransactionIsolator-
|
|
7
|
-
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-
|
|
8
|
-
import { wrapVitestKyselyTransaction } from "./kysely-
|
|
6
|
+
import { IsolationLevel } from "./VitestTransactionIsolator-CskiiJbW.mjs";
|
|
7
|
+
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-Dq4Oeh-Y.mjs";
|
|
8
|
+
import { wrapVitestKyselyTransaction } from "./kysely-BsDbvw3r.mjs";
|
|
9
9
|
|
|
10
10
|
export { IsolationLevel, KyselyFactory, PostgresKyselyMigrator, VitestKyselyTransactionIsolator, wrapVitestKyselyTransaction };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IsolationLevel } from "./VitestTransactionIsolator-
|
|
2
|
-
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-
|
|
1
|
+
import { IsolationLevel } from "./VitestTransactionIsolator-CskiiJbW.mjs";
|
|
2
|
+
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-DVtJG2F3.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/objection.ts
|
|
5
5
|
/**
|
|
@@ -8,7 +8,7 @@ import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransaction
|
|
|
8
8
|
* This ensures tests don't affect each other's data and run faster than truncating tables.
|
|
9
9
|
*
|
|
10
10
|
* @param api - The Vitest test API (usually `test` from vitest)
|
|
11
|
-
* @param
|
|
11
|
+
* @param conn - The Knex database connection instance
|
|
12
12
|
* @param setup - Optional setup function to run before each test in the transaction
|
|
13
13
|
* @param level - Transaction isolation level (defaults to REPEATABLE_READ)
|
|
14
14
|
* @returns A wrapped test API that provides transaction isolation
|
|
@@ -73,9 +73,9 @@ import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransaction
|
|
|
73
73
|
* });
|
|
74
74
|
* ```
|
|
75
75
|
*/
|
|
76
|
-
function wrapVitestObjectionTransaction(api,
|
|
76
|
+
function wrapVitestObjectionTransaction(api, conn, setup, level = IsolationLevel.REPEATABLE_READ) {
|
|
77
77
|
const wrapper = new VitestObjectionTransactionIsolator(api);
|
|
78
|
-
return wrapper.wrapVitestWithTransaction(
|
|
78
|
+
return wrapper.wrapVitestWithTransaction(conn, setup, level);
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-
|
|
2
|
-
const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTransactionIsolator-
|
|
1
|
+
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
2
|
+
const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTransactionIsolator-LP4B0cqW.cjs');
|
|
3
3
|
|
|
4
4
|
//#region src/objection.ts
|
|
5
5
|
/**
|
|
@@ -8,7 +8,7 @@ const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTra
|
|
|
8
8
|
* This ensures tests don't affect each other's data and run faster than truncating tables.
|
|
9
9
|
*
|
|
10
10
|
* @param api - The Vitest test API (usually `test` from vitest)
|
|
11
|
-
* @param
|
|
11
|
+
* @param conn - The Knex database connection instance
|
|
12
12
|
* @param setup - Optional setup function to run before each test in the transaction
|
|
13
13
|
* @param level - Transaction isolation level (defaults to REPEATABLE_READ)
|
|
14
14
|
* @returns A wrapped test API that provides transaction isolation
|
|
@@ -73,9 +73,9 @@ const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTra
|
|
|
73
73
|
* });
|
|
74
74
|
* ```
|
|
75
75
|
*/
|
|
76
|
-
function wrapVitestObjectionTransaction(api,
|
|
76
|
+
function wrapVitestObjectionTransaction(api, conn, setup, level = require_VitestTransactionIsolator.IsolationLevel.REPEATABLE_READ) {
|
|
77
77
|
const wrapper = new require_VitestObjectionTransactionIsolator.VitestObjectionTransactionIsolator(api);
|
|
78
|
-
return wrapper.wrapVitestWithTransaction(
|
|
78
|
+
return wrapper.wrapVitestWithTransaction(conn, setup, level);
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
//#endregion
|
package/dist/objection.cjs
CHANGED
|
@@ -3,9 +3,9 @@ require('./faker-B14IEMIN.cjs');
|
|
|
3
3
|
const require_ObjectionFactory = require('./ObjectionFactory-CDriunkS.cjs');
|
|
4
4
|
require('./PostgresMigrator-DFcNdCvD.cjs');
|
|
5
5
|
const require_PostgresObjectionMigrator = require('./PostgresObjectionMigrator-BG6ymgnt.cjs');
|
|
6
|
-
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-
|
|
7
|
-
const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTransactionIsolator-
|
|
8
|
-
const require_objection = require('./objection-
|
|
6
|
+
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
7
|
+
const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTransactionIsolator-LP4B0cqW.cjs');
|
|
8
|
+
const require_objection = require('./objection-Di7JSist.cjs');
|
|
9
9
|
|
|
10
10
|
exports.IsolationLevel = require_VitestTransactionIsolator.IsolationLevel;
|
|
11
11
|
exports.ObjectionFactory = require_ObjectionFactory.ObjectionFactory;
|
package/dist/objection.d.cts
CHANGED
|
@@ -3,8 +3,8 @@ import "./Factory-pNV7ZQ7-.cjs";
|
|
|
3
3
|
import { ObjectionFactory } from "./ObjectionFactory-D3l1VuyX.cjs";
|
|
4
4
|
import "./PostgresMigrator-D5UkK1_K.cjs";
|
|
5
5
|
import { PostgresObjectionMigrator } from "./PostgresObjectionMigrator-CZHHcCOv.cjs";
|
|
6
|
-
import { IsolationLevel } from "./VitestTransactionIsolator-
|
|
7
|
-
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-
|
|
6
|
+
import { DatabaseConnection, IsolationLevel } from "./VitestTransactionIsolator-DdLNODZg.cjs";
|
|
7
|
+
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-CJ4ds5Qv.cjs";
|
|
8
8
|
import { Knex } from "knex";
|
|
9
9
|
import { TestAPI } from "vitest";
|
|
10
10
|
|
|
@@ -16,7 +16,7 @@ import { TestAPI } from "vitest";
|
|
|
16
16
|
* This ensures tests don't affect each other's data and run faster than truncating tables.
|
|
17
17
|
*
|
|
18
18
|
* @param api - The Vitest test API (usually `test` from vitest)
|
|
19
|
-
* @param
|
|
19
|
+
* @param conn - The Knex database connection instance
|
|
20
20
|
* @param setup - Optional setup function to run before each test in the transaction
|
|
21
21
|
* @param level - Transaction isolation level (defaults to REPEATABLE_READ)
|
|
22
22
|
* @returns A wrapped test API that provides transaction isolation
|
|
@@ -81,7 +81,7 @@ import { TestAPI } from "vitest";
|
|
|
81
81
|
* });
|
|
82
82
|
* ```
|
|
83
83
|
*/
|
|
84
|
-
declare function wrapVitestObjectionTransaction(api: TestAPI,
|
|
84
|
+
declare function wrapVitestObjectionTransaction(api: TestAPI, conn: DatabaseConnection<Knex>, setup?: (trx: Knex.Transaction) => Promise<void>, level?: IsolationLevel): TestAPI<{
|
|
85
85
|
trx: Knex.Transaction<any, any[]>;
|
|
86
86
|
}>;
|
|
87
87
|
//#endregion
|
package/dist/objection.d.mts
CHANGED
|
@@ -3,8 +3,8 @@ import "./Factory-D7P3bKKb.mjs";
|
|
|
3
3
|
import { ObjectionFactory } from "./ObjectionFactory-B40NQWSe.mjs";
|
|
4
4
|
import "./PostgresMigrator-BlvuQl7d.mjs";
|
|
5
5
|
import { PostgresObjectionMigrator } from "./PostgresObjectionMigrator-C69n7vzr.mjs";
|
|
6
|
-
import { IsolationLevel } from "./VitestTransactionIsolator-
|
|
7
|
-
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-
|
|
6
|
+
import { DatabaseConnection, IsolationLevel } from "./VitestTransactionIsolator-zdyiS_SY.mjs";
|
|
7
|
+
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-DIM79dCq.mjs";
|
|
8
8
|
import { TestAPI } from "vitest";
|
|
9
9
|
import { Knex } from "knex";
|
|
10
10
|
|
|
@@ -16,7 +16,7 @@ import { Knex } from "knex";
|
|
|
16
16
|
* This ensures tests don't affect each other's data and run faster than truncating tables.
|
|
17
17
|
*
|
|
18
18
|
* @param api - The Vitest test API (usually `test` from vitest)
|
|
19
|
-
* @param
|
|
19
|
+
* @param conn - The Knex database connection instance
|
|
20
20
|
* @param setup - Optional setup function to run before each test in the transaction
|
|
21
21
|
* @param level - Transaction isolation level (defaults to REPEATABLE_READ)
|
|
22
22
|
* @returns A wrapped test API that provides transaction isolation
|
|
@@ -81,7 +81,7 @@ import { Knex } from "knex";
|
|
|
81
81
|
* });
|
|
82
82
|
* ```
|
|
83
83
|
*/
|
|
84
|
-
declare function wrapVitestObjectionTransaction(api: TestAPI,
|
|
84
|
+
declare function wrapVitestObjectionTransaction(api: TestAPI, conn: DatabaseConnection<Knex>, setup?: (trx: Knex.Transaction) => Promise<void>, level?: IsolationLevel): TestAPI<{
|
|
85
85
|
trx: Knex.Transaction<any, any[]>;
|
|
86
86
|
}>;
|
|
87
87
|
//#endregion
|
package/dist/objection.mjs
CHANGED
|
@@ -3,8 +3,8 @@ import "./faker-BGKYFoCT.mjs";
|
|
|
3
3
|
import { ObjectionFactory } from "./ObjectionFactory-8hebmnai.mjs";
|
|
4
4
|
import "./PostgresMigrator-DxPC_gGu.mjs";
|
|
5
5
|
import { PostgresObjectionMigrator } from "./PostgresObjectionMigrator-G4h5FLvU.mjs";
|
|
6
|
-
import { IsolationLevel } from "./VitestTransactionIsolator-
|
|
7
|
-
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-
|
|
8
|
-
import { wrapVitestObjectionTransaction } from "./objection-
|
|
6
|
+
import { IsolationLevel } from "./VitestTransactionIsolator-CskiiJbW.mjs";
|
|
7
|
+
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-DVtJG2F3.mjs";
|
|
8
|
+
import { wrapVitestObjectionTransaction } from "./objection-BEPk9h-g.mjs";
|
|
9
9
|
|
|
10
10
|
export { IsolationLevel, ObjectionFactory, PostgresObjectionMigrator, VitestObjectionTransactionIsolator, wrapVitestObjectionTransaction };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geekmidas/testkit",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"require": "./dist/objection.cjs"
|
|
11
11
|
},
|
|
12
12
|
"./kysely": {
|
|
13
|
-
"types": "./dist/kysely.ts",
|
|
13
|
+
"types": "./dist/kysely.d.ts",
|
|
14
14
|
"import": "./dist/kysely.mjs",
|
|
15
15
|
"require": "./dist/kysely.cjs"
|
|
16
16
|
},
|
package/src/KyselyFactory.ts
CHANGED
|
@@ -289,7 +289,7 @@ export class KyselyFactory<
|
|
|
289
289
|
attrs: (
|
|
290
290
|
idx: number,
|
|
291
291
|
faker: FakerFactory,
|
|
292
|
-
) => Promise<Parameters<Builders[K]>[0]>,
|
|
292
|
+
) => Parameters<Builders[K]>[0] | Promise<Parameters<Builders[K]>[0]>,
|
|
293
293
|
): Promise<Awaited<ReturnType<Builders[K]>>[]>;
|
|
294
294
|
async insertMany<K extends keyof Builders>(
|
|
295
295
|
count: number,
|
package/src/ObjectionFactory.ts
CHANGED
|
@@ -151,7 +151,7 @@ export class ObjectionFactory<
|
|
|
151
151
|
}
|
|
152
152
|
return acc;
|
|
153
153
|
}, {} as any);
|
|
154
|
-
|
|
154
|
+
|
|
155
155
|
// Use static query method to insert data directly
|
|
156
156
|
// @ts-ignore
|
|
157
157
|
const result = await ModelClass.query(db).insert(insertData);
|
|
@@ -237,7 +237,7 @@ export class ObjectionFactory<
|
|
|
237
237
|
}
|
|
238
238
|
return acc;
|
|
239
239
|
}, {} as any);
|
|
240
|
-
|
|
240
|
+
|
|
241
241
|
// Use the model's constructor to get the query builder
|
|
242
242
|
return await result.constructor.query(this.db).insert(insertData);
|
|
243
243
|
}
|
|
@@ -309,13 +309,16 @@ export class ObjectionFactory<
|
|
|
309
309
|
// If the builder returns a model instance, insert it
|
|
310
310
|
if (record && typeof record.$query === 'function') {
|
|
311
311
|
// Extract data from model, excluding undefined values and id
|
|
312
|
-
const insertData = Object.entries(record).reduce(
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
312
|
+
const insertData = Object.entries(record).reduce(
|
|
313
|
+
(acc, [key, value]) => {
|
|
314
|
+
if (value !== undefined && key !== 'id') {
|
|
315
|
+
acc[key] = value;
|
|
316
|
+
}
|
|
317
|
+
return acc;
|
|
318
|
+
},
|
|
319
|
+
{} as any,
|
|
320
|
+
);
|
|
321
|
+
|
|
319
322
|
// Use the model's constructor to get the query builder
|
|
320
323
|
return record.constructor.query(this.db).insert(insertData);
|
|
321
324
|
}
|
|
@@ -47,6 +47,9 @@ export class VitestKyselyTransactionIsolator<
|
|
|
47
47
|
Kysely<Database>,
|
|
48
48
|
Transaction<Database>
|
|
49
49
|
> {
|
|
50
|
+
destroy(conn: Kysely<Database>): Promise<void> {
|
|
51
|
+
return conn.destroy();
|
|
52
|
+
}
|
|
50
53
|
/**
|
|
51
54
|
* Creates a Kysely transaction with the specified isolation level.
|
|
52
55
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -36,6 +36,9 @@ export class VitestObjectionTransactionIsolator extends VitestPostgresTransactio
|
|
|
36
36
|
Knex,
|
|
37
37
|
Knex.Transaction
|
|
38
38
|
> {
|
|
39
|
+
destroy(conn: Knex<any, any[]>): Promise<void> {
|
|
40
|
+
return conn.destroy();
|
|
41
|
+
}
|
|
39
42
|
/**
|
|
40
43
|
* Creates a Knex transaction with the specified isolation level.
|
|
41
44
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -56,13 +59,13 @@ export class VitestObjectionTransactionIsolator extends VitestPostgresTransactio
|
|
|
56
59
|
* ```
|
|
57
60
|
*/
|
|
58
61
|
async transact(
|
|
59
|
-
|
|
62
|
+
connection: Knex,
|
|
60
63
|
level: IsolationLevel,
|
|
61
64
|
fn: (trx: Knex.Transaction) => Promise<void>,
|
|
62
65
|
): Promise<void> {
|
|
63
66
|
const isolationLevel = level.toLowerCase() as Lowercase<IsolationLevel>;
|
|
64
67
|
|
|
65
|
-
await
|
|
68
|
+
await connection.transaction(
|
|
66
69
|
async (trx) => {
|
|
67
70
|
await fn(trx);
|
|
68
71
|
},
|
|
@@ -48,7 +48,7 @@ export enum IsolationLevel {
|
|
|
48
48
|
* Provides automatic transaction rollback after each test to maintain test isolation.
|
|
49
49
|
* Subclasses must implement the transact() method for their specific database driver.
|
|
50
50
|
*
|
|
51
|
-
* @template
|
|
51
|
+
* @template TConn - The database connection type
|
|
52
52
|
* @template Transaction - The transaction type
|
|
53
53
|
*
|
|
54
54
|
* @example
|
|
@@ -70,10 +70,7 @@ export enum IsolationLevel {
|
|
|
70
70
|
* });
|
|
71
71
|
* ```
|
|
72
72
|
*/
|
|
73
|
-
export abstract class VitestPostgresTransactionIsolator<
|
|
74
|
-
Connection,
|
|
75
|
-
Transaction,
|
|
76
|
-
> {
|
|
73
|
+
export abstract class VitestPostgresTransactionIsolator<TConn, Transaction> {
|
|
77
74
|
/**
|
|
78
75
|
* Abstract method to create a transaction with the specified isolation level.
|
|
79
76
|
* Must be implemented by subclasses for specific database drivers.
|
|
@@ -84,11 +81,12 @@ export abstract class VitestPostgresTransactionIsolator<
|
|
|
84
81
|
* @returns Promise that resolves when the transaction completes
|
|
85
82
|
*/
|
|
86
83
|
abstract transact(
|
|
87
|
-
conn:
|
|
84
|
+
conn: TConn,
|
|
88
85
|
isolationLevel: IsolationLevel,
|
|
89
86
|
fn: (trx: Transaction) => Promise<void>,
|
|
90
87
|
): Promise<void>;
|
|
91
88
|
|
|
89
|
+
abstract destroy(conn: TConn): Promise<void>;
|
|
92
90
|
/**
|
|
93
91
|
* Creates a new VitestPostgresTransactionIsolator instance.
|
|
94
92
|
*
|
|
@@ -119,7 +117,7 @@ export abstract class VitestPostgresTransactionIsolator<
|
|
|
119
117
|
* ```
|
|
120
118
|
*/
|
|
121
119
|
wrapVitestWithTransaction(
|
|
122
|
-
|
|
120
|
+
createConnection: DatabaseConnection<TConn>,
|
|
123
121
|
setup?: (trx: Transaction) => Promise<void>,
|
|
124
122
|
level: IsolationLevel = IsolationLevel.REPEATABLE_READ,
|
|
125
123
|
) {
|
|
@@ -135,7 +133,7 @@ export abstract class VitestPostgresTransactionIsolator<
|
|
|
135
133
|
}
|
|
136
134
|
|
|
137
135
|
let testError: Error | undefined;
|
|
138
|
-
|
|
136
|
+
const conn = await createConnection();
|
|
139
137
|
try {
|
|
140
138
|
await this.transact(conn, level, async (transaction) => {
|
|
141
139
|
try {
|
|
@@ -160,8 +158,13 @@ export abstract class VitestPostgresTransactionIsolator<
|
|
|
160
158
|
if (testError) {
|
|
161
159
|
throw testError;
|
|
162
160
|
}
|
|
161
|
+
} finally {
|
|
162
|
+
await this.destroy(conn);
|
|
163
163
|
}
|
|
164
164
|
},
|
|
165
165
|
});
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
+
|
|
169
|
+
export type DatabaseConnectionFn<Conn> = () => Conn | Promise<Conn>;
|
|
170
|
+
export type DatabaseConnection<Conn> = DatabaseConnectionFn<Conn>;
|
|
@@ -6,7 +6,7 @@ import { KyselyFactory } from '../KyselyFactory';
|
|
|
6
6
|
import { createKyselyDb } from '../helpers';
|
|
7
7
|
import { wrapVitestKyselyTransaction } from '../kysely';
|
|
8
8
|
|
|
9
|
-
const db = createKyselyDb<TestDatabase>(TEST_DATABASE_CONFIG);
|
|
9
|
+
const db = () => createKyselyDb<TestDatabase>(TEST_DATABASE_CONFIG);
|
|
10
10
|
const itWithTransaction = wrapVitestKyselyTransaction<TestDatabase>(
|
|
11
11
|
it,
|
|
12
12
|
db,
|
|
@@ -106,10 +106,9 @@ class Comment extends Model {
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
// Create database connection
|
|
109
|
-
const knex = createKnexDb();
|
|
110
109
|
|
|
111
110
|
// Create wrapped test with transaction isolation
|
|
112
|
-
const it = wrapVitestObjectionTransaction(base,
|
|
111
|
+
const it = wrapVitestObjectionTransaction(base, createKnexDb, async (trx) => {
|
|
113
112
|
// Create tables in the transaction
|
|
114
113
|
await createTestTablesKnex(trx);
|
|
115
114
|
});
|
|
@@ -5,7 +5,7 @@ import { KyselyFactory } from '../KyselyFactory';
|
|
|
5
5
|
import { createKyselyDb } from '../helpers';
|
|
6
6
|
import { wrapVitestKyselyTransaction } from '../kysely';
|
|
7
7
|
|
|
8
|
-
const db = createKyselyDb<TestDatabase>(TEST_DATABASE_CONFIG);
|
|
8
|
+
const db = () => createKyselyDb<TestDatabase>(TEST_DATABASE_CONFIG);
|
|
9
9
|
const it = wrapVitestKyselyTransaction<TestDatabase>(
|
|
10
10
|
base,
|
|
11
11
|
db,
|
package/src/kysely.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { Kysely, Transaction } from 'kysely';
|
|
2
2
|
import type { TestAPI } from 'vitest';
|
|
3
3
|
import { VitestKyselyTransactionIsolator } from './VitestKyselyTransactionIsolator';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
type DatabaseConnection,
|
|
6
|
+
IsolationLevel,
|
|
7
|
+
} from './VitestTransactionIsolator';
|
|
5
8
|
|
|
6
9
|
/**
|
|
7
10
|
* Kysely-specific exports for test utilities.
|
|
@@ -71,11 +74,11 @@ export { IsolationLevel } from './VitestTransactionIsolator';
|
|
|
71
74
|
*/
|
|
72
75
|
export function wrapVitestKyselyTransaction<Database>(
|
|
73
76
|
api: TestAPI,
|
|
74
|
-
|
|
77
|
+
connection: DatabaseConnection<Kysely<Database>>,
|
|
75
78
|
setup?: (trx: Transaction<Database>) => Promise<void>,
|
|
76
79
|
level: IsolationLevel = IsolationLevel.REPEATABLE_READ,
|
|
77
80
|
) {
|
|
78
81
|
const wrapper = new VitestKyselyTransactionIsolator<Database>(api);
|
|
79
82
|
|
|
80
|
-
return wrapper.wrapVitestWithTransaction(
|
|
83
|
+
return wrapper.wrapVitestWithTransaction(connection, setup, level);
|
|
81
84
|
}
|
package/src/objection.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { Knex } from 'knex';
|
|
2
2
|
import type { TestAPI } from 'vitest';
|
|
3
3
|
import { VitestObjectionTransactionIsolator } from './VitestObjectionTransactionIsolator';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
type DatabaseConnection,
|
|
6
|
+
IsolationLevel,
|
|
7
|
+
} from './VitestTransactionIsolator';
|
|
5
8
|
|
|
6
9
|
/**
|
|
7
10
|
* Objection.js-specific exports for test utilities.
|
|
@@ -20,7 +23,7 @@ export { PostgresObjectionMigrator } from './PostgresObjectionMigrator';
|
|
|
20
23
|
* This ensures tests don't affect each other's data and run faster than truncating tables.
|
|
21
24
|
*
|
|
22
25
|
* @param api - The Vitest test API (usually `test` from vitest)
|
|
23
|
-
* @param
|
|
26
|
+
* @param conn - The Knex database connection instance
|
|
24
27
|
* @param setup - Optional setup function to run before each test in the transaction
|
|
25
28
|
* @param level - Transaction isolation level (defaults to REPEATABLE_READ)
|
|
26
29
|
* @returns A wrapped test API that provides transaction isolation
|
|
@@ -87,11 +90,11 @@ export { PostgresObjectionMigrator } from './PostgresObjectionMigrator';
|
|
|
87
90
|
*/
|
|
88
91
|
export function wrapVitestObjectionTransaction(
|
|
89
92
|
api: TestAPI,
|
|
90
|
-
|
|
93
|
+
conn: DatabaseConnection<Knex>,
|
|
91
94
|
setup?: (trx: Knex.Transaction) => Promise<void>,
|
|
92
95
|
level: IsolationLevel = IsolationLevel.REPEATABLE_READ,
|
|
93
96
|
) {
|
|
94
97
|
const wrapper = new VitestObjectionTransactionIsolator(api);
|
|
95
98
|
|
|
96
|
-
return wrapper.wrapVitestWithTransaction(
|
|
99
|
+
return wrapper.wrapVitestWithTransaction(conn, setup, level);
|
|
97
100
|
}
|