@geekmidas/testkit 0.0.15 → 0.0.16

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 (177) hide show
  1. package/dist/{Factory-D7P3bKKb.d.mts → Factory-BZ8uMoXl.d.cts} +3 -2
  2. package/dist/{Factory-pNV7ZQ7-.d.cts → Factory-Cmr3s3-s.d.mts} +3 -2
  3. package/dist/Factory-WMhTNZ9S.cjs +2 -1
  4. package/dist/Factory-WMhTNZ9S.cjs.map +1 -0
  5. package/dist/Factory-z2m01hMj.mjs +2 -1
  6. package/dist/Factory-z2m01hMj.mjs.map +1 -0
  7. package/dist/Factory.d.cts +2 -2
  8. package/dist/Factory.d.mts +2 -2
  9. package/dist/KyselyFactory-BcYkC0t2.mjs +2 -1
  10. package/dist/KyselyFactory-BcYkC0t2.mjs.map +1 -0
  11. package/dist/KyselyFactory-Cf0o2YxO.cjs +2 -1
  12. package/dist/KyselyFactory-Cf0o2YxO.cjs.map +1 -0
  13. package/dist/{KyselyFactory-72P98y5I.d.mts → KyselyFactory-Cx3sezwH.d.mts} +4 -3
  14. package/dist/{KyselyFactory-DLBrYWxU.d.cts → KyselyFactory-DRQ83r0o.d.cts} +4 -3
  15. package/dist/KyselyFactory.d.cts +3 -3
  16. package/dist/KyselyFactory.d.mts +3 -3
  17. package/dist/ObjectionFactory-8hebmnai.mjs +2 -1
  18. package/dist/ObjectionFactory-8hebmnai.mjs.map +1 -0
  19. package/dist/{ObjectionFactory-B40NQWSe.d.mts → ObjectionFactory-C-59Hjwj.d.mts} +4 -3
  20. package/dist/{ObjectionFactory-D3l1VuyX.d.cts → ObjectionFactory-C4X78k0B.d.cts} +4 -3
  21. package/dist/ObjectionFactory-CDriunkS.cjs +2 -1
  22. package/dist/ObjectionFactory-CDriunkS.cjs.map +1 -0
  23. package/dist/ObjectionFactory.d.cts +3 -3
  24. package/dist/ObjectionFactory.d.mts +3 -3
  25. package/dist/{PostgresKyselyMigrator-_6yHZigp.d.mts → PostgresKyselyMigrator-CIx3AFSR.d.mts} +3 -2
  26. package/dist/PostgresKyselyMigrator-CQ3aUoy_.d.cts +2 -1
  27. package/dist/PostgresKyselyMigrator-CfytARcA.cjs +2 -1
  28. package/dist/PostgresKyselyMigrator-CfytARcA.cjs.map +1 -0
  29. package/dist/{PostgresKyselyMigrator-Bdhl251C.mjs → PostgresKyselyMigrator-upT-hmrz.mjs} +3 -2
  30. package/dist/PostgresKyselyMigrator-upT-hmrz.mjs.map +1 -0
  31. package/dist/PostgresKyselyMigrator.d.mts +2 -2
  32. package/dist/PostgresKyselyMigrator.mjs +2 -2
  33. package/dist/PostgresMigrator-D5UkK1_K.d.cts +2 -1
  34. package/dist/PostgresMigrator-DFcNdCvD.cjs +2 -1
  35. package/dist/PostgresMigrator-DFcNdCvD.cjs.map +1 -0
  36. package/dist/{PostgresMigrator-BlvuQl7d.d.mts → PostgresMigrator-DQaRxoaY.d.mts} +2 -1
  37. package/dist/{PostgresMigrator-DxPC_gGu.mjs → PostgresMigrator-DbuJGAVy.mjs} +4 -3
  38. package/dist/PostgresMigrator-DbuJGAVy.mjs.map +1 -0
  39. package/dist/PostgresMigrator.d.mts +1 -1
  40. package/dist/PostgresMigrator.mjs +1 -1
  41. package/dist/PostgresObjectionMigrator-BG6ymgnt.cjs +2 -1
  42. package/dist/PostgresObjectionMigrator-BG6ymgnt.cjs.map +1 -0
  43. package/dist/PostgresObjectionMigrator-CZHHcCOv.d.cts +2 -1
  44. package/dist/{PostgresObjectionMigrator-G4h5FLvU.mjs → PostgresObjectionMigrator-DPj2pOpX.mjs} +3 -2
  45. package/dist/PostgresObjectionMigrator-DPj2pOpX.mjs.map +1 -0
  46. package/dist/{PostgresObjectionMigrator-C69n7vzr.d.mts → PostgresObjectionMigrator-D_hCcrQu.d.mts} +3 -2
  47. package/dist/PostgresObjectionMigrator.d.mts +2 -2
  48. package/dist/PostgresObjectionMigrator.mjs +2 -2
  49. package/dist/VitestKyselyTransactionIsolator-BxjlD1YM.mjs +2 -1
  50. package/dist/VitestKyselyTransactionIsolator-BxjlD1YM.mjs.map +1 -0
  51. package/dist/{VitestKyselyTransactionIsolator-CnxpE9cH.d.mts → VitestKyselyTransactionIsolator-COCVfvfr.d.mts} +3 -2
  52. package/dist/VitestKyselyTransactionIsolator-Cst3vFjb.cjs +2 -1
  53. package/dist/VitestKyselyTransactionIsolator-Cst3vFjb.cjs.map +1 -0
  54. package/dist/VitestKyselyTransactionIsolator-DYUYVEh9.d.cts +2 -1
  55. package/dist/VitestKyselyTransactionIsolator.d.mts +2 -2
  56. package/dist/VitestObjectionTransactionIsolator-BU-jXEhz.mjs +2 -1
  57. package/dist/VitestObjectionTransactionIsolator-BU-jXEhz.mjs.map +1 -0
  58. package/dist/VitestObjectionTransactionIsolator-CJ4ds5Qv.d.cts +2 -1
  59. package/dist/VitestObjectionTransactionIsolator-DzeF4UAq.cjs +2 -1
  60. package/dist/VitestObjectionTransactionIsolator-DzeF4UAq.cjs.map +1 -0
  61. package/dist/{VitestObjectionTransactionIsolator-DIM79dCq.d.mts → VitestObjectionTransactionIsolator-b973r9O1.d.mts} +3 -2
  62. package/dist/VitestObjectionTransactionIsolator.d.mts +2 -2
  63. package/dist/VitestTransactionIsolator-BQ5FpLtC.cjs +2 -1
  64. package/dist/VitestTransactionIsolator-BQ5FpLtC.cjs.map +1 -0
  65. package/dist/{VitestTransactionIsolator-zdyiS_SY.d.mts → VitestTransactionIsolator-CsfJBxcb.d.mts} +2 -1
  66. package/dist/VitestTransactionIsolator-CskiiJbW.mjs +2 -1
  67. package/dist/VitestTransactionIsolator-CskiiJbW.mjs.map +1 -0
  68. package/dist/VitestTransactionIsolator-DdLNODZg.d.cts +2 -1
  69. package/dist/VitestTransactionIsolator.d.mts +1 -1
  70. package/dist/aws.cjs +126 -0
  71. package/dist/aws.cjs.map +1 -0
  72. package/dist/aws.d.cts +22 -0
  73. package/dist/aws.d.mts +22 -0
  74. package/dist/aws.mjs +123 -0
  75. package/dist/aws.mjs.map +1 -0
  76. package/dist/directory-B-Ozljzk.mjs +22 -0
  77. package/dist/directory-B-Ozljzk.mjs.map +1 -0
  78. package/dist/directory-B4oYx02C.d.mts +12 -0
  79. package/dist/directory-BUcnztHI.d.cts +12 -0
  80. package/dist/directory-BVC8g7cX.cjs +28 -0
  81. package/dist/directory-BVC8g7cX.cjs.map +1 -0
  82. package/dist/faker-B14IEMIN.cjs +2 -1
  83. package/dist/faker-B14IEMIN.cjs.map +1 -0
  84. package/dist/faker-BGKYFoCT.mjs +2 -1
  85. package/dist/faker-BGKYFoCT.mjs.map +1 -0
  86. package/dist/{faker-BSH1EMtg.d.cts → faker-Cg76aFNO.d.cts} +4 -3
  87. package/dist/{faker-C-Iuk_R1.d.mts → faker-DHh7xs4u.d.mts} +4 -3
  88. package/dist/faker.d.cts +1 -1
  89. package/dist/faker.d.mts +1 -1
  90. package/dist/helpers.cjs +48 -2
  91. package/dist/helpers.cjs.map +1 -0
  92. package/dist/helpers.d.cts +2 -1
  93. package/dist/helpers.d.mts +2 -1
  94. package/dist/helpers.mjs +47 -2
  95. package/dist/helpers.mjs.map +1 -0
  96. package/dist/kysely.cjs +65 -2
  97. package/dist/kysely.cjs.map +1 -0
  98. package/dist/kysely.d.cts +5 -4
  99. package/dist/kysely.d.mts +9 -8
  100. package/dist/kysely.mjs +67 -4
  101. package/dist/kysely.mjs.map +1 -0
  102. package/dist/logger.cjs +23 -0
  103. package/dist/logger.cjs.map +1 -0
  104. package/dist/logger.d.cts +11 -0
  105. package/dist/logger.d.mts +11 -0
  106. package/dist/logger.mjs +22 -0
  107. package/dist/logger.mjs.map +1 -0
  108. package/dist/objection.cjs +80 -2
  109. package/dist/objection.cjs.map +1 -0
  110. package/dist/objection.d.cts +5 -4
  111. package/dist/objection.d.mts +9 -8
  112. package/dist/objection.mjs +82 -4
  113. package/dist/objection.mjs.map +1 -0
  114. package/dist/os/directory.cjs +3 -0
  115. package/dist/os/directory.d.cts +2 -0
  116. package/dist/os/directory.d.mts +2 -0
  117. package/dist/os/directory.mjs +3 -0
  118. package/dist/os/index.cjs +3 -0
  119. package/dist/os/index.d.cts +2 -0
  120. package/dist/os/index.d.mts +2 -0
  121. package/dist/os/index.mjs +3 -0
  122. package/dist/timer.cjs +9 -0
  123. package/dist/timer.cjs.map +1 -0
  124. package/dist/timer.d.cts +5 -0
  125. package/dist/timer.d.mts +5 -0
  126. package/dist/timer.mjs +8 -0
  127. package/dist/timer.mjs.map +1 -0
  128. package/package.json +24 -2
  129. package/src/aws.ts +131 -0
  130. package/src/logger.ts +18 -0
  131. package/src/os/directory.ts +21 -0
  132. package/src/os/index.ts +1 -0
  133. package/src/timer.ts +3 -0
  134. package/dist/__tests__/Factory.spec.cjs +0 -139
  135. package/dist/__tests__/Factory.spec.d.cts +0 -1
  136. package/dist/__tests__/Factory.spec.d.mts +0 -1
  137. package/dist/__tests__/Factory.spec.mjs +0 -138
  138. package/dist/__tests__/KyselyFactory.spec.cjs +0 -235
  139. package/dist/__tests__/KyselyFactory.spec.d.cts +0 -1
  140. package/dist/__tests__/KyselyFactory.spec.d.mts +0 -1
  141. package/dist/__tests__/KyselyFactory.spec.mjs +0 -234
  142. package/dist/__tests__/ObjectionFactory.spec.cjs +0 -340
  143. package/dist/__tests__/ObjectionFactory.spec.d.cts +0 -1
  144. package/dist/__tests__/ObjectionFactory.spec.d.mts +0 -1
  145. package/dist/__tests__/ObjectionFactory.spec.mjs +0 -339
  146. package/dist/__tests__/PostgresKyselyMigrator.spec.cjs +0 -397
  147. package/dist/__tests__/PostgresKyselyMigrator.spec.d.cts +0 -1
  148. package/dist/__tests__/PostgresKyselyMigrator.spec.d.mts +0 -1
  149. package/dist/__tests__/PostgresKyselyMigrator.spec.mjs +0 -396
  150. package/dist/__tests__/PostgresMigrator.spec.cjs +0 -256
  151. package/dist/__tests__/PostgresMigrator.spec.d.cts +0 -1
  152. package/dist/__tests__/PostgresMigrator.spec.d.mts +0 -1
  153. package/dist/__tests__/PostgresMigrator.spec.mjs +0 -255
  154. package/dist/__tests__/PostgresObjectionMigrator.spec.cjs +0 -432
  155. package/dist/__tests__/PostgresObjectionMigrator.spec.d.cts +0 -1
  156. package/dist/__tests__/PostgresObjectionMigrator.spec.d.mts +0 -1
  157. package/dist/__tests__/PostgresObjectionMigrator.spec.mjs +0 -431
  158. package/dist/__tests__/VitestObjectionTransactionIsolator.spec.cjs +0 -122
  159. package/dist/__tests__/VitestObjectionTransactionIsolator.spec.d.cts +0 -1
  160. package/dist/__tests__/VitestObjectionTransactionIsolator.spec.d.mts +0 -1
  161. package/dist/__tests__/VitestObjectionTransactionIsolator.spec.mjs +0 -121
  162. package/dist/__tests__/faker.spec.cjs +0 -115
  163. package/dist/__tests__/faker.spec.d.cts +0 -1
  164. package/dist/__tests__/faker.spec.d.mts +0 -1
  165. package/dist/__tests__/faker.spec.mjs +0 -114
  166. package/dist/__tests__/integration.spec.cjs +0 -282
  167. package/dist/__tests__/integration.spec.d.cts +0 -1
  168. package/dist/__tests__/integration.spec.d.mts +0 -1
  169. package/dist/__tests__/integration.spec.mjs +0 -281
  170. package/dist/helpers-B4TXg3Wp.mjs +0 -86
  171. package/dist/helpers-Bf0nXhbu.cjs +0 -116
  172. package/dist/helpers-BuPmgzyQ.mjs +0 -47
  173. package/dist/helpers-nEUtQ7eo.cjs +0 -53
  174. package/dist/kysely-C3h7kitU.mjs +0 -67
  175. package/dist/kysely-VU3MwvMD.cjs +0 -72
  176. package/dist/objection-BI7F86qf.mjs +0 -82
  177. package/dist/objection-BpLv_ZfC.cjs +0 -87
