@geekmidas/testkit 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Factory.mjs +1 -1
- package/dist/{KyselyFactory-BGvSMLtd.cjs → KyselyFactory-BX7Kv2uP.cjs} +1 -1
- package/dist/{KyselyFactory-ionH4gvk.mjs → KyselyFactory-pOMOFQWE.mjs} +2 -2
- package/dist/KyselyFactory.cjs +2 -2
- package/dist/KyselyFactory.mjs +3 -3
- package/dist/{ObjectionFactory-CFrtXe7i.mjs → ObjectionFactory-ChuX8sZN.mjs} +1 -1
- package/dist/ObjectionFactory.mjs +2 -2
- package/dist/{PostgresKyselyMigrator-CbtiZgfI.mjs → PostgresKyselyMigrator-D8fm35-s.mjs} +1 -1
- package/dist/{PostgresKyselyMigrator-Cxf2Dp9y.cjs → PostgresKyselyMigrator-JTY2LfwD.cjs} +2 -2
- package/dist/PostgresKyselyMigrator.cjs +2 -2
- package/dist/PostgresKyselyMigrator.mjs +2 -2
- package/dist/{PostgresMigrator-eqyAFSf-.cjs → PostgresMigrator-Bz-tnjB6.cjs} +1 -1
- package/dist/PostgresMigrator.cjs +1 -1
- package/dist/PostgresMigrator.mjs +1 -1
- package/dist/{VitestKyselyTransactionIsolator-DXjWQtDN.mjs → VitestKyselyTransactionIsolator-BS3R-V0I.mjs} +1 -1
- package/dist/{VitestKyselyTransactionIsolator-Dh2AgJDd.cjs → VitestKyselyTransactionIsolator-DWSTKIe3.cjs} +1 -1
- package/dist/VitestKyselyTransactionIsolator.cjs +2 -3
- package/dist/VitestKyselyTransactionIsolator.mjs +2 -3
- package/dist/{VitestTransactionIsolator-pLwsDo_A.mjs → VitestTransactionIsolator-BjVXqFs6.mjs} +1 -1
- package/dist/{VitestTransactionIsolator-zK5NJ7DQ.cjs → VitestTransactionIsolator-Bx2c4OzK.cjs} +3 -2
- package/dist/VitestTransactionIsolator.cjs +1 -2
- package/dist/VitestTransactionIsolator.mjs +1 -2
- package/dist/__tests__/Factory.spec.cjs +42 -42
- package/dist/__tests__/Factory.spec.mjs +23 -24
- package/dist/__tests__/KyselyFactory.spec.cjs +46 -47
- package/dist/__tests__/KyselyFactory.spec.mjs +40 -41
- package/dist/__tests__/ObjectionFactory.spec.cjs +80 -81
- package/dist/__tests__/ObjectionFactory.spec.mjs +52 -53
- package/dist/__tests__/PostgresMigrator.spec.cjs +59 -60
- package/dist/__tests__/PostgresMigrator.spec.mjs +31 -32
- package/dist/__tests__/faker.spec.cjs +60 -60
- package/dist/__tests__/faker.spec.mjs +35 -36
- package/dist/__tests__/integration.spec.cjs +40 -40
- package/dist/__tests__/integration.spec.mjs +42 -43
- package/dist/{chunk-DWy1uDak.cjs → chunk-CUT6urMc.cjs} +0 -9
- package/dist/example.cjs +2 -2
- package/dist/example.mjs +3 -3
- package/dist/{faker-h6CkRloU.cjs → faker-caz-8zt8.cjs} +1 -1
- package/dist/faker.cjs +1 -1
- package/dist/faker.mjs +1 -1
- package/dist/{helpers-C_RZk04R.cjs → helpers-B9Jdk_C7.cjs} +3 -3
- package/dist/{helpers-C2NH7xcz.cjs → helpers-DKEBHABj.cjs} +1 -1
- package/dist/{helpers-BnARb5Ap.mjs → helpers-DOiGIkaU.mjs} +2 -2
- package/dist/helpers.cjs +3 -4
- package/dist/helpers.mjs +3 -4
- package/dist/kysely.cjs +6 -7
- package/dist/kysely.mjs +7 -8
- package/dist/objection.mjs +2 -2
- package/package.json +2 -1
- package/dist/dist-BM2KvLG1.mjs +0 -5618
- package/dist/dist-DE3gAxQI.cjs +0 -5736
- package/dist/magic-string.es-C6yzoryu.mjs +0 -1014
- package/dist/magic-string.es-jdtJrR0A.cjs +0 -1015
- package/dist/vi.bdSIJ99Y-BgRxGeO2.mjs +0 -9382
- package/dist/vi.bdSIJ99Y-CFuzUeY6.cjs +0 -9393
- /package/dist/{Factory-D52Lsc6Z.mjs → Factory-DlzMkMzb.mjs} +0 -0
- /package/dist/{PostgresMigrator-DqeuPy-e.mjs → PostgresMigrator-CEoRKTdq.mjs} +0 -0
- /package/dist/{faker-cGCFcrj2.mjs → faker-BwaXA_RF.mjs} +0 -0
- /package/dist/{helpers-CukcFAU9.mjs → helpers-BfuX-cjN.mjs} +0 -0
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
const require_chunk = require('../chunk-
|
|
1
|
+
const require_chunk = require('../chunk-CUT6urMc.cjs');
|
|
2
2
|
require('../Factory-DREHoms3.cjs');
|
|
3
3
|
const require_ObjectionFactory = require('../ObjectionFactory-BlkzSEqo.cjs');
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const require_helpers = require('../helpers-C2NH7xcz.cjs');
|
|
4
|
+
const require_helpers = require('../helpers-DKEBHABj.cjs');
|
|
5
|
+
const vitest = require_chunk.__toESM(require("vitest"));
|
|
7
6
|
const objection = require_chunk.__toESM(require("objection"));
|
|
8
7
|
|
|
9
8
|
//#region src/__tests__/ObjectionFactory.spec.ts
|
|
@@ -40,12 +39,12 @@ var Comment = class extends objection.Model {
|
|
|
40
39
|
userId;
|
|
41
40
|
createdAt;
|
|
42
41
|
};
|
|
43
|
-
|
|
42
|
+
vitest.describe.skip("ObjectionFactory", () => {
|
|
44
43
|
let factory;
|
|
45
44
|
let db;
|
|
46
45
|
let trx;
|
|
47
46
|
let cleanup;
|
|
48
|
-
|
|
47
|
+
(0, vitest.beforeAll)(async () => {
|
|
49
48
|
const setup = await require_helpers.setupKnexTest();
|
|
50
49
|
db = setup.db;
|
|
51
50
|
trx = setup.trx;
|
|
@@ -54,19 +53,19 @@ require_dist.describe.skip("ObjectionFactory", () => {
|
|
|
54
53
|
Post.knex(trx);
|
|
55
54
|
Comment.knex(trx);
|
|
56
55
|
});
|
|
57
|
-
|
|
56
|
+
(0, vitest.afterAll)(async () => {
|
|
58
57
|
await cleanup();
|
|
59
58
|
});
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
(0, vitest.describe)("constructor", () => {
|
|
60
|
+
(0, vitest.it)("should create an ObjectionFactory instance", () => {
|
|
62
61
|
const builders = {};
|
|
63
62
|
const seeds = {};
|
|
64
63
|
factory = new require_ObjectionFactory.ObjectionFactory(builders, seeds, trx);
|
|
65
|
-
|
|
64
|
+
(0, vitest.expect)(factory).toBeInstanceOf(require_ObjectionFactory.ObjectionFactory);
|
|
66
65
|
});
|
|
67
66
|
});
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
(0, vitest.describe)("insert method", () => {
|
|
68
|
+
(0, vitest.it)("should call builder and insert the record", async () => {
|
|
70
69
|
const userBuilder = async (attrs$1, factory$1, db$1) => {
|
|
71
70
|
return User.fromJson({
|
|
72
71
|
name: attrs$1.name || "Default Name",
|
|
@@ -83,12 +82,12 @@ require_dist.describe.skip("ObjectionFactory", () => {
|
|
|
83
82
|
email: "john@example.com"
|
|
84
83
|
};
|
|
85
84
|
const result = await factory.insert("user", attrs);
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
(0, vitest.expect)(result).toBeInstanceOf(User);
|
|
86
|
+
(0, vitest.expect)(result.name).toBe("John Doe");
|
|
87
|
+
(0, vitest.expect)(result.email).toBe("john@example.com");
|
|
88
|
+
(0, vitest.expect)(result.id).toBeDefined();
|
|
90
89
|
});
|
|
91
|
-
|
|
90
|
+
(0, vitest.it)("should use empty object as default attributes", async () => {
|
|
92
91
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
93
92
|
return User.fromJson({
|
|
94
93
|
name: "Default Name",
|
|
@@ -101,15 +100,15 @@ require_dist.describe.skip("ObjectionFactory", () => {
|
|
|
101
100
|
const builders = { user: userBuilder };
|
|
102
101
|
factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
|
|
103
102
|
const result = await factory.insert("user");
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
(0, vitest.expect)(result).toBeInstanceOf(User);
|
|
104
|
+
(0, vitest.expect)(result.name).toBe("Default Name");
|
|
105
|
+
(0, vitest.expect)(result.id).toBeDefined();
|
|
107
106
|
});
|
|
108
|
-
|
|
107
|
+
(0, vitest.it)("should throw error for non-existent factory", async () => {
|
|
109
108
|
factory = new require_ObjectionFactory.ObjectionFactory({}, {}, trx);
|
|
110
|
-
await
|
|
109
|
+
await (0, vitest.expect)(factory.insert("nonExistent")).rejects.toThrow("Factory \"nonExistent\" does not exist");
|
|
111
110
|
});
|
|
112
|
-
|
|
111
|
+
(0, vitest.it)("should handle builder that returns a promise", async () => {
|
|
113
112
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
114
113
|
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
115
114
|
return User.fromJson({
|
|
@@ -123,12 +122,12 @@ require_dist.describe.skip("ObjectionFactory", () => {
|
|
|
123
122
|
const builders = { user: userBuilder };
|
|
124
123
|
factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
|
|
125
124
|
const result = await factory.insert("user", { name: "Jane" });
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
(0, vitest.expect)(result).toBeInstanceOf(User);
|
|
126
|
+
(0, vitest.expect)(result.name).toBe("Jane");
|
|
128
127
|
});
|
|
129
128
|
});
|
|
130
|
-
|
|
131
|
-
|
|
129
|
+
(0, vitest.describe)("insertMany method", () => {
|
|
130
|
+
(0, vitest.it)("should insert multiple records with same attributes", async () => {
|
|
132
131
|
const userBuilder = async (attrs$1, factory$1, db$1) => {
|
|
133
132
|
return User.fromJson({
|
|
134
133
|
name: attrs$1.name || "Default Name",
|
|
@@ -142,14 +141,14 @@ require_dist.describe.skip("ObjectionFactory", () => {
|
|
|
142
141
|
factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
|
|
143
142
|
const attrs = { name: "User" };
|
|
144
143
|
const results = await factory.insertMany(3, "user", attrs);
|
|
145
|
-
|
|
144
|
+
(0, vitest.expect)(results).toHaveLength(3);
|
|
146
145
|
results.forEach((result) => {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
146
|
+
(0, vitest.expect)(result).toBeInstanceOf(User);
|
|
147
|
+
(0, vitest.expect)(result.name).toBe("User");
|
|
148
|
+
(0, vitest.expect)(result.id).toBeDefined();
|
|
150
149
|
});
|
|
151
150
|
});
|
|
152
|
-
|
|
151
|
+
(0, vitest.it)("should insert multiple records with dynamic attributes", async () => {
|
|
153
152
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
154
153
|
return User.fromJson({
|
|
155
154
|
name: attrs.name || "Default Name",
|
|
@@ -163,15 +162,15 @@ require_dist.describe.skip("ObjectionFactory", () => {
|
|
|
163
162
|
factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
|
|
164
163
|
const attrsFn = (idx) => ({ name: `User ${idx}` });
|
|
165
164
|
const results = await factory.insertMany(2, "user", attrsFn);
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
165
|
+
(0, vitest.expect)(results).toHaveLength(2);
|
|
166
|
+
(0, vitest.expect)(results[0].name).toBe("User 0");
|
|
167
|
+
(0, vitest.expect)(results[1].name).toBe("User 1");
|
|
169
168
|
results.forEach((result) => {
|
|
170
|
-
|
|
171
|
-
|
|
169
|
+
(0, vitest.expect)(result).toBeInstanceOf(User);
|
|
170
|
+
(0, vitest.expect)(result.id).toBeDefined();
|
|
172
171
|
});
|
|
173
172
|
});
|
|
174
|
-
|
|
173
|
+
(0, vitest.it)("should use empty object as default attributes for insertMany", async () => {
|
|
175
174
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
176
175
|
return User.fromJson({
|
|
177
176
|
name: "Default Name",
|
|
@@ -184,20 +183,20 @@ require_dist.describe.skip("ObjectionFactory", () => {
|
|
|
184
183
|
const builders = { user: userBuilder };
|
|
185
184
|
factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
|
|
186
185
|
const results = await factory.insertMany(2, "user");
|
|
187
|
-
|
|
186
|
+
(0, vitest.expect)(results).toHaveLength(2);
|
|
188
187
|
results.forEach((result) => {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
188
|
+
(0, vitest.expect)(result).toBeInstanceOf(User);
|
|
189
|
+
(0, vitest.expect)(result.name).toBe("Default Name");
|
|
190
|
+
(0, vitest.expect)(result.id).toBeDefined();
|
|
192
191
|
});
|
|
193
192
|
});
|
|
194
|
-
|
|
193
|
+
(0, vitest.it)("should throw error for non-existent builder in insertMany", async () => {
|
|
195
194
|
factory = new require_ObjectionFactory.ObjectionFactory({}, {}, trx);
|
|
196
|
-
await
|
|
195
|
+
await (0, vitest.expect)(factory.insertMany(2, "nonExistent")).rejects.toThrow("Builder \"nonExistent\" is not registered");
|
|
197
196
|
});
|
|
198
197
|
});
|
|
199
|
-
|
|
200
|
-
|
|
198
|
+
(0, vitest.describe)("seed method", () => {
|
|
199
|
+
(0, vitest.it)("should execute seed function", async () => {
|
|
201
200
|
const userBuilder = async (attrs$1, factory$1, db$1) => {
|
|
202
201
|
return User.fromJson({
|
|
203
202
|
name: attrs$1.name || "Default Name",
|
|
@@ -219,12 +218,12 @@ require_dist.describe.skip("ObjectionFactory", () => {
|
|
|
219
218
|
factory = new require_ObjectionFactory.ObjectionFactory(builders, seeds, trx);
|
|
220
219
|
const attrs = { name: "Super Admin" };
|
|
221
220
|
const result = await factory.seed("createAdmin", attrs);
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
221
|
+
(0, vitest.expect)(result).toBeInstanceOf(User);
|
|
222
|
+
(0, vitest.expect)(result.name).toBe("Super Admin");
|
|
223
|
+
(0, vitest.expect)(result.role).toBe("admin");
|
|
224
|
+
(0, vitest.expect)(result.id).toBeDefined();
|
|
226
225
|
});
|
|
227
|
-
|
|
226
|
+
(0, vitest.it)("should use empty object as default attributes for seed", async () => {
|
|
228
227
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
229
228
|
return User.fromJson({
|
|
230
229
|
name: "Default Admin",
|
|
@@ -244,15 +243,15 @@ require_dist.describe.skip("ObjectionFactory", () => {
|
|
|
244
243
|
const seeds = { createAdmin: createAdminSeed };
|
|
245
244
|
factory = new require_ObjectionFactory.ObjectionFactory(builders, seeds, trx);
|
|
246
245
|
const result = await factory.seed("createAdmin");
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
246
|
+
(0, vitest.expect)(result).toBeInstanceOf(User);
|
|
247
|
+
(0, vitest.expect)(result.name).toBe("Default Admin");
|
|
248
|
+
(0, vitest.expect)(result.role).toBe("admin");
|
|
250
249
|
});
|
|
251
|
-
|
|
250
|
+
(0, vitest.it)("should throw error for non-existent seed", () => {
|
|
252
251
|
factory = new require_ObjectionFactory.ObjectionFactory({}, {}, trx);
|
|
253
|
-
|
|
252
|
+
(0, vitest.expect)(() => factory.seed("nonExistent")).toThrow("Seed \"nonExistent\" is not registered");
|
|
254
253
|
});
|
|
255
|
-
|
|
254
|
+
(0, vitest.it)("should pass factory and db to seed function", async () => {
|
|
256
255
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
257
256
|
return User.fromJson({
|
|
258
257
|
name: attrs.name || "Test User",
|
|
@@ -264,19 +263,19 @@ require_dist.describe.skip("ObjectionFactory", () => {
|
|
|
264
263
|
};
|
|
265
264
|
const builders = { user: userBuilder };
|
|
266
265
|
const complexSeed = async (attrs, passedFactory, passedDb) => {
|
|
267
|
-
|
|
268
|
-
|
|
266
|
+
(0, vitest.expect)(passedFactory).toBe(factory);
|
|
267
|
+
(0, vitest.expect)(passedDb).toBe(trx);
|
|
269
268
|
return await passedFactory.insert("user", { name: `Complex ${attrs.data}` });
|
|
270
269
|
};
|
|
271
270
|
const seeds = { complexSeed };
|
|
272
271
|
factory = new require_ObjectionFactory.ObjectionFactory(builders, seeds, trx);
|
|
273
272
|
const result = await factory.seed("complexSeed", { data: "test" });
|
|
274
|
-
|
|
275
|
-
|
|
273
|
+
(0, vitest.expect)(result).toBeInstanceOf(User);
|
|
274
|
+
(0, vitest.expect)(result.name).toBe("Complex test");
|
|
276
275
|
});
|
|
277
276
|
});
|
|
278
|
-
|
|
279
|
-
|
|
277
|
+
(0, vitest.describe)("createSeed static method", () => {
|
|
278
|
+
(0, vitest.it)("should return the seed function unchanged", () => {
|
|
280
279
|
const seedFn = async (attrs, factory$1, db$1) => {
|
|
281
280
|
return {
|
|
282
281
|
id: 1,
|
|
@@ -284,37 +283,37 @@ require_dist.describe.skip("ObjectionFactory", () => {
|
|
|
284
283
|
};
|
|
285
284
|
};
|
|
286
285
|
const result = require_ObjectionFactory.ObjectionFactory.createSeed(seedFn);
|
|
287
|
-
|
|
286
|
+
(0, vitest.expect)(result).toBe(seedFn);
|
|
288
287
|
});
|
|
289
288
|
});
|
|
290
|
-
|
|
291
|
-
|
|
289
|
+
(0, vitest.describe)("error handling", () => {
|
|
290
|
+
(0, vitest.it)("should handle builder errors gracefully", async () => {
|
|
292
291
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
293
292
|
throw new Error("Builder failed");
|
|
294
293
|
};
|
|
295
294
|
const builders = { user: userBuilder };
|
|
296
295
|
factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
|
|
297
|
-
await
|
|
296
|
+
await (0, vitest.expect)(factory.insert("user")).rejects.toThrow("Builder failed");
|
|
298
297
|
});
|
|
299
|
-
|
|
298
|
+
(0, vitest.it)("should handle invalid model data gracefully", async () => {
|
|
300
299
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
301
300
|
return User.fromJson({ invalidField: "invalid" });
|
|
302
301
|
};
|
|
303
302
|
const builders = { user: userBuilder };
|
|
304
303
|
factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
|
|
305
|
-
await
|
|
304
|
+
await (0, vitest.expect)(factory.insert("user")).rejects.toThrow();
|
|
306
305
|
});
|
|
307
|
-
|
|
306
|
+
(0, vitest.it)("should handle seed function errors gracefully", async () => {
|
|
308
307
|
const failingSeed = async (attrs, factory$1, db$1) => {
|
|
309
308
|
throw new Error("Seed failed");
|
|
310
309
|
};
|
|
311
310
|
const seeds = { failingSeed };
|
|
312
311
|
factory = new require_ObjectionFactory.ObjectionFactory({}, seeds, trx);
|
|
313
|
-
await
|
|
312
|
+
await (0, vitest.expect)(factory.seed("failingSeed")).rejects.toThrow("Seed failed");
|
|
314
313
|
});
|
|
315
314
|
});
|
|
316
|
-
|
|
317
|
-
|
|
315
|
+
(0, vitest.describe)("type safety and integration", () => {
|
|
316
|
+
(0, vitest.it)("should work with typed builders and seeds", async () => {
|
|
318
317
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
319
318
|
return User.fromJson({
|
|
320
319
|
name: attrs.name || "Default User",
|
|
@@ -334,12 +333,12 @@ require_dist.describe.skip("ObjectionFactory", () => {
|
|
|
334
333
|
const builders = { user: userBuilder };
|
|
335
334
|
const seeds = { admin: adminSeed };
|
|
336
335
|
factory = new require_ObjectionFactory.ObjectionFactory(builders, seeds, trx);
|
|
337
|
-
|
|
336
|
+
(0, vitest.expect)(factory).toBeInstanceOf(require_ObjectionFactory.ObjectionFactory);
|
|
338
337
|
const admin = await factory.seed("admin", { isSuper: true });
|
|
339
|
-
|
|
340
|
-
|
|
338
|
+
(0, vitest.expect)(admin).toBeInstanceOf(User);
|
|
339
|
+
(0, vitest.expect)(admin.name).toBe("Admin");
|
|
341
340
|
});
|
|
342
|
-
|
|
341
|
+
(0, vitest.it)("should handle complex builder scenarios", async () => {
|
|
343
342
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
344
343
|
return User.fromJson({
|
|
345
344
|
name: attrs.name || "Default User",
|
|
@@ -376,10 +375,10 @@ require_dist.describe.skip("ObjectionFactory", () => {
|
|
|
376
375
|
};
|
|
377
376
|
factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
|
|
378
377
|
const post = await factory.insert("post", { title: "Test Post" });
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
378
|
+
(0, vitest.expect)(post).toBeInstanceOf(Post);
|
|
379
|
+
(0, vitest.expect)(post.title).toBe("Test Post");
|
|
380
|
+
(0, vitest.expect)(post.userId).toBeDefined();
|
|
381
|
+
(0, vitest.expect)(typeof post.userId).toBe("number");
|
|
383
382
|
});
|
|
384
383
|
});
|
|
385
384
|
});
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import "../
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { setupKnexTest } from "../helpers-CukcFAU9.mjs";
|
|
1
|
+
import "../Factory-DlzMkMzb.mjs";
|
|
2
|
+
import { ObjectionFactory } from "../ObjectionFactory-ChuX8sZN.mjs";
|
|
3
|
+
import { setupKnexTest } from "../helpers-BfuX-cjN.mjs";
|
|
4
|
+
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
6
5
|
import { Model } from "objection";
|
|
7
6
|
|
|
8
7
|
//#region src/__tests__/ObjectionFactory.spec.ts
|
|
@@ -61,7 +60,7 @@ describe.skip("ObjectionFactory", () => {
|
|
|
61
60
|
const builders = {};
|
|
62
61
|
const seeds = {};
|
|
63
62
|
factory = new ObjectionFactory(builders, seeds, trx);
|
|
64
|
-
|
|
63
|
+
expect(factory).toBeInstanceOf(ObjectionFactory);
|
|
65
64
|
});
|
|
66
65
|
});
|
|
67
66
|
describe("insert method", () => {
|
|
@@ -82,10 +81,10 @@ describe.skip("ObjectionFactory", () => {
|
|
|
82
81
|
email: "john@example.com"
|
|
83
82
|
};
|
|
84
83
|
const result = await factory.insert("user", attrs);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
84
|
+
expect(result).toBeInstanceOf(User);
|
|
85
|
+
expect(result.name).toBe("John Doe");
|
|
86
|
+
expect(result.email).toBe("john@example.com");
|
|
87
|
+
expect(result.id).toBeDefined();
|
|
89
88
|
});
|
|
90
89
|
it("should use empty object as default attributes", async () => {
|
|
91
90
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
@@ -100,13 +99,13 @@ describe.skip("ObjectionFactory", () => {
|
|
|
100
99
|
const builders = { user: userBuilder };
|
|
101
100
|
factory = new ObjectionFactory(builders, {}, trx);
|
|
102
101
|
const result = await factory.insert("user");
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
expect(result).toBeInstanceOf(User);
|
|
103
|
+
expect(result.name).toBe("Default Name");
|
|
104
|
+
expect(result.id).toBeDefined();
|
|
106
105
|
});
|
|
107
106
|
it("should throw error for non-existent factory", async () => {
|
|
108
107
|
factory = new ObjectionFactory({}, {}, trx);
|
|
109
|
-
await
|
|
108
|
+
await expect(factory.insert("nonExistent")).rejects.toThrow("Factory \"nonExistent\" does not exist");
|
|
110
109
|
});
|
|
111
110
|
it("should handle builder that returns a promise", async () => {
|
|
112
111
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
@@ -122,8 +121,8 @@ describe.skip("ObjectionFactory", () => {
|
|
|
122
121
|
const builders = { user: userBuilder };
|
|
123
122
|
factory = new ObjectionFactory(builders, {}, trx);
|
|
124
123
|
const result = await factory.insert("user", { name: "Jane" });
|
|
125
|
-
|
|
126
|
-
|
|
124
|
+
expect(result).toBeInstanceOf(User);
|
|
125
|
+
expect(result.name).toBe("Jane");
|
|
127
126
|
});
|
|
128
127
|
});
|
|
129
128
|
describe("insertMany method", () => {
|
|
@@ -141,11 +140,11 @@ describe.skip("ObjectionFactory", () => {
|
|
|
141
140
|
factory = new ObjectionFactory(builders, {}, trx);
|
|
142
141
|
const attrs = { name: "User" };
|
|
143
142
|
const results = await factory.insertMany(3, "user", attrs);
|
|
144
|
-
|
|
143
|
+
expect(results).toHaveLength(3);
|
|
145
144
|
results.forEach((result) => {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
145
|
+
expect(result).toBeInstanceOf(User);
|
|
146
|
+
expect(result.name).toBe("User");
|
|
147
|
+
expect(result.id).toBeDefined();
|
|
149
148
|
});
|
|
150
149
|
});
|
|
151
150
|
it("should insert multiple records with dynamic attributes", async () => {
|
|
@@ -162,12 +161,12 @@ describe.skip("ObjectionFactory", () => {
|
|
|
162
161
|
factory = new ObjectionFactory(builders, {}, trx);
|
|
163
162
|
const attrsFn = (idx) => ({ name: `User ${idx}` });
|
|
164
163
|
const results = await factory.insertMany(2, "user", attrsFn);
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
164
|
+
expect(results).toHaveLength(2);
|
|
165
|
+
expect(results[0].name).toBe("User 0");
|
|
166
|
+
expect(results[1].name).toBe("User 1");
|
|
168
167
|
results.forEach((result) => {
|
|
169
|
-
|
|
170
|
-
|
|
168
|
+
expect(result).toBeInstanceOf(User);
|
|
169
|
+
expect(result.id).toBeDefined();
|
|
171
170
|
});
|
|
172
171
|
});
|
|
173
172
|
it("should use empty object as default attributes for insertMany", async () => {
|
|
@@ -183,16 +182,16 @@ describe.skip("ObjectionFactory", () => {
|
|
|
183
182
|
const builders = { user: userBuilder };
|
|
184
183
|
factory = new ObjectionFactory(builders, {}, trx);
|
|
185
184
|
const results = await factory.insertMany(2, "user");
|
|
186
|
-
|
|
185
|
+
expect(results).toHaveLength(2);
|
|
187
186
|
results.forEach((result) => {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
187
|
+
expect(result).toBeInstanceOf(User);
|
|
188
|
+
expect(result.name).toBe("Default Name");
|
|
189
|
+
expect(result.id).toBeDefined();
|
|
191
190
|
});
|
|
192
191
|
});
|
|
193
192
|
it("should throw error for non-existent builder in insertMany", async () => {
|
|
194
193
|
factory = new ObjectionFactory({}, {}, trx);
|
|
195
|
-
await
|
|
194
|
+
await expect(factory.insertMany(2, "nonExistent")).rejects.toThrow("Builder \"nonExistent\" is not registered");
|
|
196
195
|
});
|
|
197
196
|
});
|
|
198
197
|
describe("seed method", () => {
|
|
@@ -218,10 +217,10 @@ describe.skip("ObjectionFactory", () => {
|
|
|
218
217
|
factory = new ObjectionFactory(builders, seeds, trx);
|
|
219
218
|
const attrs = { name: "Super Admin" };
|
|
220
219
|
const result = await factory.seed("createAdmin", attrs);
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
220
|
+
expect(result).toBeInstanceOf(User);
|
|
221
|
+
expect(result.name).toBe("Super Admin");
|
|
222
|
+
expect(result.role).toBe("admin");
|
|
223
|
+
expect(result.id).toBeDefined();
|
|
225
224
|
});
|
|
226
225
|
it("should use empty object as default attributes for seed", async () => {
|
|
227
226
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
@@ -243,13 +242,13 @@ describe.skip("ObjectionFactory", () => {
|
|
|
243
242
|
const seeds = { createAdmin: createAdminSeed };
|
|
244
243
|
factory = new ObjectionFactory(builders, seeds, trx);
|
|
245
244
|
const result = await factory.seed("createAdmin");
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
245
|
+
expect(result).toBeInstanceOf(User);
|
|
246
|
+
expect(result.name).toBe("Default Admin");
|
|
247
|
+
expect(result.role).toBe("admin");
|
|
249
248
|
});
|
|
250
249
|
it("should throw error for non-existent seed", () => {
|
|
251
250
|
factory = new ObjectionFactory({}, {}, trx);
|
|
252
|
-
|
|
251
|
+
expect(() => factory.seed("nonExistent")).toThrow("Seed \"nonExistent\" is not registered");
|
|
253
252
|
});
|
|
254
253
|
it("should pass factory and db to seed function", async () => {
|
|
255
254
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
@@ -263,15 +262,15 @@ describe.skip("ObjectionFactory", () => {
|
|
|
263
262
|
};
|
|
264
263
|
const builders = { user: userBuilder };
|
|
265
264
|
const complexSeed = async (attrs, passedFactory, passedDb) => {
|
|
266
|
-
|
|
267
|
-
|
|
265
|
+
expect(passedFactory).toBe(factory);
|
|
266
|
+
expect(passedDb).toBe(trx);
|
|
268
267
|
return await passedFactory.insert("user", { name: `Complex ${attrs.data}` });
|
|
269
268
|
};
|
|
270
269
|
const seeds = { complexSeed };
|
|
271
270
|
factory = new ObjectionFactory(builders, seeds, trx);
|
|
272
271
|
const result = await factory.seed("complexSeed", { data: "test" });
|
|
273
|
-
|
|
274
|
-
|
|
272
|
+
expect(result).toBeInstanceOf(User);
|
|
273
|
+
expect(result.name).toBe("Complex test");
|
|
275
274
|
});
|
|
276
275
|
});
|
|
277
276
|
describe("createSeed static method", () => {
|
|
@@ -283,7 +282,7 @@ describe.skip("ObjectionFactory", () => {
|
|
|
283
282
|
};
|
|
284
283
|
};
|
|
285
284
|
const result = ObjectionFactory.createSeed(seedFn);
|
|
286
|
-
|
|
285
|
+
expect(result).toBe(seedFn);
|
|
287
286
|
});
|
|
288
287
|
});
|
|
289
288
|
describe("error handling", () => {
|
|
@@ -293,7 +292,7 @@ describe.skip("ObjectionFactory", () => {
|
|
|
293
292
|
};
|
|
294
293
|
const builders = { user: userBuilder };
|
|
295
294
|
factory = new ObjectionFactory(builders, {}, trx);
|
|
296
|
-
await
|
|
295
|
+
await expect(factory.insert("user")).rejects.toThrow("Builder failed");
|
|
297
296
|
});
|
|
298
297
|
it("should handle invalid model data gracefully", async () => {
|
|
299
298
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
@@ -301,7 +300,7 @@ describe.skip("ObjectionFactory", () => {
|
|
|
301
300
|
};
|
|
302
301
|
const builders = { user: userBuilder };
|
|
303
302
|
factory = new ObjectionFactory(builders, {}, trx);
|
|
304
|
-
await
|
|
303
|
+
await expect(factory.insert("user")).rejects.toThrow();
|
|
305
304
|
});
|
|
306
305
|
it("should handle seed function errors gracefully", async () => {
|
|
307
306
|
const failingSeed = async (attrs, factory$1, db$1) => {
|
|
@@ -309,7 +308,7 @@ describe.skip("ObjectionFactory", () => {
|
|
|
309
308
|
};
|
|
310
309
|
const seeds = { failingSeed };
|
|
311
310
|
factory = new ObjectionFactory({}, seeds, trx);
|
|
312
|
-
await
|
|
311
|
+
await expect(factory.seed("failingSeed")).rejects.toThrow("Seed failed");
|
|
313
312
|
});
|
|
314
313
|
});
|
|
315
314
|
describe("type safety and integration", () => {
|
|
@@ -333,10 +332,10 @@ describe.skip("ObjectionFactory", () => {
|
|
|
333
332
|
const builders = { user: userBuilder };
|
|
334
333
|
const seeds = { admin: adminSeed };
|
|
335
334
|
factory = new ObjectionFactory(builders, seeds, trx);
|
|
336
|
-
|
|
335
|
+
expect(factory).toBeInstanceOf(ObjectionFactory);
|
|
337
336
|
const admin = await factory.seed("admin", { isSuper: true });
|
|
338
|
-
|
|
339
|
-
|
|
337
|
+
expect(admin).toBeInstanceOf(User);
|
|
338
|
+
expect(admin.name).toBe("Admin");
|
|
340
339
|
});
|
|
341
340
|
it("should handle complex builder scenarios", async () => {
|
|
342
341
|
const userBuilder = async (attrs, factory$1, db$1) => {
|
|
@@ -375,10 +374,10 @@ describe.skip("ObjectionFactory", () => {
|
|
|
375
374
|
};
|
|
376
375
|
factory = new ObjectionFactory(builders, {}, trx);
|
|
377
376
|
const post = await factory.insert("post", { title: "Test Post" });
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
377
|
+
expect(post).toBeInstanceOf(Post);
|
|
378
|
+
expect(post.title).toBe("Test Post");
|
|
379
|
+
expect(post.userId).toBeDefined();
|
|
380
|
+
expect(typeof post.userId).toBe("number");
|
|
382
381
|
});
|
|
383
382
|
});
|
|
384
383
|
});
|