@geekmidas/testkit 0.0.13 → 0.0.15

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.
Files changed (60) hide show
  1. package/dist/{KyselyFactory-BrWADI77.d.mts → KyselyFactory-72P98y5I.d.mts} +1 -1
  2. package/dist/{KyselyFactory-DM2dnUXU.d.cts → KyselyFactory-DLBrYWxU.d.cts} +1 -1
  3. package/dist/KyselyFactory.d.cts +1 -1
  4. package/dist/KyselyFactory.d.mts +1 -1
  5. package/dist/{VitestKyselyTransactionIsolator-BKGT9nEG.mjs → VitestKyselyTransactionIsolator-BxjlD1YM.mjs} +2 -1
  6. package/dist/{VitestKyselyTransactionIsolator-ClCazkBO.d.mts → VitestKyselyTransactionIsolator-CnxpE9cH.d.mts} +2 -1
  7. package/dist/{VitestKyselyTransactionIsolator-CIlpIO78.cjs → VitestKyselyTransactionIsolator-Cst3vFjb.cjs} +2 -1
  8. package/dist/{VitestKyselyTransactionIsolator-UE1J-UoP.d.cts → VitestKyselyTransactionIsolator-DYUYVEh9.d.cts} +2 -1
  9. package/dist/VitestKyselyTransactionIsolator.cjs +2 -2
  10. package/dist/VitestKyselyTransactionIsolator.d.cts +2 -2
  11. package/dist/VitestKyselyTransactionIsolator.d.mts +2 -2
  12. package/dist/VitestKyselyTransactionIsolator.mjs +2 -2
  13. package/dist/{VitestObjectionTransactionIsolator-BPoLUFop.mjs → VitestObjectionTransactionIsolator-BU-jXEhz.mjs} +4 -3
  14. package/dist/{VitestObjectionTransactionIsolator-CO2nTi9r.d.cts → VitestObjectionTransactionIsolator-CJ4ds5Qv.d.cts} +3 -2
  15. package/dist/{VitestObjectionTransactionIsolator-D264iuPy.d.mts → VitestObjectionTransactionIsolator-DIM79dCq.d.mts} +3 -2
  16. package/dist/{VitestObjectionTransactionIsolator-DyqLp_in.cjs → VitestObjectionTransactionIsolator-DzeF4UAq.cjs} +4 -3
  17. package/dist/VitestObjectionTransactionIsolator.cjs +2 -2
  18. package/dist/VitestObjectionTransactionIsolator.d.cts +2 -2
  19. package/dist/VitestObjectionTransactionIsolator.d.mts +2 -2
  20. package/dist/VitestObjectionTransactionIsolator.mjs +2 -2
  21. package/dist/{VitestTransactionIsolator-CruLTRRi.cjs → VitestTransactionIsolator-BQ5FpLtC.cjs} +5 -2
  22. package/dist/{VitestTransactionIsolator-BWwK-ca6.mjs → VitestTransactionIsolator-CskiiJbW.mjs} +5 -2
  23. package/dist/{VitestTransactionIsolator-DHf2MxmC.d.cts → VitestTransactionIsolator-DdLNODZg.d.cts} +8 -5
  24. package/dist/{VitestTransactionIsolator-Xqyjlmw6.d.mts → VitestTransactionIsolator-zdyiS_SY.d.mts} +8 -5
  25. package/dist/VitestTransactionIsolator.cjs +1 -1
  26. package/dist/VitestTransactionIsolator.d.cts +2 -2
  27. package/dist/VitestTransactionIsolator.d.mts +2 -2
  28. package/dist/VitestTransactionIsolator.mjs +1 -1
  29. package/dist/__tests__/KyselyFactory.spec.cjs +4 -4
  30. package/dist/__tests__/KyselyFactory.spec.mjs +4 -4
  31. package/dist/__tests__/ObjectionFactory.spec.cjs +4 -4
  32. package/dist/__tests__/ObjectionFactory.spec.mjs +4 -4
  33. package/dist/__tests__/VitestObjectionTransactionIsolator.spec.cjs +4 -5
  34. package/dist/__tests__/VitestObjectionTransactionIsolator.spec.mjs +4 -5
  35. package/dist/__tests__/integration.spec.cjs +4 -4
  36. package/dist/__tests__/integration.spec.mjs +4 -4
  37. package/dist/{kysely-Cx_1pZYc.mjs → kysely-C3h7kitU.mjs} +4 -4
  38. package/dist/{kysely-CBfCXxUn.cjs → kysely-VU3MwvMD.cjs} +4 -4
  39. package/dist/kysely.cjs +3 -3
  40. package/dist/kysely.d.cts +4 -4
  41. package/dist/kysely.d.mts +4 -4
  42. package/dist/kysely.mjs +3 -3
  43. package/dist/{objection-lsMgM5gP.mjs → objection-BI7F86qf.mjs} +5 -5
  44. package/dist/{objection-CCD8fMLj.cjs → objection-BpLv_ZfC.cjs} +5 -5
  45. package/dist/objection.cjs +3 -3
  46. package/dist/objection.d.cts +4 -4
  47. package/dist/objection.d.mts +4 -4
  48. package/dist/objection.mjs +3 -3
  49. package/package.json +3 -3
  50. package/src/KyselyFactory.ts +1 -1
  51. package/src/ObjectionFactory.ts +12 -9
  52. package/src/VitestKyselyTransactionIsolator.ts +3 -0
  53. package/src/VitestObjectionTransactionIsolator.ts +3 -2
  54. package/src/VitestTransactionIsolator.ts +11 -8
  55. package/src/__tests__/KyselyFactory.spec.ts +1 -1
  56. package/src/__tests__/ObjectionFactory.spec.ts +1 -1
  57. package/src/__tests__/VitestObjectionTransactionIsolator.spec.ts +1 -2
  58. package/src/__tests__/integration.spec.ts +1 -1
  59. package/src/kysely.ts +6 -3
  60. 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.
