@geekmidas/testkit 0.0.12 → 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.
Files changed (99) hide show
  1. package/README.md +1 -1
  2. package/dist/{Factory-Bm44VKa-.d.cts → Factory-D7P3bKKb.d.mts} +2 -2
  3. package/dist/{Factory-tjCDNgUK.d.mts → Factory-pNV7ZQ7-.d.cts} +2 -2
  4. package/dist/Factory.d.cts +2 -2
  5. package/dist/Factory.d.mts +2 -2
  6. package/dist/{KyselyFactory-BoPDDitt.d.cts → KyselyFactory-72P98y5I.d.mts} +3 -3
  7. package/dist/{KyselyFactory-C3Bc3p4L.mjs → KyselyFactory-BcYkC0t2.mjs} +1 -1
  8. package/dist/{KyselyFactory-CXtfmMfK.cjs → KyselyFactory-Cf0o2YxO.cjs} +1 -1
  9. package/dist/{KyselyFactory-D82j74t9.d.mts → KyselyFactory-DLBrYWxU.d.cts} +3 -3
  10. package/dist/KyselyFactory.cjs +1 -1
  11. package/dist/KyselyFactory.d.cts +3 -3
  12. package/dist/KyselyFactory.d.mts +3 -3
  13. package/dist/KyselyFactory.mjs +1 -1
  14. package/dist/{ObjectionFactory-qIICOph3.mjs → ObjectionFactory-8hebmnai.mjs} +20 -4
  15. package/dist/{ObjectionFactory-BWMTXsxH.d.cts → ObjectionFactory-B40NQWSe.d.mts} +2 -2
  16. package/dist/{ObjectionFactory-DxIxJagq.cjs → ObjectionFactory-CDriunkS.cjs} +20 -4
  17. package/dist/{ObjectionFactory-CEG5qUrm.d.mts → ObjectionFactory-D3l1VuyX.d.cts} +2 -2
  18. package/dist/ObjectionFactory.cjs +1 -1
  19. package/dist/ObjectionFactory.d.cts +3 -3
  20. package/dist/ObjectionFactory.d.mts +3 -3
  21. package/dist/ObjectionFactory.mjs +1 -1
  22. package/dist/{VitestKyselyTransactionIsolator-ClCazkBO.d.mts → VitestKyselyTransactionIsolator-CnxpE9cH.d.mts} +2 -1
  23. package/dist/{VitestKyselyTransactionIsolator-UE1J-UoP.d.cts → VitestKyselyTransactionIsolator-DYUYVEh9.d.cts} +2 -1
  24. package/dist/{VitestKyselyTransactionIsolator-BKGT9nEG.mjs → VitestKyselyTransactionIsolator-Dq4Oeh-Y.mjs} +4 -1
  25. package/dist/{VitestKyselyTransactionIsolator-CIlpIO78.cjs → VitestKyselyTransactionIsolator-Dqy3qNoJ.cjs} +4 -1
  26. package/dist/VitestKyselyTransactionIsolator.cjs +2 -2
  27. package/dist/VitestKyselyTransactionIsolator.d.cts +2 -2
  28. package/dist/VitestKyselyTransactionIsolator.d.mts +2 -2
  29. package/dist/VitestKyselyTransactionIsolator.mjs +2 -2
  30. package/dist/{VitestObjectionTransactionIsolator-CO2nTi9r.d.cts → VitestObjectionTransactionIsolator-CJ4ds5Qv.d.cts} +3 -2
  31. package/dist/{VitestObjectionTransactionIsolator-D264iuPy.d.mts → VitestObjectionTransactionIsolator-DIM79dCq.d.mts} +3 -2
  32. package/dist/{VitestObjectionTransactionIsolator-BPoLUFop.mjs → VitestObjectionTransactionIsolator-DVtJG2F3.mjs} +6 -3
  33. package/dist/{VitestObjectionTransactionIsolator-DyqLp_in.cjs → VitestObjectionTransactionIsolator-LP4B0cqW.cjs} +6 -3
  34. package/dist/VitestObjectionTransactionIsolator.cjs +2 -2
  35. package/dist/VitestObjectionTransactionIsolator.d.cts +2 -2
  36. package/dist/VitestObjectionTransactionIsolator.d.mts +2 -2
  37. package/dist/VitestObjectionTransactionIsolator.mjs +2 -2
  38. package/dist/{VitestTransactionIsolator-CruLTRRi.cjs → VitestTransactionIsolator-BQ5FpLtC.cjs} +5 -2
  39. package/dist/{VitestTransactionIsolator-BWwK-ca6.mjs → VitestTransactionIsolator-CskiiJbW.mjs} +5 -2
  40. package/dist/{VitestTransactionIsolator-DHf2MxmC.d.cts → VitestTransactionIsolator-DdLNODZg.d.cts} +8 -5
  41. package/dist/{VitestTransactionIsolator-Xqyjlmw6.d.mts → VitestTransactionIsolator-zdyiS_SY.d.mts} +8 -5
  42. package/dist/VitestTransactionIsolator.cjs +1 -1
  43. package/dist/VitestTransactionIsolator.d.cts +2 -2
  44. package/dist/VitestTransactionIsolator.d.mts +2 -2
  45. package/dist/VitestTransactionIsolator.mjs +1 -1
  46. package/dist/__tests__/KyselyFactory.spec.cjs +6 -6
  47. package/dist/__tests__/KyselyFactory.spec.mjs +6 -6
  48. package/dist/__tests__/ObjectionFactory.spec.cjs +288 -450
  49. package/dist/__tests__/ObjectionFactory.spec.mjs +289 -451
  50. package/dist/__tests__/PostgresKyselyMigrator.spec.cjs +397 -0
  51. package/dist/__tests__/PostgresKyselyMigrator.spec.d.cts +1 -0
  52. package/dist/__tests__/PostgresKyselyMigrator.spec.d.mts +1 -0
  53. package/dist/__tests__/PostgresKyselyMigrator.spec.mjs +396 -0
  54. package/dist/__tests__/PostgresMigrator.spec.cjs +1 -1
  55. package/dist/__tests__/PostgresMigrator.spec.mjs +1 -1
  56. package/dist/__tests__/PostgresObjectionMigrator.spec.cjs +1 -1
  57. package/dist/__tests__/PostgresObjectionMigrator.spec.mjs +1 -1
  58. package/dist/__tests__/VitestObjectionTransactionIsolator.spec.cjs +7 -16
  59. package/dist/__tests__/VitestObjectionTransactionIsolator.spec.mjs +7 -16
  60. package/dist/__tests__/integration.spec.cjs +6 -6
  61. package/dist/__tests__/integration.spec.mjs +6 -6
  62. package/dist/{faker-km9UhOS6.d.cts → faker-BSH1EMtg.d.cts} +2 -2
  63. package/dist/{faker-ChuHaYMR.d.mts → faker-C-Iuk_R1.d.mts} +2 -2
  64. package/dist/faker.d.cts +1 -1
  65. package/dist/faker.d.mts +1 -1
  66. package/dist/{helpers-BEmjyUVE.mjs → helpers-B4TXg3Wp.mjs} +11 -36
  67. package/dist/{helpers-CNMBePuj.cjs → helpers-Bf0nXhbu.cjs} +10 -41
  68. package/dist/{kysely-Cx_1pZYc.mjs → kysely-BsDbvw3r.mjs} +4 -4
  69. package/dist/{kysely-CBfCXxUn.cjs → kysely-CP1iJMvq.cjs} +4 -4
  70. package/dist/kysely.cjs +4 -4
  71. package/dist/kysely.d.cts +6 -6
  72. package/dist/kysely.d.mts +6 -6
  73. package/dist/kysely.mjs +4 -4
  74. package/dist/{objection-lsMgM5gP.mjs → objection-BEPk9h-g.mjs} +5 -5
  75. package/dist/{objection-CCD8fMLj.cjs → objection-Di7JSist.cjs} +5 -5
  76. package/dist/objection.cjs +4 -4
  77. package/dist/objection.d.cts +7 -7
  78. package/dist/objection.d.mts +7 -7
  79. package/dist/objection.mjs +4 -4
  80. package/package.json +3 -3
  81. package/src/Factory.ts +4 -1
  82. package/src/KyselyFactory.ts +6 -2
  83. package/src/ObjectionFactory.ts +34 -4
  84. package/src/VitestKyselyTransactionIsolator.ts +3 -0
  85. package/src/VitestObjectionTransactionIsolator.ts +5 -2
  86. package/src/VitestTransactionIsolator.ts +11 -8
  87. package/src/__tests__/KyselyFactory.spec.ts +1 -1
  88. package/src/__tests__/ObjectionFactory.spec.ts +423 -542
  89. package/src/__tests__/PostgresKyselyMigrator.spec.ts +690 -0
  90. package/src/__tests__/VitestObjectionTransactionIsolator.spec.ts +1 -10
  91. package/src/__tests__/integration.spec.ts +1 -1
  92. package/src/kysely.ts +6 -3
  93. package/src/objection.ts +7 -4
  94. package/test/helpers.ts +13 -21
  95. package/dist/example.cjs +0 -22
  96. package/dist/example.d.cts +0 -26
  97. package/dist/example.d.mts +0 -26
  98. package/dist/example.mjs +0 -22
  99. package/src/example.ts +0 -45
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  > Type-safe testing utilities and database factories for modern TypeScript applications
4
4
 
