@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.
- package/README.md +1 -1
- package/dist/{Factory-Bm44VKa-.d.cts → Factory-D7P3bKKb.d.mts} +2 -2
- package/dist/{Factory-tjCDNgUK.d.mts → Factory-pNV7ZQ7-.d.cts} +2 -2
- package/dist/Factory.d.cts +2 -2
- package/dist/Factory.d.mts +2 -2
- package/dist/{KyselyFactory-BoPDDitt.d.cts → KyselyFactory-72P98y5I.d.mts} +3 -3
- package/dist/{KyselyFactory-C3Bc3p4L.mjs → KyselyFactory-BcYkC0t2.mjs} +1 -1
- package/dist/{KyselyFactory-CXtfmMfK.cjs → KyselyFactory-Cf0o2YxO.cjs} +1 -1
- package/dist/{KyselyFactory-D82j74t9.d.mts → KyselyFactory-DLBrYWxU.d.cts} +3 -3
- package/dist/KyselyFactory.cjs +1 -1
- package/dist/KyselyFactory.d.cts +3 -3
- package/dist/KyselyFactory.d.mts +3 -3
- package/dist/KyselyFactory.mjs +1 -1
- package/dist/{ObjectionFactory-qIICOph3.mjs → ObjectionFactory-8hebmnai.mjs} +20 -4
- package/dist/{ObjectionFactory-BWMTXsxH.d.cts → ObjectionFactory-B40NQWSe.d.mts} +2 -2
- package/dist/{ObjectionFactory-DxIxJagq.cjs → ObjectionFactory-CDriunkS.cjs} +20 -4
- package/dist/{ObjectionFactory-CEG5qUrm.d.mts → ObjectionFactory-D3l1VuyX.d.cts} +2 -2
- package/dist/ObjectionFactory.cjs +1 -1
- package/dist/ObjectionFactory.d.cts +3 -3
- package/dist/ObjectionFactory.d.mts +3 -3
- package/dist/ObjectionFactory.mjs +1 -1
- package/dist/{VitestKyselyTransactionIsolator-ClCazkBO.d.mts → VitestKyselyTransactionIsolator-CnxpE9cH.d.mts} +2 -1
- package/dist/{VitestKyselyTransactionIsolator-UE1J-UoP.d.cts → VitestKyselyTransactionIsolator-DYUYVEh9.d.cts} +2 -1
- package/dist/{VitestKyselyTransactionIsolator-BKGT9nEG.mjs → VitestKyselyTransactionIsolator-Dq4Oeh-Y.mjs} +4 -1
- package/dist/{VitestKyselyTransactionIsolator-CIlpIO78.cjs → VitestKyselyTransactionIsolator-Dqy3qNoJ.cjs} +4 -1
- package/dist/VitestKyselyTransactionIsolator.cjs +2 -2
- package/dist/VitestKyselyTransactionIsolator.d.cts +2 -2
- package/dist/VitestKyselyTransactionIsolator.d.mts +2 -2
- package/dist/VitestKyselyTransactionIsolator.mjs +2 -2
- package/dist/{VitestObjectionTransactionIsolator-CO2nTi9r.d.cts → VitestObjectionTransactionIsolator-CJ4ds5Qv.d.cts} +3 -2
- package/dist/{VitestObjectionTransactionIsolator-D264iuPy.d.mts → VitestObjectionTransactionIsolator-DIM79dCq.d.mts} +3 -2
- package/dist/{VitestObjectionTransactionIsolator-BPoLUFop.mjs → VitestObjectionTransactionIsolator-DVtJG2F3.mjs} +6 -3
- package/dist/{VitestObjectionTransactionIsolator-DyqLp_in.cjs → VitestObjectionTransactionIsolator-LP4B0cqW.cjs} +6 -3
- package/dist/VitestObjectionTransactionIsolator.cjs +2 -2
- package/dist/VitestObjectionTransactionIsolator.d.cts +2 -2
- package/dist/VitestObjectionTransactionIsolator.d.mts +2 -2
- package/dist/VitestObjectionTransactionIsolator.mjs +2 -2
- package/dist/{VitestTransactionIsolator-CruLTRRi.cjs → VitestTransactionIsolator-BQ5FpLtC.cjs} +5 -2
- package/dist/{VitestTransactionIsolator-BWwK-ca6.mjs → VitestTransactionIsolator-CskiiJbW.mjs} +5 -2
- package/dist/{VitestTransactionIsolator-DHf2MxmC.d.cts → VitestTransactionIsolator-DdLNODZg.d.cts} +8 -5
- package/dist/{VitestTransactionIsolator-Xqyjlmw6.d.mts → VitestTransactionIsolator-zdyiS_SY.d.mts} +8 -5
- package/dist/VitestTransactionIsolator.cjs +1 -1
- package/dist/VitestTransactionIsolator.d.cts +2 -2
- package/dist/VitestTransactionIsolator.d.mts +2 -2
- package/dist/VitestTransactionIsolator.mjs +1 -1
- package/dist/__tests__/KyselyFactory.spec.cjs +6 -6
- package/dist/__tests__/KyselyFactory.spec.mjs +6 -6
- package/dist/__tests__/ObjectionFactory.spec.cjs +288 -450
- package/dist/__tests__/ObjectionFactory.spec.mjs +289 -451
- package/dist/__tests__/PostgresKyselyMigrator.spec.cjs +397 -0
- package/dist/__tests__/PostgresKyselyMigrator.spec.d.cts +1 -0
- package/dist/__tests__/PostgresKyselyMigrator.spec.d.mts +1 -0
- package/dist/__tests__/PostgresKyselyMigrator.spec.mjs +396 -0
- package/dist/__tests__/PostgresMigrator.spec.cjs +1 -1
- package/dist/__tests__/PostgresMigrator.spec.mjs +1 -1
- package/dist/__tests__/PostgresObjectionMigrator.spec.cjs +1 -1
- package/dist/__tests__/PostgresObjectionMigrator.spec.mjs +1 -1
- package/dist/__tests__/VitestObjectionTransactionIsolator.spec.cjs +7 -16
- package/dist/__tests__/VitestObjectionTransactionIsolator.spec.mjs +7 -16
- package/dist/__tests__/integration.spec.cjs +6 -6
- package/dist/__tests__/integration.spec.mjs +6 -6
- package/dist/{faker-km9UhOS6.d.cts → faker-BSH1EMtg.d.cts} +2 -2
- package/dist/{faker-ChuHaYMR.d.mts → faker-C-Iuk_R1.d.mts} +2 -2
- package/dist/faker.d.cts +1 -1
- package/dist/faker.d.mts +1 -1
- package/dist/{helpers-BEmjyUVE.mjs → helpers-B4TXg3Wp.mjs} +11 -36
- package/dist/{helpers-CNMBePuj.cjs → helpers-Bf0nXhbu.cjs} +10 -41
- package/dist/{kysely-Cx_1pZYc.mjs → kysely-BsDbvw3r.mjs} +4 -4
- package/dist/{kysely-CBfCXxUn.cjs → kysely-CP1iJMvq.cjs} +4 -4
- package/dist/kysely.cjs +4 -4
- package/dist/kysely.d.cts +6 -6
- package/dist/kysely.d.mts +6 -6
- package/dist/kysely.mjs +4 -4
- package/dist/{objection-lsMgM5gP.mjs → objection-BEPk9h-g.mjs} +5 -5
- package/dist/{objection-CCD8fMLj.cjs → objection-Di7JSist.cjs} +5 -5
- package/dist/objection.cjs +4 -4
- package/dist/objection.d.cts +7 -7
- package/dist/objection.d.mts +7 -7
- package/dist/objection.mjs +4 -4
- package/package.json +3 -3
- package/src/Factory.ts +4 -1
- package/src/KyselyFactory.ts +6 -2
- package/src/ObjectionFactory.ts +34 -4
- package/src/VitestKyselyTransactionIsolator.ts +3 -0
- package/src/VitestObjectionTransactionIsolator.ts +5 -2
- package/src/VitestTransactionIsolator.ts +11 -8
- package/src/__tests__/KyselyFactory.spec.ts +1 -1
- package/src/__tests__/ObjectionFactory.spec.ts +423 -542
- package/src/__tests__/PostgresKyselyMigrator.spec.ts +690 -0
- package/src/__tests__/VitestObjectionTransactionIsolator.spec.ts +1 -10
- package/src/__tests__/integration.spec.ts +1 -1
- package/src/kysely.ts +6 -3
- package/src/objection.ts +7 -4
- package/test/helpers.ts +13 -21
- package/dist/example.cjs +0 -22
- package/dist/example.d.cts +0 -26
- package/dist/example.d.mts +0 -26
- package/dist/example.mjs +0 -22
- 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
|
[](https://nodejs.org)
|
|
6
|
-
[](https://www.typescriptlang.org)
|
|
7
7
|
[](LICENSE)
|
|
8
8
|
|
|
9
9
|
## 🚀 Overview
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FakerFactory } from "./faker-
|
|
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-
|
|
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
|
*
|
package/dist/Factory.d.cts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./faker-
|
|
2
|
-
import { Factory, FactorySeed, MixedFactoryBuilder } from "./Factory-
|
|
1
|
+
import "./faker-BSH1EMtg.cjs";
|
|
2
|
+
import { Factory, FactorySeed, MixedFactoryBuilder } from "./Factory-pNV7ZQ7-.cjs";
|
|
3
3
|
export { Factory, FactorySeed, MixedFactoryBuilder };
|
package/dist/Factory.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./faker-
|
|
2
|
-
import { Factory, FactorySeed, MixedFactoryBuilder } from "./Factory-
|
|
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-
|
|
2
|
-
import { Factory, FactorySeed } from "./Factory-
|
|
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-
|
|
2
|
-
import { Factory, FactorySeed } from "./Factory-
|
|
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.
|
package/dist/KyselyFactory.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require('./Factory-WMhTNZ9S.cjs');
|
|
2
2
|
require('./faker-B14IEMIN.cjs');
|
|
3
|
-
const require_KyselyFactory = require('./KyselyFactory-
|
|
3
|
+
const require_KyselyFactory = require('./KyselyFactory-Cf0o2YxO.cjs');
|
|
4
4
|
|
|
5
5
|
exports.KyselyFactory = require_KyselyFactory.KyselyFactory;
|
package/dist/KyselyFactory.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./faker-
|
|
2
|
-
import "./Factory-
|
|
3
|
-
import { KyselyFactory } from "./KyselyFactory-
|
|
1
|
+
import "./faker-BSH1EMtg.cjs";
|
|
2
|
+
import "./Factory-pNV7ZQ7-.cjs";
|
|
3
|
+
import { KyselyFactory } from "./KyselyFactory-DLBrYWxU.cjs";
|
|
4
4
|
export { KyselyFactory };
|
package/dist/KyselyFactory.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./faker-
|
|
2
|
-
import "./Factory-
|
|
3
|
-
import { KyselyFactory } from "./KyselyFactory-
|
|
1
|
+
import "./faker-C-Iuk_R1.mjs";
|
|
2
|
+
import "./Factory-D7P3bKKb.mjs";
|
|
3
|
+
import { KyselyFactory } from "./KyselyFactory-72P98y5I.mjs";
|
|
4
4
|
export { KyselyFactory };
|
package/dist/KyselyFactory.mjs
CHANGED
|
@@ -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
|
|
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")
|
|
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")
|
|
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-
|
|
2
|
-
import { Factory, FactorySeed } from "./Factory-
|
|
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
|
|
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")
|
|
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")
|
|
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-
|
|
2
|
-
import { Factory, FactorySeed } from "./Factory-
|
|
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-
|
|
3
|
+
const require_ObjectionFactory = require('./ObjectionFactory-CDriunkS.cjs');
|
|
4
4
|
|
|
5
5
|
exports.ObjectionFactory = require_ObjectionFactory.ObjectionFactory;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./faker-
|
|
2
|
-
import "./Factory-
|
|
3
|
-
import { ObjectionFactory } from "./ObjectionFactory-
|
|
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-
|
|
2
|
-
import "./Factory-
|
|
3
|
-
import { ObjectionFactory } from "./ObjectionFactory-
|
|
1
|
+
import "./faker-C-Iuk_R1.mjs";
|
|
2
|
+
import "./Factory-D7P3bKKb.mjs";
|
|
3
|
+
import { ObjectionFactory } from "./ObjectionFactory-B40NQWSe.mjs";
|
|
4
4
|
export { ObjectionFactory };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
1
|
+
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-zdyiS_SY.mjs";
|
|
2
2
|
import { Kysely, Transaction } from "kysely";
|
|
3
3
|
|
|
4
4
|
//#region src/VitestKyselyTransactionIsolator.d.ts
|
|
@@ -41,6 +41,7 @@ import { Kysely, Transaction } from "kysely";
|
|
|
41
41
|
* ```
|
|
42
42
|
*/
|
|
43
43
|
declare class VitestKyselyTransactionIsolator<Database> extends VitestPostgresTransactionIsolator<Kysely<Database>, Transaction<Database>> {
|
|
44
|
+
destroy(conn: Kysely<Database>): Promise<void>;
|
|
44
45
|
/**
|
|
45
46
|
* Creates a Kysely transaction with the specified isolation level.
|
|
46
47
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
1
|
+
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-DdLNODZg.cjs";
|
|
2
2
|
import { Kysely, Transaction } from "kysely";
|
|
3
3
|
|
|
4
4
|
//#region src/VitestKyselyTransactionIsolator.d.ts
|
|
@@ -41,6 +41,7 @@ import { Kysely, Transaction } from "kysely";
|
|
|
41
41
|
* ```
|
|
42
42
|
*/
|
|
43
43
|
declare class VitestKyselyTransactionIsolator<Database> extends VitestPostgresTransactionIsolator<Kysely<Database>, Transaction<Database>> {
|
|
44
|
+
destroy(conn: Kysely<Database>): Promise<void>;
|
|
44
45
|
/**
|
|
45
46
|
* Creates a Kysely transaction with the specified isolation level.
|
|
46
47
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
1
|
+
import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-CskiiJbW.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/VitestKyselyTransactionIsolator.ts
|
|
4
4
|
/**
|
|
@@ -39,6 +39,9 @@ import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-B
|
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
41
|
var VitestKyselyTransactionIsolator = class extends VitestPostgresTransactionIsolator {
|
|
42
|
+
destroy(conn) {
|
|
43
|
+
return conn.destroy();
|
|
44
|
+
}
|
|
42
45
|
/**
|
|
43
46
|
* Creates a Kysely transaction with the specified isolation level.
|
|
44
47
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-
|
|
1
|
+
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
2
2
|
|
|
3
3
|
//#region src/VitestKyselyTransactionIsolator.ts
|
|
4
4
|
/**
|
|
@@ -39,6 +39,9 @@ const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-C
|
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
41
|
var VitestKyselyTransactionIsolator = class extends require_VitestTransactionIsolator.VitestPostgresTransactionIsolator {
|
|
42
|
+
destroy(conn) {
|
|
43
|
+
return conn.destroy();
|
|
44
|
+
}
|
|
42
45
|
/**
|
|
43
46
|
* Creates a Kysely transaction with the specified isolation level.
|
|
44
47
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require('./VitestTransactionIsolator-
|
|
2
|
-
const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-
|
|
1
|
+
require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
2
|
+
const require_VitestKyselyTransactionIsolator = require('./VitestKyselyTransactionIsolator-Dqy3qNoJ.cjs');
|
|
3
3
|
|
|
4
4
|
exports.VitestKyselyTransactionIsolator = require_VitestKyselyTransactionIsolator.VitestKyselyTransactionIsolator;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./VitestTransactionIsolator-
|
|
2
|
-
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-
|
|
1
|
+
import "./VitestTransactionIsolator-DdLNODZg.cjs";
|
|
2
|
+
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-DYUYVEh9.cjs";
|
|
3
3
|
export { VitestKyselyTransactionIsolator };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./VitestTransactionIsolator-
|
|
2
|
-
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-
|
|
1
|
+
import "./VitestTransactionIsolator-zdyiS_SY.mjs";
|
|
2
|
+
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-CnxpE9cH.mjs";
|
|
3
3
|
export { VitestKyselyTransactionIsolator };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./VitestTransactionIsolator-
|
|
2
|
-
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-
|
|
1
|
+
import "./VitestTransactionIsolator-CskiiJbW.mjs";
|
|
2
|
+
import { VitestKyselyTransactionIsolator } from "./VitestKyselyTransactionIsolator-Dq4Oeh-Y.mjs";
|
|
3
3
|
|
|
4
4
|
export { VitestKyselyTransactionIsolator };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
1
|
+
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-DdLNODZg.cjs";
|
|
2
2
|
import { Knex } from "knex";
|
|
3
3
|
|
|
4
4
|
//#region src/VitestObjectionTransactionIsolator.d.ts
|
|
@@ -32,6 +32,7 @@ import { Knex } from "knex";
|
|
|
32
32
|
* ```
|
|
33
33
|
*/
|
|
34
34
|
declare class VitestObjectionTransactionIsolator extends VitestPostgresTransactionIsolator<Knex, Knex.Transaction> {
|
|
35
|
+
destroy(conn: Knex<any, any[]>): Promise<void>;
|
|
35
36
|
/**
|
|
36
37
|
* Creates a Knex transaction with the specified isolation level.
|
|
37
38
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -51,7 +52,7 @@ declare class VitestObjectionTransactionIsolator extends VitestPostgresTransacti
|
|
|
51
52
|
* });
|
|
52
53
|
* ```
|
|
53
54
|
*/
|
|
54
|
-
transact(
|
|
55
|
+
transact(connection: Knex, level: IsolationLevel, fn: (trx: Knex.Transaction) => Promise<void>): Promise<void>;
|
|
55
56
|
}
|
|
56
57
|
//#endregion
|
|
57
58
|
export { VitestObjectionTransactionIsolator };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
1
|
+
import { IsolationLevel, VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-zdyiS_SY.mjs";
|
|
2
2
|
import { Knex } from "knex";
|
|
3
3
|
|
|
4
4
|
//#region src/VitestObjectionTransactionIsolator.d.ts
|
|
@@ -32,6 +32,7 @@ import { Knex } from "knex";
|
|
|
32
32
|
* ```
|
|
33
33
|
*/
|
|
34
34
|
declare class VitestObjectionTransactionIsolator extends VitestPostgresTransactionIsolator<Knex, Knex.Transaction> {
|
|
35
|
+
destroy(conn: Knex<any, any[]>): Promise<void>;
|
|
35
36
|
/**
|
|
36
37
|
* Creates a Knex transaction with the specified isolation level.
|
|
37
38
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -51,7 +52,7 @@ declare class VitestObjectionTransactionIsolator extends VitestPostgresTransacti
|
|
|
51
52
|
* });
|
|
52
53
|
* ```
|
|
53
54
|
*/
|
|
54
|
-
transact(
|
|
55
|
+
transact(connection: Knex, level: IsolationLevel, fn: (trx: Knex.Transaction) => Promise<void>): Promise<void>;
|
|
55
56
|
}
|
|
56
57
|
//#endregion
|
|
57
58
|
export { VitestObjectionTransactionIsolator };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-
|
|
1
|
+
import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-CskiiJbW.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/VitestObjectionTransactionIsolator.ts
|
|
4
4
|
/**
|
|
@@ -30,6 +30,9 @@ import { VitestPostgresTransactionIsolator } from "./VitestTransactionIsolator-B
|
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
32
|
var VitestObjectionTransactionIsolator = class extends VitestPostgresTransactionIsolator {
|
|
33
|
+
destroy(conn) {
|
|
34
|
+
return conn.destroy();
|
|
35
|
+
}
|
|
33
36
|
/**
|
|
34
37
|
* Creates a Knex transaction with the specified isolation level.
|
|
35
38
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -49,9 +52,9 @@ var VitestObjectionTransactionIsolator = class extends VitestPostgresTransaction
|
|
|
49
52
|
* });
|
|
50
53
|
* ```
|
|
51
54
|
*/
|
|
52
|
-
async transact(
|
|
55
|
+
async transact(connection, level, fn) {
|
|
53
56
|
const isolationLevel = level.toLowerCase();
|
|
54
|
-
await
|
|
57
|
+
await connection.transaction(async (trx) => {
|
|
55
58
|
await fn(trx);
|
|
56
59
|
}, { isolationLevel });
|
|
57
60
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-
|
|
1
|
+
const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
2
2
|
|
|
3
3
|
//#region src/VitestObjectionTransactionIsolator.ts
|
|
4
4
|
/**
|
|
@@ -30,6 +30,9 @@ const require_VitestTransactionIsolator = require('./VitestTransactionIsolator-C
|
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
32
|
var VitestObjectionTransactionIsolator = class extends require_VitestTransactionIsolator.VitestPostgresTransactionIsolator {
|
|
33
|
+
destroy(conn) {
|
|
34
|
+
return conn.destroy();
|
|
35
|
+
}
|
|
33
36
|
/**
|
|
34
37
|
* Creates a Knex transaction with the specified isolation level.
|
|
35
38
|
* Implements the abstract transact method from VitestPostgresTransactionIsolator.
|
|
@@ -49,9 +52,9 @@ var VitestObjectionTransactionIsolator = class extends require_VitestTransaction
|
|
|
49
52
|
* });
|
|
50
53
|
* ```
|
|
51
54
|
*/
|
|
52
|
-
async transact(
|
|
55
|
+
async transact(connection, level, fn) {
|
|
53
56
|
const isolationLevel = level.toLowerCase();
|
|
54
|
-
await
|
|
57
|
+
await connection.transaction(async (trx) => {
|
|
55
58
|
await fn(trx);
|
|
56
59
|
}, { isolationLevel });
|
|
57
60
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require('./VitestTransactionIsolator-
|
|
2
|
-
const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTransactionIsolator-
|
|
1
|
+
require('./VitestTransactionIsolator-BQ5FpLtC.cjs');
|
|
2
|
+
const require_VitestObjectionTransactionIsolator = require('./VitestObjectionTransactionIsolator-LP4B0cqW.cjs');
|
|
3
3
|
|
|
4
4
|
exports.VitestObjectionTransactionIsolator = require_VitestObjectionTransactionIsolator.VitestObjectionTransactionIsolator;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./VitestTransactionIsolator-
|
|
2
|
-
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-
|
|
1
|
+
import "./VitestTransactionIsolator-DdLNODZg.cjs";
|
|
2
|
+
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-CJ4ds5Qv.cjs";
|
|
3
3
|
export { VitestObjectionTransactionIsolator };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./VitestTransactionIsolator-
|
|
2
|
-
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-
|
|
1
|
+
import "./VitestTransactionIsolator-zdyiS_SY.mjs";
|
|
2
|
+
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-DIM79dCq.mjs";
|
|
3
3
|
export { VitestObjectionTransactionIsolator };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./VitestTransactionIsolator-
|
|
2
|
-
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-
|
|
1
|
+
import "./VitestTransactionIsolator-CskiiJbW.mjs";
|
|
2
|
+
import { VitestObjectionTransactionIsolator } from "./VitestObjectionTransactionIsolator-DVtJG2F3.mjs";
|
|
3
3
|
|
|
4
4
|
export { VitestObjectionTransactionIsolator };
|
package/dist/{VitestTransactionIsolator-CruLTRRi.cjs → VitestTransactionIsolator-BQ5FpLtC.cjs}
RENAMED
|
@@ -34,7 +34,7 @@ let IsolationLevel = /* @__PURE__ */ function(IsolationLevel$1) {
|
|
|
34
34
|
* Provides automatic transaction rollback after each test to maintain test isolation.
|
|
35
35
|
* Subclasses must implement the transact() method for their specific database driver.
|
|
36
36
|
*
|
|
37
|
-
* @template
|
|
37
|
+
* @template TConn - The database connection type
|
|
38
38
|
* @template Transaction - The transaction type
|
|
39
39
|
*
|
|
40
40
|
* @example
|
|
@@ -87,7 +87,7 @@ var VitestPostgresTransactionIsolator = class {
|
|
|
87
87
|
* });
|
|
88
88
|
* ```
|
|
89
89
|
*/
|
|
90
|
-
wrapVitestWithTransaction(
|
|
90
|
+
wrapVitestWithTransaction(createConnection, setup, level = IsolationLevel.REPEATABLE_READ) {
|
|
91
91
|
return this.api.extend({ trx: async ({}, use) => {
|
|
92
92
|
class TestRollback extends Error {
|
|
93
93
|
constructor() {
|
|
@@ -96,6 +96,7 @@ var VitestPostgresTransactionIsolator = class {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
let testError;
|
|
99
|
+
const conn = await createConnection();
|
|
99
100
|
try {
|
|
100
101
|
await this.transact(conn, level, async (transaction) => {
|
|
101
102
|
try {
|
|
@@ -109,6 +110,8 @@ var VitestPostgresTransactionIsolator = class {
|
|
|
109
110
|
} catch (error) {
|
|
110
111
|
if (!(error instanceof TestRollback)) throw error;
|
|
111
112
|
if (testError) throw testError;
|
|
113
|
+
} finally {
|
|
114
|
+
await this.destroy(conn);
|
|
112
115
|
}
|
|
113
116
|
} });
|
|
114
117
|
}
|
package/dist/{VitestTransactionIsolator-BWwK-ca6.mjs → VitestTransactionIsolator-CskiiJbW.mjs}
RENAMED
|
@@ -33,7 +33,7 @@ let IsolationLevel = /* @__PURE__ */ function(IsolationLevel$1) {
|
|
|
33
33
|
* Provides automatic transaction rollback after each test to maintain test isolation.
|
|
34
34
|
* Subclasses must implement the transact() method for their specific database driver.
|
|
35
35
|
*
|
|
36
|
-
* @template
|
|
36
|
+
* @template TConn - The database connection type
|
|
37
37
|
* @template Transaction - The transaction type
|
|
38
38
|
*
|
|
39
39
|
* @example
|
|
@@ -86,7 +86,7 @@ var VitestPostgresTransactionIsolator = class {
|
|
|
86
86
|
* });
|
|
87
87
|
* ```
|
|
88
88
|
*/
|
|
89
|
-
wrapVitestWithTransaction(
|
|
89
|
+
wrapVitestWithTransaction(createConnection, setup, level = IsolationLevel.REPEATABLE_READ) {
|
|
90
90
|
return this.api.extend({ trx: async ({}, use) => {
|
|
91
91
|
class TestRollback extends Error {
|
|
92
92
|
constructor() {
|
|
@@ -95,6 +95,7 @@ var VitestPostgresTransactionIsolator = class {
|
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
let testError;
|
|
98
|
+
const conn = await createConnection();
|
|
98
99
|
try {
|
|
99
100
|
await this.transact(conn, level, async (transaction) => {
|
|
100
101
|
try {
|
|
@@ -108,6 +109,8 @@ var VitestPostgresTransactionIsolator = class {
|
|
|
108
109
|
} catch (error) {
|
|
109
110
|
if (!(error instanceof TestRollback)) throw error;
|
|
110
111
|
if (testError) throw testError;
|
|
112
|
+
} finally {
|
|
113
|
+
await this.destroy(conn);
|
|
111
114
|
}
|
|
112
115
|
} });
|
|
113
116
|
}
|