@@ -1,4 +1,4 @@
1
1
  import "./faker-BSH1EMtg.cjs";
2
2
  import "./Factory-pNV7ZQ7-.cjs";
3
- import { KyselyFactory } from "./KyselyFactory-DM2dnUXU.cjs";
3
+ import { KyselyFactory } from "./KyselyFactory-DLBrYWxU.cjs";
4
4
  export { KyselyFactory };
@@ -1,4 +1,4 @@
1
1
  import "./faker-C-Iuk_R1.mjs";
2
2
  import "./Factory-D7P3bKKb.mjs";
3
- import { KyselyFactory } from "./KyselyFactory-BrWADI77.mjs";
3
+ import { KyselyFactory } from "./KyselyFactory-72P98y5I.mjs";
4
4
  export { KyselyFactory };
@@ -1,4 +1,4 @@
1
- import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-BWwK-ca6.mjs";
1
+ import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-CskiiJbW.mjs";
2
2
 
3
3
  //#region src/VitestKyselyTransactionIsolator.ts
4
4
  /**
@@ -39,6 +39,7 @@ import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-B
39
39
  * ```
40
40
  */
41
41
  var VitestKyselyTransactionIsolator = class extends VitestPostgresTransactionIsolator {
42
+ async destroy(conn) {}
42
43
  /**
43
44
  * Creates a Kysely transaction with the specified isolation level.
44
45
  * Implements the abstract transact method from VitestPostgresTransactionIsolator.
@@ -1,4 +1,4 @@
1
- import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-Xqyjlmw6.mjs";
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
- const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-CruLTRRi.cjs');
1
+ const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
2
2
 
3
3
  //#region src/VitestKyselyTransactionIsolator.ts
4
4
  /**
@@ -39,6 +39,7 @@ const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-C
39
39
  * ```
40
40
  */
41
41
  var VitestKyselyTransactionIsolator = class extends require_VitestTransactionIsolator.VitestPostgresTransactionIsolator {
42
+ async destroy(conn) {}
42
43
  /**
43
44
  * Creates a Kysely transaction with the specified isolation level.
44
45
  * Implements the abstract transact method from VitestPostgresTransactionIsolator.
@@ -1,4 +1,4 @@
1
- import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-DHf2MxmC.cjs";
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
- require('./VitestTransactionIsolator-CruLTRRi.cjs');
2
- const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-CIlpIO78.cjs');
1
+ require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
2
+ const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-Cst3vFjb.cjs');
3
3
 
4
4
  exports.VitestKyselyTransactionIsolator = require_VitestKyselyTransactionIsolator.VitestKyselyTransactionIsolator;
@@ -1,3 +1,3 @@
1
- import "./VitestTransactionIsolator-DHf2MxmC.cjs";
2
- import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-UE1J-UoP.cjs";
1
+ import "./VitestTransactionIsolator-DdLNODZg.cjs";
2
+ import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-DYUYVEh9.cjs";
3
3
  export { VitestKyselyTransactionIsolator };
@@ -1,3 +1,3 @@
1
- import "./VitestTransactionIsolator-Xqyjlmw6.mjs";
2
- import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-ClCazkBO.mjs";
1
+ import "./VitestTransactionIsolator-zdyiS_SY.mjs";
2
+ import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-CnxpE9cH.mjs";
3
3
  export { VitestKyselyTransactionIsolator };
@@ -1,4 +1,4 @@
1
- import "./VitestTransactionIsolator-BWwK-ca6.mjs";
2
- import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-BKGT9nEG.mjs";
1
+ import "./VitestTransactionIsolator-CskiiJbW.mjs";
2
+ import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-BxjlD1YM.mjs";
3
3
 
4
4
  export { VitestKyselyTransactionIsolator };
@@ -1,4 +1,4 @@
1
- import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-BWwK-ca6.mjs";
1
+ import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-CskiiJbW.mjs";
2
2
 
3
3
  //#region src/VitestObjectionTransactionIsolator.ts
4
4
  /**
@@ -30,6 +30,7 @@ import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-B
30
30
  * ```
31
31
  */
32
32
  var VitestObjectionTransactionIsolator = class extends VitestPostgresTransactionIsolator {
33
+ async destroy(conn) {}
33
34
  /**
34
35
  * Creates a Knex transaction with the specified isolation level.
35
36
  * Implements the abstract transact method from VitestPostgresTransactionIsolator.
@@ -49,9 +50,9 @@ var VitestObjectionTransactionIsolator = class extends VitestPostgresTransaction
49
50
  * });
50
51
  * ```
51
52
  */
52
- async transact(conn, level, fn) {
53
+ async transact(connection, level, fn) {
53
54
  const isolationLevel = level.toLowerCase();
54
- await conn.transaction(async (trx) => {
55
+ await connection.transaction(async (trx) => {
55
56
  await fn(trx);
56
57
  }, { isolationLevel });
57
58
  }
@@ -1,4 +1,4 @@
1
- import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-DHf2MxmC.cjs";
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(conn: Knex, level: IsolationLevel, fn: (trx: Knex.Transaction) => Promise<void>): Promise<void>;
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-Xqyjlmw6.mjs";
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(conn: Knex, level: IsolationLevel, fn: (trx: Knex.Transaction) => Promise<void>): Promise<void>;
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
- const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-CruLTRRi.cjs');
1
+ const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
2
2
 
3
3
  //#region src/VitestObjectionTransactionIsolator.ts
4
4
  /**
@@ -30,6 +30,7 @@ const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-C
30
30
  * ```
31
31
  */
32
32
  var VitestObjectionTransactionIsolator = class extends require_VitestTransactionIsolator.VitestPostgresTransactionIsolator {
33
+ async destroy(conn) {}
33
34
  /**
34
35
  * Creates a Knex transaction with the specified isolation level.
35
36
  * Implements the abstract transact method from VitestPostgresTransactionIsolator.
@@ -49,9 +50,9 @@ var VitestObjectionTransactionIsolator = class extends require_VitestTransaction
49
50
  * });
50
51
  * ```
51
52
  */
52
- async transact(conn, level, fn) {
53
+ async transact(connection, level, fn) {
53
54
  const isolationLevel = level.toLowerCase();
54
- await conn.transaction(async (trx) => {
55
+ await connection.transaction(async (trx) => {
55
56
  await fn(trx);
56
57
  }, { isolationLevel });
57
58
  }
@@ -1,4 +1,4 @@
1
- require('./VitestTransactionIsolator-CruLTRRi.cjs');
2
- const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTransactionIsolator-DyqLp_in.cjs');
1
+ require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
2
+ const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTransactionIsolator-DzeF4UAq.cjs');
3
3
 
4
4
  exports.VitestObjectionTransactionIsolator = require_VitestObjectionTransactionIsolator.VitestObjectionTransactionIsolator;
@@ -1,3 +1,3 @@
1
- import "./VitestTransactionIsolator-DHf2MxmC.cjs";
2
- import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-CO2nTi9r.cjs";
1
+ import "./VitestTransactionIsolator-DdLNODZg.cjs";
2
+ import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-CJ4ds5Qv.cjs";
3
3
  export { VitestObjectionTransactionIsolator };
@@ -1,3 +1,3 @@
1
- import "./VitestTransactionIsolator-Xqyjlmw6.mjs";
2
- import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-D264iuPy.mjs";
1
+ import "./VitestTransactionIsolator-zdyiS_SY.mjs";
2
+ import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-DIM79dCq.mjs";
3
3
  export { VitestObjectionTransactionIsolator };
@@ -1,4 +1,4 @@
1
- import "./VitestTransactionIsolator-BWwK-ca6.mjs";
2
- import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-BPoLUFop.mjs";
1
+ import "./VitestTransactionIsolator-CskiiJbW.mjs";
2
+ import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-BU-jXEhz.mjs";
3
3
 
4
4
  export { VitestObjectionTransactionIsolator };
@@ -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 Connection - The database connection type
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(conn, setup, level = IsolationLevel.REPEATABLE_READ) {
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
  }
@@ -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 Connection - The database connection type
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(conn, setup, level = IsolationLevel.REPEATABLE_READ) {
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
  }
@@ -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 Connection - The database connection type
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<Connection, Transaction> {
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: Connection, isolationLevel: IsolationLevel, fn: (trx: Transaction) => Promise<void>): Promise<void>;
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(conn: Connection, setup?: (trx: Transaction) => Promise<void>, level?: IsolationLevel): TestAPI<{
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 };
@@ -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 Connection - The database connection type
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<Connection, Transaction> {
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: Connection, isolationLevel: IsolationLevel, fn: (trx: Transaction) => Promise<void>): Promise<void>;
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(conn: Connection, setup?: (trx: Transaction) => Promise<void>, level?: IsolationLevel): TestAPI<{
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-CruLTRRi.cjs');
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-DHf2MxmC.cjs";
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-Xqyjlmw6.mjs";
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-BWwK-ca6.mjs";
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-CruLTRRi.cjs');
8
- require('../VitestKyselyTransactionIsolator-CIlpIO78.cjs');
7
+ require('../VitestTransactionIsolator-BQ5FpLtC.cjs');
8
+ require('../VitestKyselyTransactionIsolator-Cst3vFjb.cjs');
9
9
  const require_helpers = require('../helpers-nEUtQ7eo.cjs');
10
- const require_kysely = require('../kysely-CBfCXxUn.cjs');
10
+ const require_kysely = require('../kysely-VU3MwvMD.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-BWwK-ca6.mjs";
7
- import "../VitestKyselyTransactionIsolator-BKGT9nEG.mjs";
6
+ import "../VitestTransactionIsolator-CskiiJbW.mjs";
7
+ import "../VitestKyselyTransactionIsolator-BxjlD1YM.mjs";
8
8
  import { createKyselyDb } from "../helpers-BuPmgzyQ.mjs";
9
- import { wrapVitestKyselyTransaction } from "../kysely-Cx_1pZYc.mjs";
9
+ import { wrapVitestKyselyTransaction } from "../kysely-C3h7kitU.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-CruLTRRi.cjs');
8
- require('../VitestObjectionTransactionIsolator-DyqLp_in.cjs');
9
- const require_objection = require('../objection-CCD8fMLj.cjs');
7
+ require('../VitestTransactionIsolator-BQ5FpLtC.cjs');
8
+ require('../VitestObjectionTransactionIsolator-DzeF4UAq.cjs');
9
+ const require_objection = require('../objection-BpLv_ZfC.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(), require_helpers.createTestTablesKnex);
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-BWwK-ca6.mjs";
7
- import "../VitestObjectionTransactionIsolator-BPoLUFop.mjs";
8
- import { wrapVitestObjectionTransaction } from "../objection-lsMgM5gP.mjs";
6
+ import "../VitestTransactionIsolator-CskiiJbW.mjs";
7
+ import "../VitestObjectionTransactionIsolator-BU-jXEhz.mjs";
8
+ import { wrapVitestObjectionTransaction } from "../objection-BI7F86qf.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(), createTestTablesKnex);
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-CruLTRRi.cjs');
8
- require('../VitestObjectionTransactionIsolator-DyqLp_in.cjs');
9
- const require_objection = require('../objection-CCD8fMLj.cjs');
7
+ require('../VitestTransactionIsolator-BQ5FpLtC.cjs');
8
+ require('../VitestObjectionTransactionIsolator-DzeF4UAq.cjs');
9
+ const require_objection = require('../objection-BpLv_ZfC.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 knex = require_helpers.createKnexDb();
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-BWwK-ca6.mjs";
7
- import "../VitestObjectionTransactionIsolator-BPoLUFop.mjs";
8
- import { wrapVitestObjectionTransaction } from "../objection-lsMgM5gP.mjs";
6
+ import "../VitestTransactionIsolator-CskiiJbW.mjs";
7
+ import "../VitestObjectionTransactionIsolator-BU-jXEhz.mjs";
8
+ import { wrapVitestObjectionTransaction } from "../objection-BI7F86qf.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 knex = createKnexDb();
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-CruLTRRi.cjs');
8
- require('../VitestKyselyTransactionIsolator-CIlpIO78.cjs');
7
+ require('../VitestTransactionIsolator-BQ5FpLtC.cjs');
8
+ require('../VitestKyselyTransactionIsolator-Cst3vFjb.cjs');
9
9
  const require_helpers = require('../helpers-nEUtQ7eo.cjs');
10
- const require_kysely = require('../kysely-CBfCXxUn.cjs');
10
+ const require_kysely = require('../kysely-VU3MwvMD.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-BWwK-ca6.mjs";
7
- import "../VitestKyselyTransactionIsolator-BKGT9nEG.mjs";
6
+ import "../VitestTransactionIsolator-CskiiJbW.mjs";
7
+ import "../VitestKyselyTransactionIsolator-BxjlD1YM.mjs";
8
8
  import { createKyselyDb } from "../helpers-BuPmgzyQ.mjs";
9
- import { wrapVitestKyselyTransaction } from "../kysely-Cx_1pZYc.mjs";
9
+ import { wrapVitestKyselyTransaction } from "../kysely-C3h7kitU.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-BWwK-ca6.mjs";
2
- import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-BKGT9nEG.mjs";
1
+ import { IsolationLevel } from "./VitestTransactionIsolator-CskiiJbW.mjs";
2
+ import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-BxjlD1YM.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, db, setup, level = IsolationLevel.REPEATABLE_READ) {
61
+ function wrapVitestKyselyTransaction(api, connection, setup, level = IsolationLevel.REPEATABLE_READ) {
62
62
  const wrapper = new VitestKyselyTransactionIsolator(api);
63
- return wrapper.wrapVitestWithTransaction(db, setup, level);
63
+ return wrapper.wrapVitestWithTransaction(connection, setup, level);
64
64
  }
65
65
 
66
66
  //#endregion
@@ -1,5 +1,5 @@
1
- const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-CruLTRRi.cjs');
2
- const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-CIlpIO78.cjs');
1
+ const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
2
+ const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-Cst3vFjb.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, db, setup, level = require_VitestTransactionIsolator.IsolationLevel.REPEATABLE_READ) {
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(db, setup, level);
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-CruLTRRi.cjs');
7
- const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-CIlpIO78.cjs');
8
- const require_kysely = require('./kysely-CBfCXxUn.cjs');
6
+ const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
7
+ const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-Cst3vFjb.cjs');
8
+ const require_kysely = require('./kysely-VU3MwvMD.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-DM2dnUXU.cjs";
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-DHf2MxmC.cjs";
7
- import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-UE1J-UoP.cjs";
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, db: Kysely<Database>, setup?: (trx: Transaction<Database>) => Promise<void>, level?: IsolationLevel): 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-BrWADI77.mjs";
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-Xqyjlmw6.mjs";
7
- import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-ClCazkBO.mjs";
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, db: Kysely<Database>, setup?: (trx: Transaction<Database>) => Promise<void>, level?: IsolationLevel): 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-BWwK-ca6.mjs";
7
- import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-BKGT9nEG.mjs";
8
- import { wrapVitestKyselyTransaction } from "./kysely-Cx_1pZYc.mjs";
6
+ import { IsolationLevel } from "./VitestTransactionIsolator-CskiiJbW.mjs";
7
+ import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-BxjlD1YM.mjs";
8
+ import { wrapVitestKyselyTransaction } from "./kysely-C3h7kitU.mjs";
9
9
 
10
10
  export { IsolationLevel, KyselyFactory, PostgresKyselyMigrator, VitestKyselyTransactionIsolator, wrapVitestKyselyTransaction };
@@ -1,5 +1,5 @@
1
- import { IsolationLevel } from "./VitestTransactionIsolator-BWwK-ca6.mjs";
2
- import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-BPoLUFop.mjs";
1
+ import { IsolationLevel } from "./VitestTransactionIsolator-CskiiJbW.mjs";
2
+ import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-BU-jXEhz.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 knex - The Knex database connection instance
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, knex, setup, level = IsolationLevel.REPEATABLE_READ) {
76
+ function wrapVitestObjectionTransaction(api, conn, setup, level = IsolationLevel.REPEATABLE_READ) {
77
77
  const wrapper = new VitestObjectionTransactionIsolator(api);
78
- return wrapper.wrapVitestWithTransaction(knex, setup, level);
78
+ return wrapper.wrapVitestWithTransaction(conn, setup, level);
79
79
  }
80
80
 
81
81
  //#endregion
@@ -1,5 +1,5 @@
1
- const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-CruLTRRi.cjs');
2
- const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTransactionIsolator-DyqLp_in.cjs');
1
+ const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
2
+ const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTransactionIsolator-DzeF4UAq.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 knex - The Knex database connection instance
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, knex, setup, level = require_VitestTransactionIsolator.IsolationLevel.REPEATABLE_READ) {
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(knex, setup, level);
78
+ return wrapper.wrapVitestWithTransaction(conn, setup, level);
79
79
  }
80
80
 
81
81
  //#endregion
@@ -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-CruLTRRi.cjs');
7
- const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTransactionIsolator-DyqLp_in.cjs');
8
- const require_objection = require('./objection-CCD8fMLj.cjs');
6
+ const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
7
+ const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTransactionIsolator-DzeF4UAq.cjs');
8
+ const require_objection = require('./objection-BpLv_ZfC.cjs');
9
9
 
10
10
  exports.IsolationLevel = require_VitestTransactionIsolator.IsolationLevel;
11
11
  exports.ObjectionFactory = require_ObjectionFactory.ObjectionFactory;
@@ -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-DHf2MxmC.cjs";
7
- import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-CO2nTi9r.cjs";
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 knex - The Knex database connection instance
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, knex: Knex, setup?: (trx: Knex.Transaction) => Promise<void>, level?: IsolationLevel): 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
@@ -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-Xqyjlmw6.mjs";
7
- import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-D264iuPy.mjs";
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 knex - The Knex database connection instance
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, knex: Knex, setup?: (trx: Knex.Transaction) => Promise<void>, level?: IsolationLevel): 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
@@ -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-BWwK-ca6.mjs";
7
- import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-BPoLUFop.mjs";
8
- import { wrapVitestObjectionTransaction } from "./objection-lsMgM5gP.mjs";
6
+ import { IsolationLevel } from "./VitestTransactionIsolator-CskiiJbW.mjs";
7
+ import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-BU-jXEhz.mjs";
8
+ import { wrapVitestObjectionTransaction } from "./objection-BI7F86qf.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.13",
3
+ "version": "0.0.15",
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
  },
@@ -37,6 +37,6 @@
37
37
  "objection": "~3.1.5",
38
38
  "db-errors": "~0.2.3",
39
39
  "vitest": "~3.2.4",
40
- "@geekmidas/envkit": "0.0.6"
40
+ "@geekmidas/envkit": "0.0.7"
41
41
  }
42
42
  }
@@ -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,
@@ -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((acc, [key, value]) => {
313
- if (value !== undefined && key !== 'id') {
314
- acc[key] = value;
315
- }
316
- return acc;
317
- }, {} as any);
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
+ async 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,7 @@ export class VitestObjectionTransactionIsolator extends VitestPostgresTransactio
36
36
  Knex,
37
37
  Knex.Transaction
38
38
  > {
39
+ async destroy(conn: Knex<any, any[]>): Promise<void> {}
39
40
  /**
40
41
  * Creates a Knex transaction with the specified isolation level.
41
42
  * Implements the abstract transact method from VitestPostgresTransactionIsolator.
@@ -56,13 +57,13 @@ export class VitestObjectionTransactionIsolator extends VitestPostgresTransactio
56
57
  * ```
57
58
  */
58
59
  async transact(
59
- conn: Knex,
60
+ connection: Knex,
60
61
  level: IsolationLevel,
61
62
  fn: (trx: Knex.Transaction) => Promise<void>,
62
63
  ): Promise<void> {
63
64
  const isolationLevel = level.toLowerCase() as Lowercase<IsolationLevel>;
64
65
 
65
- await conn.transaction(
66
+ await connection.transaction(
66
67
  async (trx) => {
67
68
  await fn(trx);
68
69
  },
@@ -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 Connection - The database connection type
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: Connection,
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
- conn: Connection,
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,
@@ -39,7 +39,7 @@ class Comment extends Model {
39
39
 
40
40
  const it = wrapVitestObjectionTransaction(
41
41
  test,
42
- createKnexDb(),
42
+ createKnexDb,
43
43
  createTestTablesKnex,
44
44
  );
45
45
  describe('ObjectionFactory', () => {
@@ -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, knex, async (trx) => {
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 { IsolationLevel } from './VitestTransactionIsolator';
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
- db: Kysely<Database>,
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(db, setup, level);
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 { IsolationLevel } from './VitestTransactionIsolator';
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 knex - The Knex database connection instance
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
- knex: Knex,
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(knex, setup, level);
99
+ return wrapper.wrapVitestWithTransaction(conn, setup, level);
97
100
  }