5
5
  [![Node Version](https://img.shields.io/badge/node-%3E%3D22.0.0-brightgreen)](https://nodejs.org)
6
- [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue)](https://www.typescriptlang.org)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.8.2-blue)](https://www.typescriptlang.org)
7
7
  [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
8
8
 
9
9
  ## 🚀 Overview
@@ -1,4 +1,4 @@
1
- import { FakerFactory } from "./faker-km9UhOS6.cjs";
1
+ import { FakerFactory } from "./faker-C-Iuk_R1.mjs";
2
2
 
3
3
  //#region src/Factory.d.ts
4
4
 
@@ -59,7 +59,7 @@ declare abstract class Factory<Builders extends Record<string, any>, Seeds exten
59
59
  * @param builderName - The name of the builder to use
60
60
  * @param attrs - The attributes to insert
61
61
  */
62
- abstract insertMany<K extends keyof Builders>(count: number, builderName: K, attrs?: Parameters<Builders[K]>[0] | ((idx: number, faker: FakerFactory) => Parameters<Builders[K]>[0])): Promise<Awaited<ReturnType<Builders[K]>>[]>;
62
+ abstract insertMany<K extends keyof Builders>(count: number, builderName: K, attrs?: Parameters<Builders[K]>[0] | ((idx: number, faker: FakerFactory) => Promise<Parameters<Builders[K]>[0]>)): Promise<Awaited<ReturnType<Builders[K]>>[]>;
63
63
  /**
64
64
  * Seeds the database using a seed function.
65
65
  *
@@ -1,4 +1,4 @@
1
- import { FakerFactory } from "./faker-ChuHaYMR.mjs";
1
+ import { FakerFactory } from "./faker-BSH1EMtg.cjs";
2
2
 
3
3
  //#region src/Factory.d.ts
4
4
 
@@ -59,7 +59,7 @@ declare abstract class Factory<Builders extends Record<string, any>, Seeds exten
59
59
  * @param builderName - The name of the builder to use
60
60
  * @param attrs - The attributes to insert
61
61
  */
62
- abstract insertMany<K extends keyof Builders>(count: number, builderName: K, attrs?: Parameters<Builders[K]>[0] | ((idx: number, faker: FakerFactory) => Parameters<Builders[K]>[0])): Promise<Awaited<ReturnType<Builders[K]>>[]>;
62
+ abstract insertMany<K extends keyof Builders>(count: number, builderName: K, attrs?: Parameters<Builders[K]>[0] | ((idx: number, faker: FakerFactory) => Promise<Parameters<Builders[K]>[0]>)): Promise<Awaited<ReturnType<Builders[K]>>[]>;
63
63
  /**
64
64
  * Seeds the database using a seed function.
65
65
  *
@@ -1,3 +1,3 @@
1
- import "./faker-km9UhOS6.cjs";
2
- import { Factory, FactorySeed, MixedFactoryBuilder } from "./Factory-Bm44VKa-.cjs";
1
+ import "./faker-BSH1EMtg.cjs";
2
+ import { Factory, FactorySeed, MixedFactoryBuilder } from "./Factory-pNV7ZQ7-.cjs";
3
3
  export { Factory, FactorySeed, MixedFactoryBuilder };
@@ -1,3 +1,3 @@
1
- import "./faker-ChuHaYMR.mjs";
2
- import { Factory, FactorySeed, MixedFactoryBuilder } from "./Factory-tjCDNgUK.mjs";
1
+ import "./faker-C-Iuk_R1.mjs";
2
+ import { Factory, FactorySeed, MixedFactoryBuilder } from "./Factory-D7P3bKKb.mjs";
3
3
  export { Factory, FactorySeed, MixedFactoryBuilder };
@@ -1,5 +1,5 @@
1
- import { FakerFactory } from "./faker-km9UhOS6.cjs";
2
- import { Factory, FactorySeed } from "./Factory-Bm44VKa-.cjs";
1
+ import { FakerFactory } from "./faker-C-Iuk_R1.mjs";
2
+ import { Factory, FactorySeed } from "./Factory-D7P3bKKb.mjs";
3
3
  import { ControlledTransaction, Insertable, Kysely, Selectable } from "kysely";
4
4
 
5
5
  //#region src/KyselyFactory.d.ts
@@ -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) => 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.
@@ -166,7 +166,7 @@ var KyselyFactory = class extends Factory {
166
166
  if (!(builderName in this.builders)) throw new Error(`Builder "${builderName}" is not registered in this factory. Make sure it is correct and registered in src/test/setup.ts`);
167
167
  const promises = [];
168
168
  for (let i = 0; i < count; i++) {
169
- const newAttrs = typeof attrs === "function" ? attrs(i, faker) : attrs;
169
+ const newAttrs = typeof attrs === "function" ? await attrs(i, faker) : attrs;
170
170
  promises.push(this.insert(builderName, newAttrs));
171
171
  }
172
172
  return Promise.all(promises);
@@ -166,7 +166,7 @@ var KyselyFactory = class extends require_Factory.Factory {
166
166
  if (!(builderName in this.builders)) throw new Error(`Builder "${builderName}" is not registered in this factory. Make sure it is correct and registered in src/test/setup.ts`);
167
167
  const promises = [];
168
168
  for (let i = 0; i < count; i++) {
169
- const newAttrs = typeof attrs === "function" ? attrs(i, require_faker.faker) : attrs;
169
+ const newAttrs = typeof attrs === "function" ? await attrs(i, require_faker.faker) : attrs;
170
170
  promises.push(this.insert(builderName, newAttrs));
171
171
  }
172
172
  return Promise.all(promises);
@@ -1,5 +1,5 @@
1
- import { FakerFactory } from "./faker-ChuHaYMR.mjs";
2
- import { Factory, FactorySeed } from "./Factory-tjCDNgUK.mjs";
1
+ import { FakerFactory } from "./faker-BSH1EMtg.cjs";
2
+ import { Factory, FactorySeed } from "./Factory-pNV7ZQ7-.cjs";
3
3
  import { ControlledTransaction, Insertable, Kysely, Selectable } from "kysely";
4
4
 
5
5
  //#region src/KyselyFactory.d.ts
@@ -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) => 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,5 +1,5 @@
1
1
  require('./Factory-WMhTNZ9S.cjs');
2
2
  require('./faker-B14IEMIN.cjs');
3
- const require_KyselyFactory = require('./KyselyFactory-CXtfmMfK.cjs');
3
+ const require_KyselyFactory = require('./KyselyFactory-Cf0o2YxO.cjs');
4
4
 
5
5
  exports.KyselyFactory = require_KyselyFactory.KyselyFactory;
@@ -1,4 +1,4 @@
1
- import "./faker-km9UhOS6.cjs";
2
- import "./Factory-Bm44VKa-.cjs";
3
- import { KyselyFactory } from "./KyselyFactory-BoPDDitt.cjs";
1
+ import "./faker-BSH1EMtg.cjs";
2
+ import "./Factory-pNV7ZQ7-.cjs";
3
+ import { KyselyFactory } from "./KyselyFactory-DLBrYWxU.cjs";
4
4
  export { KyselyFactory };
@@ -1,4 +1,4 @@
1
- import "./faker-ChuHaYMR.mjs";
2
- import "./Factory-tjCDNgUK.mjs";
3
- import { KyselyFactory } from "./KyselyFactory-D82j74t9.mjs";
1
+ import "./faker-C-Iuk_R1.mjs";
2
+ import "./Factory-D7P3bKKb.mjs";
3
+ import { KyselyFactory } from "./KyselyFactory-72P98y5I.mjs";
4
4
  export { KyselyFactory };
@@ -1,5 +1,5 @@
1
1
  import "./Factory-z2m01hMj.mjs";
2
2
  import "./faker-BGKYFoCT.mjs";
3
- import { KyselyFactory } from "./KyselyFactory-C3Bc3p4L.mjs";
3
+ import { KyselyFactory } from "./KyselyFactory-BcYkC0t2.mjs";
4
4
 
5
5
  export { KyselyFactory };
@@ -110,7 +110,11 @@ var ObjectionFactory = class extends Factory {
110
110
  }
111
111
  const model = ModelClass.fromJson(data);
112
112
  if (autoInsert !== false) {
113
- const result = await model.$query(db).insertGraph(model).execute();
113
+ const insertData = Object.entries(model).reduce((acc, [key, value]) => {
114
+ if (value !== void 0 && key !== "id") acc[key] = value;
115
+ return acc;
116
+ }, {});
117
+ const result = await ModelClass.query(db).insert(insertData);
114
118
  return result;
115
119
  } else return model;
116
120
  };
@@ -162,16 +166,28 @@ var ObjectionFactory = class extends Factory {
162
166
  async insert(builderName, attrs) {
163
167
  if (!(builderName in this.builders)) throw new Error(`Factory "${builderName}" does not exist. Make sure it is correct and registered in src/test/setup.ts`);
164
168
  const result = await this.builders[builderName](attrs || {}, this, this.db, faker);
165
- if (result && typeof result.$query === "function") return await result.$query(this.db).insertGraph(result).execute();
169
+ if (result && typeof result.$query === "function") {
170
+ const insertData = Object.entries(result).reduce((acc, [key, value]) => {
171
+ if (value !== void 0 && key !== "id") acc[key] = value;
172
+ return acc;
173
+ }, {});
174
+ return await result.constructor.query(this.db).insert(insertData);
175
+ }
166
176
  return result;
167
177
  }
168
178
  async insertMany(count, builderName, attrs) {
169
179
  if (!(builderName in this.builders)) throw new Error(`Builder "${builderName}" is not registered in this factory. Make sure it is correct and registered in src/test/setup.ts`);
170
180
  const records = [];
171
181
  for (let i = 0; i < count; i++) {
172
- const newAttrs = typeof attrs === "function" ? attrs(i, faker) : attrs;
182
+ const newAttrs = typeof attrs === "function" ? await attrs(i, faker) : attrs;
173
183
  records.push(this.builders[builderName](newAttrs, this, this.db, faker).then((record) => {
174
- if (record && typeof record.$query === "function") return record.$query(this.db).insertGraph(record).execute();
184
+ if (record && typeof record.$query === "function") {
185
+ const insertData = Object.entries(record).reduce((acc, [key, value]) => {
186
+ if (value !== void 0 && key !== "id") acc[key] = value;
187
+ return acc;
188
+ }, {});
189
+ return record.constructor.query(this.db).insert(insertData);
190
+ }
175
191
  return record;
176
192
  }));
177
193
  }
@@ -1,5 +1,5 @@
1
- import { FakerFactory } from "./faker-km9UhOS6.cjs";
2
- import { Factory, FactorySeed } from "./Factory-Bm44VKa-.cjs";
1
+ import { FakerFactory } from "./faker-C-Iuk_R1.mjs";
2
+ import { Factory, FactorySeed } from "./Factory-D7P3bKKb.mjs";
3
3
  import { Knex } from "knex";
4
4
  import { Model } from "objection";
5
5
 
@@ -110,7 +110,11 @@ var ObjectionFactory = class extends require_Factory.Factory {
110
110
  }
111
111
  const model = ModelClass.fromJson(data);
112
112
  if (autoInsert !== false) {
113
- const result = await model.$query(db).insertGraph(model).execute();
113
+ const insertData = Object.entries(model).reduce((acc, [key, value]) => {
114
+ if (value !== void 0 && key !== "id") acc[key] = value;
115
+ return acc;
116
+ }, {});
117
+ const result = await ModelClass.query(db).insert(insertData);
114
118
  return result;
115
119
  } else return model;
116
120
  };
@@ -162,16 +166,28 @@ var ObjectionFactory = class extends require_Factory.Factory {
162
166
  async insert(builderName, attrs) {
163
167
  if (!(builderName in this.builders)) throw new Error(`Factory "${builderName}" does not exist. Make sure it is correct and registered in src/test/setup.ts`);
164
168
  const result = await this.builders[builderName](attrs || {}, this, this.db, require_faker.faker);
165
- if (result && typeof result.$query === "function") return await result.$query(this.db).insertGraph(result).execute();
169
+ if (result && typeof result.$query === "function") {
170
+ const insertData = Object.entries(result).reduce((acc, [key, value]) => {
171
+ if (value !== void 0 && key !== "id") acc[key] = value;
172
+ return acc;
173
+ }, {});
174
+ return await result.constructor.query(this.db).insert(insertData);
175
+ }
166
176
  return result;
167
177
  }
168
178
  async insertMany(count, builderName, attrs) {
169
179
  if (!(builderName in this.builders)) throw new Error(`Builder "${builderName}" is not registered in this factory. Make sure it is correct and registered in src/test/setup.ts`);
170
180
  const records = [];
171
181
  for (let i = 0; i < count; i++) {
172
- const newAttrs = typeof attrs === "function" ? attrs(i, require_faker.faker) : attrs;
182
+ const newAttrs = typeof attrs === "function" ? await attrs(i, require_faker.faker) : attrs;
173
183
  records.push(this.builders[builderName](newAttrs, this, this.db, require_faker.faker).then((record) => {
174
- if (record && typeof record.$query === "function") return record.$query(this.db).insertGraph(record).execute();
184
+ if (record && typeof record.$query === "function") {
185
+ const insertData = Object.entries(record).reduce((acc, [key, value]) => {
186
+ if (value !== void 0 && key !== "id") acc[key] = value;
187
+ return acc;
188
+ }, {});
189
+ return record.constructor.query(this.db).insert(insertData);
190
+ }
175
191
  return record;
176
192
  }));
177
193
  }
@@ -1,5 +1,5 @@
1
- import { FakerFactory } from "./faker-ChuHaYMR.mjs";
2
- import { Factory, FactorySeed } from "./Factory-tjCDNgUK.mjs";
1
+ import { FakerFactory } from "./faker-BSH1EMtg.cjs";
2
+ import { Factory, FactorySeed } from "./Factory-pNV7ZQ7-.cjs";
3
3
  import { Knex } from "knex";
4
4
  import { Model } from "objection";
5
5
 
@@ -1,5 +1,5 @@
1
1
  require('./Factory-WMhTNZ9S.cjs');
2
2
  require('./faker-B14IEMIN.cjs');
3
- const require_ObjectionFactory = require('./ObjectionFactory-DxIxJagq.cjs');
3
+ const require_ObjectionFactory = require('./ObjectionFactory-CDriunkS.cjs');
4
4
 
5
5
  exports.ObjectionFactory = require_ObjectionFactory.ObjectionFactory;
@@ -1,4 +1,4 @@
1
- import "./faker-km9UhOS6.cjs";
2
- import "./Factory-Bm44VKa-.cjs";
3
- import { ObjectionFactory } from "./ObjectionFactory-BWMTXsxH.cjs";
1
+ import "./faker-BSH1EMtg.cjs";
2
+ import "./Factory-pNV7ZQ7-.cjs";
3
+ import { ObjectionFactory } from "./ObjectionFactory-D3l1VuyX.cjs";
4
4
  export { ObjectionFactory };
@@ -1,4 +1,4 @@
1
- import "./faker-ChuHaYMR.mjs";
2
- import "./Factory-tjCDNgUK.mjs";
3
- import { ObjectionFactory } from "./ObjectionFactory-CEG5qUrm.mjs";
1
+ import "./faker-C-Iuk_R1.mjs";
2
+ import "./Factory-D7P3bKKb.mjs";
3
+ import { ObjectionFactory } from "./ObjectionFactory-B40NQWSe.mjs";
4
4
  export { ObjectionFactory };
@@ -1,5 +1,5 @@
1
1
  import "./Factory-z2m01hMj.mjs";
2
2
  import "./faker-BGKYFoCT.mjs";
3
- import { ObjectionFactory } from "./ObjectionFactory-qIICOph3.mjs";
3
+ import { ObjectionFactory } from "./ObjectionFactory-8hebmnai.mjs";
4
4
 
5
5
  export { ObjectionFactory };
@@ -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
- 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
- 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,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-CruLTRRi.cjs');
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-CruLTRRi.cjs');
2
- const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-CIlpIO78.cjs');
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-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-Dq4Oeh-Y.mjs";
3
3
 
4
4
  export { VitestKyselyTransactionIsolator };
@@ -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
- 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,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(conn, level, fn) {
55
+ async transact(connection, level, fn) {
53
56
  const isolationLevel = level.toLowerCase();
54
- await conn.transaction(async (trx) => {
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-CruLTRRi.cjs');
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(conn, level, fn) {
55
+ async transact(connection, level, fn) {
53
56
  const isolationLevel = level.toLowerCase();
54
- await conn.transaction(async (trx) => {
57
+ await connection.transaction(async (trx) => {
55
58
  await fn(trx);
56
59
  }, { isolationLevel });
57
60
  }
@@ -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-LP4B0cqW.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-DVtJG2F3.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
  }