@@ -1,234 +0,0 @@
1
- import "../Factory-z2m01hMj.mjs";
2
- import "../faker-BGKYFoCT.mjs";
3
- import { KyselyFactory } from "../KyselyFactory-BcYkC0t2.mjs";
4
- import "../PostgresMigrator-DxPC_gGu.mjs";
5
- import "../PostgresKyselyMigrator-Bdhl251C.mjs";
6
- import "../VitestTransactionIsolator-CskiiJbW.mjs";
7
- import "../VitestKyselyTransactionIsolator-BxjlD1YM.mjs";
8
- import { createKyselyDb } from "../helpers-BuPmgzyQ.mjs";
9
- import { wrapVitestKyselyTransaction } from "../kysely-C3h7kitU.mjs";
10
- import { TEST_DATABASE_CONFIG, createTestTables } from "../helpers-B4TXg3Wp.mjs";
11
- import pg from "pg";
12
- import { describe, expect, it } from "vitest";
13
-
14
- //#region src/__tests__/KyselyFactory.spec.ts
15
- const db = () => createKyselyDb(TEST_DATABASE_CONFIG);
16
- const itWithTransaction = wrapVitestKyselyTransaction(it, db, createTestTables);
17
- const int8TypeId = 20;
18
- pg.types.setTypeParser(int8TypeId, (val) => {
19
- return parseInt(val, 10);
20
- });
21
- describe("KyselyFactory", () => {
22
- describe("KyselyFactory.insert", () => {
23
- itWithTransaction("should insert a record with defaults", async ({ trx }) => {
24
- const userBuilder = KyselyFactory.createBuilder("users", async (attrs) => ({
25
- name: "John Doe",
26
- email: `user${Date.now()}@example.com`,
27
- createdAt: /* @__PURE__ */ new Date()
28
- }));
29
- const builders = { user: userBuilder };
30
- const factory = new KyselyFactory(builders, {}, trx);
31
- const user = await factory.insert("user");
32
- expect(user).toBeDefined();
33
- expect(user.id).toBeDefined();
34
- expect(user.name).toBe("John Doe");
35
- expect(user.email).toContain("user");
36
- expect(user.email).toContain("@example.com");
37
- expect(user.createdAt).toBeInstanceOf(Date);
38
- });
39
- itWithTransaction("should override defaults with provided attributes", async ({ trx }) => {
40
- const userBuilder = KyselyFactory.createBuilder("users", async (attrs) => ({
41
- name: "John Doe",
42
- email: `user${Date.now()}@example.com`,
43
- createdAt: /* @__PURE__ */ new Date()
44
- }));
45
- const builders = { user: userBuilder };
46
- const factory = new KyselyFactory(builders, {}, trx);
47
- const customEmail = "custom@test.com";
48
- const customName = "Jane Smith";
49
- const user = await factory.insert("user", {
50
- email: customEmail,
51
- name: customName
52
- });
53
- expect(user.name).toBe(customName);
54
- expect(user.email).toBe(customEmail);
55
- });
56
- itWithTransaction("should handle relations", async ({ trx }) => {
57
- const userBuilder = KyselyFactory.createBuilder("users", async (attrs) => ({
58
- name: "John Doe",
59
- email: `user${Date.now()}@example.com`,
60
- createdAt: /* @__PURE__ */ new Date()
61
- }));
62
- const postBuilder = KyselyFactory.createBuilder("posts", async (attrs, factory$1) => {
63
- if (!attrs.userId) {
64
- const user = await factory$1.insert("user");
65
- return {
66
- title: "Default Post",
67
- content: "Default content",
68
- userId: user.id,
69
- createdAt: /* @__PURE__ */ new Date()
70
- };
71
- }
72
- return {
73
- title: "Default Post",
74
- content: "Default content",
75
- createdAt: /* @__PURE__ */ new Date()
76
- };
77
- });
78
- const builders = {
79
- user: userBuilder,
80
- post: postBuilder
81
- };
82
- const factory = new KyselyFactory(builders, {}, trx);
83
- const post = await factory.insert("post", { title: "Test Post" });
84
- expect(post).toBeDefined();
85
- expect(post.title).toBe("Test Post");
86
- expect(post.userId).toBeDefined();
87
- expect(typeof post.userId).toBe("number");
88
- });
89
- itWithTransaction("should throw error for non-existent builder", async ({ trx }) => {
90
- const factory = new KyselyFactory({}, {}, trx);
91
- await expect(factory.insert("nonExistent")).rejects.toThrow("Factory \"nonExistent\" does not exist");
92
- });
93
- });
94
- describe("KyselyFactory.insertMany", () => {
95
- itWithTransaction("should insert multiple records with same attributes", async ({ trx }) => {
96
- const userBuilder = KyselyFactory.createBuilder("users", async (attrs) => ({
97
- name: "John Doe",
98
- email: `user${Date.now()}-${Math.random()}@example.com`,
99
- createdAt: /* @__PURE__ */ new Date()
100
- }));
101
- const builders = { user: userBuilder };
102
- const factory = new KyselyFactory(builders, {}, trx);
103
- const users = await factory.insertMany(3, "user");
104
- expect(users).toHaveLength(3);
105
- users.forEach((user, index) => {
106
- expect(user.id).toBeDefined();
107
- expect(user.name).toBe("John Doe");
108
- expect(user.email).toContain("@example.com");
109
- });
110
- });
111
- itWithTransaction("should insert multiple records with dynamic attributes", async ({ trx }) => {
112
- const userBuilder = KyselyFactory.createBuilder("users", async (attrs) => ({
113
- email: `user${Date.now()}-${Math.random()}@example.com`,
114
- createdAt: /* @__PURE__ */ new Date()
115
- }));
116
- const builders = { user: userBuilder };
117
- const factory = new KyselyFactory(builders, {}, trx);
118
- const users = await factory.insertMany(3, "user", (idx) => ({ name: `User ${idx}` }));
119
- expect(users).toHaveLength(3);
120
- users.forEach((user, index) => {
121
- expect(user.name).toBe(`User ${index}`);
122
- });
123
- });
124
- itWithTransaction("should throw error for non-existent builder", async ({ trx }) => {
125
- const factory = new KyselyFactory({}, {}, trx);
126
- await expect(factory.insertMany(2, "nonExistent")).rejects.toThrow("Builder \"nonExistent\" is not registered");
127
- });
128
- });
129
- describe("KyselyFactory.createBuilder", () => {
130
- itWithTransaction("should work with async defaults", async ({ trx }) => {
131
- let counter = 0;
132
- const userBuilder = KyselyFactory.createBuilder("users", async (attrs) => {
133
- await new Promise((resolve) => setTimeout(resolve, 10));
134
- counter++;
135
- return {
136
- name: `Async User ${counter}`,
137
- email: `user${counter}@example.com`,
138
- createdAt: /* @__PURE__ */ new Date()
139
- };
140
- });
141
- const builders = { user: userBuilder };
142
- const factory = new KyselyFactory(builders, {}, trx);
143
- const user1 = await factory.insert("user");
144
- const user2 = await factory.insert("user");
145
- expect(user1.name).toBe("Async User 1");
146
- expect(user2.name).toBe("Async User 2");
147
- });
148
- });
149
- describe("KyselyFactory.seed", () => {
150
- itWithTransaction("should execute seed functions", async ({ trx }) => {
151
- const userBuilder = KyselyFactory.createBuilder("users", async (attrs) => ({
152
- name: "John Doe",
153
- email: `user${Date.now()}@example.com`,
154
- createdAt: /* @__PURE__ */ new Date()
155
- }));
156
- const builders = { user: userBuilder };
157
- const seeds = { createAdminUser: KyselyFactory.createSeed(async (attrs, factory$1, db$1) => {
158
- return await factory$1.insert("user", {
159
- name: attrs.name || "Admin User",
160
- email: "admin@example.com"
161
- });
162
- }) };
163
- const factory = new KyselyFactory(builders, seeds, trx);
164
- const adminUser = await factory.seed("createAdminUser");
165
- expect(adminUser).toBeDefined();
166
- expect(adminUser.name).toBe("Admin User");
167
- expect(adminUser.email).toBe("admin@example.com");
168
- });
169
- itWithTransaction("should pass attributes to seed functions", async ({ trx }) => {
170
- const userBuilder = KyselyFactory.createBuilder("users", async (attrs) => ({
171
- name: "John Doe",
172
- email: `user${Date.now()}@example.com`,
173
- createdAt: /* @__PURE__ */ new Date()
174
- }));
175
- const builders = { user: userBuilder };
176
- const seeds = { createCustomUser: KyselyFactory.createSeed(async (attrs, factory$1, db$1) => {
177
- return await factory$1.insert("user", attrs);
178
- }) };
179
- const factory = new KyselyFactory(builders, seeds, trx);
180
- const customUser = await factory.seed("createCustomUser", {
181
- name: "Custom User",
182
- email: "custom@test.com"
183
- });
184
- expect(customUser.name).toBe("Custom User");
185
- expect(customUser.email).toBe("custom@test.com");
186
- });
187
- itWithTransaction("should throw error for non-existent seed", async ({ trx }) => {
188
- const factory = new KyselyFactory({}, {}, trx);
189
- expect(() => factory.seed("nonExistent")).toThrow("Seed \"nonExistent\" is not registered");
190
- });
191
- });
192
- describe("Factory integration", () => {
193
- itWithTransaction("should work with controlled transactions", async ({ trx }) => {
194
- const userBuilder = KyselyFactory.createBuilder("users", async (attrs) => ({
195
- name: "John Doe",
196
- email: `user${Date.now()}@example.com`,
197
- createdAt: /* @__PURE__ */ new Date()
198
- }));
199
- const builders = { user: userBuilder };
200
- const factory = new KyselyFactory(builders, {}, trx);
201
- const user = await factory.insert("user");
202
- const foundUser = await trx.selectFrom("users").selectAll().where("id", "=", user.id).executeTakeFirst();
203
- expect(foundUser).toBeDefined();
204
- expect(foundUser?.id).toBe(user.id);
205
- });
206
- itWithTransaction("should work with factory passed to defaults", async ({ trx }) => {
207
- const userBuilder = KyselyFactory.createBuilder("users", async (attrs) => ({
208
- name: "John Doe",
209
- email: `user${Date.now()}@example.com`,
210
- createdAt: /* @__PURE__ */ new Date()
211
- }));
212
- const postBuilder = KyselyFactory.createBuilder("posts", async (attrs, factory$1) => {
213
- const user = await factory$1.insert("user");
214
- return {
215
- title: "Default Post",
216
- content: "Default content",
217
- userId: user.id,
218
- createdAt: /* @__PURE__ */ new Date()
219
- };
220
- });
221
- const builders = {
222
- user: userBuilder,
223
- post: postBuilder
224
- };
225
- const factory = new KyselyFactory(builders, {}, trx);
226
- const post = await factory.insert("post");
227
- expect(post.userId).toBeDefined();
228
- const relatedUser = await trx.selectFrom("users").selectAll().where("id", "=", post.userId).executeTakeFirst();
229
- expect(relatedUser).toBeDefined();
230
- });
231
- });
232
- });
233
-
234
- //#endregion
@@ -1,340 +0,0 @@
1
- const require_chunk = require('../chunk-CUT6urMc.cjs');
2
- require('../Factory-WMhTNZ9S.cjs');
3
- const require_faker = require('../faker-B14IEMIN.cjs');
4
- const require_ObjectionFactory = require('../ObjectionFactory-CDriunkS.cjs');
5
- require('../PostgresMigrator-DFcNdCvD.cjs');
6
- require('../PostgresObjectionMigrator-BG6ymgnt.cjs');
7
- require('../VitestTransactionIsolator-BQ5FpLtC.cjs');
8
- require('../VitestObjectionTransactionIsolator-DzeF4UAq.cjs');
9
- const require_objection = require('../objection-BpLv_ZfC.cjs');
10
- const require_helpers = require('../helpers-Bf0nXhbu.cjs');
11
- const vitest = require_chunk.__toESM(require("vitest"));
12
- const objection = require_chunk.__toESM(require("objection"));
13
-
14
- //#region src/__tests__/ObjectionFactory.spec.ts
15
- var User = class extends objection.Model {
16
- static get tableName() {
17
- return "users";
18
- }
19
- id;
20
- name;
21
- };
22
- var Post = class extends objection.Model {
23
- static get tableName() {
24
- return "posts";
25
- }
26
- id;
27
- title;
28
- user_id;
29
- };
30
- const it = require_objection.wrapVitestObjectionTransaction(vitest.test, require_helpers.createKnexDb, require_helpers.createTestTablesKnex);
31
- (0, vitest.describe)("ObjectionFactory", () => {
32
- it("should create an ObjectionFactory instance", ({ trx }) => {
33
- const builders = {};
34
- const seeds = {};
35
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, seeds, trx);
36
- (0, vitest.expect)(factory).toBeInstanceOf(require_ObjectionFactory.ObjectionFactory);
37
- });
38
- it("should call builder and insert the record", async ({ trx }) => {
39
- const userBuilder = async (attrs$1, factory$1, db) => {
40
- return User.fromJson({ name: attrs$1.name || "Default Name" });
41
- };
42
- const builders = { user: userBuilder };
43
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
44
- const attrs = {
45
- name: "John Doe",
46
- email: "john@example.com"
47
- };
48
- const result = await factory.insert("user", attrs);
49
- (0, vitest.expect)(result).toBeInstanceOf(User);
50
- (0, vitest.expect)(result.name).toBe("John Doe");
51
- (0, vitest.expect)(result.id).toBeDefined();
52
- });
53
- it("should use empty object as default attributes", async ({ trx }) => {
54
- const userBuilder = async (attrs, factory$1, db) => {
55
- return User.fromJson({ name: "Default Name" });
56
- };
57
- const builders = { user: userBuilder };
58
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
59
- const result = await factory.insert("user");
60
- (0, vitest.expect)(result).toBeInstanceOf(User);
61
- (0, vitest.expect)(result.name).toBe("Default Name");
62
- (0, vitest.expect)(result.id).toBeDefined();
63
- });
64
- it("should throw error for non-existent factory", async ({ trx }) => {
65
- const factory = new require_ObjectionFactory.ObjectionFactory({}, {}, trx);
66
- await (0, vitest.expect)(factory.insert("nonExistent")).rejects.toThrow("Factory \"nonExistent\" does not exist");
67
- });
68
- it("should handle builder that returns a promise", async ({ trx }) => {
69
- const userBuilder = async (attrs, factory$1, db) => {
70
- await new Promise((resolve) => setTimeout(resolve, 10));
71
- return User.fromJson({ name: attrs.name || "Default Name" });
72
- };
73
- const builders = { user: userBuilder };
74
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
75
- const result = await factory.insert("user", { name: "Jane" });
76
- (0, vitest.expect)(result).toBeInstanceOf(User);
77
- (0, vitest.expect)(result.name).toBe("Jane");
78
- });
79
- it("should insert multiple records with same attributes", async ({ trx }) => {
80
- const userBuilder = async (attrs$1, factory$1, db) => {
81
- return User.fromJson({ name: attrs$1.name || "Default Name" });
82
- };
83
- const builders = { user: userBuilder };
84
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
85
- const attrs = { name: "User" };
86
- const results = await factory.insertMany(3, "user", attrs);
87
- (0, vitest.expect)(results).toHaveLength(3);
88
- results.forEach((result) => {
89
- (0, vitest.expect)(result).toBeInstanceOf(User);
90
- (0, vitest.expect)(result.name).toBe("User");
91
- (0, vitest.expect)(result.id).toBeDefined();
92
- });
93
- });
94
- it("should insert multiple records with dynamic attributes", async ({ trx }) => {
95
- const userBuilder = async (attrs, factory$1, db) => {
96
- return User.fromJson({ name: attrs.name || "Default Name" });
97
- };
98
- const builders = { user: userBuilder };
99
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
100
- const attrsFn = (idx) => ({ name: `User ${idx}` });
101
- const results = await factory.insertMany(2, "user", attrsFn);
102
- (0, vitest.expect)(results).toHaveLength(2);
103
- (0, vitest.expect)(results[0].name).toBe("User 0");
104
- (0, vitest.expect)(results[1].name).toBe("User 1");
105
- results.forEach((result) => {
106
- (0, vitest.expect)(result).toBeInstanceOf(User);
107
- (0, vitest.expect)(result.id).toBeDefined();
108
- });
109
- });
110
- it("should use empty object as default attributes for insertMany", async ({ trx }) => {
111
- const userBuilder = async (attrs, factory$1, db) => {
112
- return User.fromJson({ name: "Default Name" });
113
- };
114
- const builders = { user: userBuilder };
115
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
116
- const results = await factory.insertMany(2, "user");
117
- (0, vitest.expect)(results).toHaveLength(2);
118
- results.forEach((result) => {
119
- (0, vitest.expect)(result).toBeInstanceOf(User);
120
- (0, vitest.expect)(result.name).toBe("Default Name");
121
- (0, vitest.expect)(result.id).toBeDefined();
122
- });
123
- });
124
- it("should throw error for non-existent builder in insertMany", async ({ trx }) => {
125
- const factory = new require_ObjectionFactory.ObjectionFactory({}, {}, trx);
126
- await (0, vitest.expect)(factory.insertMany(2, "nonExistent")).rejects.toThrow("Builder \"nonExistent\" is not registered");
127
- });
128
- it("should execute seed function", async ({ trx }) => {
129
- const userBuilder = async (attrs$1, factory$1, db) => {
130
- return User.fromJson({ name: attrs$1.name || "Default Name" });
131
- };
132
- const builders = { user: userBuilder };
133
- const createAdminSeed = async (attrs$1, factory$1, db) => {
134
- return await factory$1.insert("user", { name: attrs$1.name || "Admin User" });
135
- };
136
- const seeds = { createAdmin: createAdminSeed };
137
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, seeds, trx);
138
- const attrs = { name: "Super Admin" };
139
- const result = await factory.seed("createAdmin", attrs);
140
- (0, vitest.expect)(result).toBeInstanceOf(User);
141
- (0, vitest.expect)(result.name).toBe("Super Admin");
142
- (0, vitest.expect)(result.id).toBeDefined();
143
- });
144
- it("should use empty object as default attributes for seed", async ({ trx }) => {
145
- const userBuilder = async (attrs, factory$1, db) => {
146
- return User.fromJson({ name: "Default Admin" });
147
- };
148
- const builders = { user: userBuilder };
149
- const createAdminSeed = async (attrs, factory$1, db) => {
150
- return await factory$1.insert("user", {
151
- name: "Default Admin",
152
- role: "admin"
153
- });
154
- };
155
- const seeds = { createAdmin: createAdminSeed };
156
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, seeds, trx);
157
- const result = await factory.seed("createAdmin");
158
- (0, vitest.expect)(result).toBeInstanceOf(User);
159
- (0, vitest.expect)(result.name).toBe("Default Admin");
160
- });
161
- it("should throw error for non-existent seed", ({ trx }) => {
162
- const factory = new require_ObjectionFactory.ObjectionFactory({}, {}, trx);
163
- (0, vitest.expect)(() => factory.seed("nonExistent")).toThrow("Seed \"nonExistent\" is not registered");
164
- });
165
- it("should pass factory and db to seed function", async ({ trx }) => {
166
- const userBuilder = async (attrs, factory$1, db) => {
167
- return User.fromJson({ name: attrs.name || "Test User" });
168
- };
169
- const builders = { user: userBuilder };
170
- const complexSeed = async (attrs, passedFactory, passedDb) => {
171
- (0, vitest.expect)(passedFactory).toBe(factory);
172
- (0, vitest.expect)(passedDb).toBe(trx);
173
- return await passedFactory.insert("user", { name: `Complex ${attrs.data}` });
174
- };
175
- const seeds = { complexSeed };
176
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, seeds, trx);
177
- const result = await factory.seed("complexSeed", { data: "test" });
178
- (0, vitest.expect)(result).toBeInstanceOf(User);
179
- (0, vitest.expect)(result.name).toBe("Complex test");
180
- });
181
- it("should return the seed function unchanged", () => {
182
- const seedFn = async (attrs, factory, db) => {
183
- return {
184
- id: 1,
185
- name: "test"
186
- };
187
- };
188
- const result = require_ObjectionFactory.ObjectionFactory.createSeed(seedFn);
189
- (0, vitest.expect)(result).toBe(seedFn);
190
- });
191
- it("should create a builder function with auto-insert", async ({ trx }) => {
192
- const userBuilder = require_ObjectionFactory.ObjectionFactory.createBuilder(User, (attrs, factory$1, db, faker$1) => ({
193
- name: faker$1.person.fullName(),
194
- ...attrs
195
- }));
196
- const builders = { user: userBuilder };
197
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
198
- const result = await factory.insert("user", { name: "Test User" });
199
- (0, vitest.expect)(result).toBeInstanceOf(User);
200
- (0, vitest.expect)(result.name).toBe("Test User");
201
- (0, vitest.expect)(result.id).toBeDefined();
202
- });
203
- it("should create a builder function without auto-insert", async ({ trx }) => {
204
- const userBuilder = require_ObjectionFactory.ObjectionFactory.createBuilder(User, (attrs) => ({
205
- name: "No Insert User",
206
- ...attrs
207
- }), false);
208
- const builders = { user: userBuilder };
209
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
210
- const result = await factory.insert("user");
211
- (0, vitest.expect)(result).toBeInstanceOf(User);
212
- (0, vitest.expect)(result.name).toBe("No Insert User");
213
- (0, vitest.expect)(result.id).toBeDefined();
214
- });
215
- it("should pass all parameters to the item function", async ({ trx }) => {
216
- let capturedFactory;
217
- let capturedDb;
218
- let capturedFaker;
219
- const userBuilder = require_ObjectionFactory.ObjectionFactory.createBuilder(User, (attrs, factory$1, db, fakerInstance) => {
220
- capturedFactory = factory$1;
221
- capturedDb = db;
222
- capturedFaker = fakerInstance;
223
- return {
224
- name: "Test User",
225
- ...attrs
226
- };
227
- });
228
- const builders = { user: userBuilder };
229
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
230
- await factory.insert("user");
231
- (0, vitest.expect)(capturedFactory).toBe(factory);
232
- (0, vitest.expect)(capturedDb).toBe(trx);
233
- (0, vitest.expect)(capturedFaker).toBe(require_faker.faker);
234
- });
235
- it("should handle async item functions", async ({ trx }) => {
236
- const userBuilder = require_ObjectionFactory.ObjectionFactory.createBuilder(User, async (attrs, factory$1, db, faker$1) => {
237
- await new Promise((resolve) => setTimeout(resolve, 10));
238
- return {
239
- name: "Async User",
240
- ...attrs
241
- };
242
- });
243
- const builders = { user: userBuilder };
244
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
245
- const result = await factory.insert("user");
246
- (0, vitest.expect)(result).toBeInstanceOf(User);
247
- (0, vitest.expect)(result.name).toBe("Async User");
248
- (0, vitest.expect)(result.id).toBeDefined();
249
- });
250
- it("should work without item function", async ({ trx }) => {
251
- const userBuilder = require_ObjectionFactory.ObjectionFactory.createBuilder(User);
252
- const builders = { user: userBuilder };
253
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
254
- const attrs = { name: "Manual User" };
255
- const result = await factory.insert("user", attrs);
256
- (0, vitest.expect)(result).toBeInstanceOf(User);
257
- (0, vitest.expect)(result.name).toBe("Manual User");
258
- (0, vitest.expect)(result.id).toBeDefined();
259
- });
260
- it("should allow overriding default values", async ({ trx }) => {
261
- const userBuilder = require_ObjectionFactory.ObjectionFactory.createBuilder(User, (attrs, factory$1, db, faker$1) => ({
262
- name: "Default Name",
263
- ...attrs
264
- }));
265
- const builders = { user: userBuilder };
266
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
267
- const result = await factory.insert("user", { name: "Override Name" });
268
- (0, vitest.expect)(result).toBeInstanceOf(User);
269
- (0, vitest.expect)(result.name).toBe("Override Name");
270
- });
271
- it("should handle builder errors gracefully", async ({ trx }) => {
272
- const userBuilder = async (attrs, factory$1, db) => {
273
- throw new Error("Builder failed");
274
- };
275
- const builders = { user: userBuilder };
276
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
277
- await (0, vitest.expect)(factory.insert("user")).rejects.toThrow("Builder failed");
278
- });
279
- it("should handle invalid model data gracefully", async ({ trx }) => {
280
- const userBuilder = async (attrs, factory$1, db) => {
281
- return User.fromJson({ invalidField: "invalid" });
282
- };
283
- const builders = { user: userBuilder };
284
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
285
- await (0, vitest.expect)(factory.insert("user")).rejects.toThrow();
286
- });
287
- it("should handle seed function errors gracefully", async ({ trx }) => {
288
- const failingSeed = async (attrs, factory$1, db) => {
289
- throw new Error("Seed failed");
290
- };
291
- const seeds = { failingSeed };
292
- const factory = new require_ObjectionFactory.ObjectionFactory({}, seeds, trx);
293
- await (0, vitest.expect)(factory.seed("failingSeed")).rejects.toThrow("Seed failed");
294
- });
295
- it("should work with typed builders and seeds", async ({ trx }) => {
296
- const userBuilder = async (attrs, factory$1, db) => {
297
- return User.fromJson({ name: attrs.name || "Default User" });
298
- };
299
- const adminSeed = async (attrs, factory$1, db) => {
300
- return factory$1.insert("user", { name: "Admin" });
301
- };
302
- const builders = { user: userBuilder };
303
- const seeds = { admin: adminSeed };
304
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, seeds, trx);
305
- (0, vitest.expect)(factory).toBeInstanceOf(require_ObjectionFactory.ObjectionFactory);
306
- const admin = await factory.seed("admin", { isSuper: true });
307
- (0, vitest.expect)(admin).toBeInstanceOf(User);
308
- (0, vitest.expect)(admin.name).toBe("Admin");
309
- });
310
- it("should handle complex builder scenarios", async ({ trx }) => {
311
- const userBuilder = async (attrs, factory$1, db) => {
312
- return User.fromJson({ name: attrs.name || "Default User" });
313
- };
314
- const postBuilder = async (attrs, factory$1, db) => {
315
- if (!attrs.user_id) {
316
- const user = await factory$1.insert("user");
317
- return Post.fromJson({
318
- title: attrs.title || "Default Post",
319
- user_id: user.id
320
- });
321
- }
322
- return Post.fromJson({
323
- title: attrs.title || "Default Post",
324
- user_id: attrs.user_id
325
- });
326
- };
327
- const builders = {
328
- user: userBuilder,
329
- post: postBuilder
330
- };
331
- const factory = new require_ObjectionFactory.ObjectionFactory(builders, {}, trx);
332
- const post = await factory.insert("post", { title: "Test Post" });
333
- (0, vitest.expect)(post).toBeInstanceOf(Post);
334
- (0, vitest.expect)(post.title).toBe("Test Post");
335
- (0, vitest.expect)(post.user_id).toBeDefined();
336
- (0, vitest.expect)(typeof post.user_id).toBe("string");
337
- });
338
- });
339
-
340
- //#endregion
@@ -1 +0,0 @@
1
- export { };
@@ -1 +0,0 @@
1
- export { };