@superfunctions/db 0.1.0
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 +341 -0
- package/dist/adapter/capabilities.d.ts +51 -0
- package/dist/adapter/capabilities.d.ts.map +1 -0
- package/dist/adapter/capabilities.js +56 -0
- package/dist/adapter/capabilities.js.map +1 -0
- package/dist/adapter/errors.d.ts +111 -0
- package/dist/adapter/errors.d.ts.map +1 -0
- package/dist/adapter/errors.js +172 -0
- package/dist/adapter/errors.js.map +1 -0
- package/dist/adapter/factory.d.ts +10 -0
- package/dist/adapter/factory.d.ts.map +1 -0
- package/dist/adapter/factory.js +232 -0
- package/dist/adapter/factory.js.map +1 -0
- package/dist/adapter/types.d.ts +255 -0
- package/dist/adapter/types.d.ts.map +1 -0
- package/dist/adapter/types.js +5 -0
- package/dist/adapter/types.js.map +1 -0
- package/dist/adapters/drizzle/index.d.ts +20 -0
- package/dist/adapters/drizzle/index.d.ts.map +1 -0
- package/dist/adapters/drizzle/index.js +346 -0
- package/dist/adapters/drizzle/index.js.map +1 -0
- package/dist/adapters/index.d.ts +12 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +12 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/kysely/index.d.ts +18 -0
- package/dist/adapters/kysely/index.d.ts.map +1 -0
- package/dist/adapters/kysely/index.js +305 -0
- package/dist/adapters/kysely/index.js.map +1 -0
- package/dist/adapters/memory/index.d.ts +17 -0
- package/dist/adapters/memory/index.d.ts.map +1 -0
- package/dist/adapters/memory/index.js +362 -0
- package/dist/adapters/memory/index.js.map +1 -0
- package/dist/adapters/prisma/index.d.ts +16 -0
- package/dist/adapters/prisma/index.d.ts.map +1 -0
- package/dist/adapters/prisma/index.js +247 -0
- package/dist/adapters/prisma/index.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations/runtime-validation.d.ts +7 -0
- package/dist/migrations/runtime-validation.d.ts.map +1 -0
- package/dist/migrations/runtime-validation.js +40 -0
- package/dist/migrations/runtime-validation.js.map +1 -0
- package/dist/migrations/schema-tracker.d.ts +56 -0
- package/dist/migrations/schema-tracker.d.ts.map +1 -0
- package/dist/migrations/schema-tracker.js +121 -0
- package/dist/migrations/schema-tracker.js.map +1 -0
- package/dist/testing/contract-tests.d.ts +64 -0
- package/dist/testing/contract-tests.d.ts.map +1 -0
- package/dist/testing/contract-tests.js +391 -0
- package/dist/testing/contract-tests.js.map +1 -0
- package/dist/testing/index.d.ts +10 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +10 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mocks.d.ts +92 -0
- package/dist/testing/mocks.d.ts.map +1 -0
- package/dist/testing/mocks.js +197 -0
- package/dist/testing/mocks.js.map +1 -0
- package/dist/utils/namespace.d.ts +49 -0
- package/dist/utils/namespace.d.ts.map +1 -0
- package/dist/utils/namespace.js +85 -0
- package/dist/utils/namespace.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contract tests for adapter compliance
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Test adapter contract compliance
|
|
6
|
+
* Use with your test framework (vitest, jest, etc.)
|
|
7
|
+
*/
|
|
8
|
+
export function testAdapterContract(config) {
|
|
9
|
+
const { adapter, namespace } = config;
|
|
10
|
+
return {
|
|
11
|
+
/**
|
|
12
|
+
* Test CRUD operations
|
|
13
|
+
*/
|
|
14
|
+
async testCRUD() {
|
|
15
|
+
const tests = [];
|
|
16
|
+
// Test create
|
|
17
|
+
tests.push({
|
|
18
|
+
name: 'should create a record',
|
|
19
|
+
test: async () => {
|
|
20
|
+
const data = { name: 'Test User', email: 'test@example.com', age: 25 };
|
|
21
|
+
const result = await adapter.create({
|
|
22
|
+
model: 'users',
|
|
23
|
+
data,
|
|
24
|
+
namespace,
|
|
25
|
+
});
|
|
26
|
+
if (!result || typeof result !== 'object') {
|
|
27
|
+
throw new Error('Create should return an object');
|
|
28
|
+
}
|
|
29
|
+
if (!('id' in result)) {
|
|
30
|
+
throw new Error('Created record should have an id');
|
|
31
|
+
}
|
|
32
|
+
if (result.name !== data.name) {
|
|
33
|
+
throw new Error('Created record should contain the provided data');
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
// Test findOne
|
|
38
|
+
tests.push({
|
|
39
|
+
name: 'should find a record',
|
|
40
|
+
test: async () => {
|
|
41
|
+
const created = await adapter.create({
|
|
42
|
+
model: 'users',
|
|
43
|
+
data: { name: 'Find Me', email: 'find@example.com', age: 30 },
|
|
44
|
+
namespace,
|
|
45
|
+
});
|
|
46
|
+
const found = await adapter.findOne({
|
|
47
|
+
model: 'users',
|
|
48
|
+
where: [{ field: 'id', operator: 'eq', value: created.id }],
|
|
49
|
+
namespace,
|
|
50
|
+
});
|
|
51
|
+
if (!found) {
|
|
52
|
+
throw new Error('Should find the created record');
|
|
53
|
+
}
|
|
54
|
+
if (found.id !== created.id) {
|
|
55
|
+
throw new Error('Found record should match created record');
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
// Test findMany
|
|
60
|
+
tests.push({
|
|
61
|
+
name: 'should find multiple records',
|
|
62
|
+
test: async () => {
|
|
63
|
+
await adapter.create({
|
|
64
|
+
model: 'users',
|
|
65
|
+
data: { name: 'User 1', email: 'user1@example.com', age: 20 },
|
|
66
|
+
namespace,
|
|
67
|
+
});
|
|
68
|
+
await adapter.create({
|
|
69
|
+
model: 'users',
|
|
70
|
+
data: { name: 'User 2', email: 'user2@example.com', age: 25 },
|
|
71
|
+
namespace,
|
|
72
|
+
});
|
|
73
|
+
const results = await adapter.findMany({
|
|
74
|
+
model: 'users',
|
|
75
|
+
where: [],
|
|
76
|
+
namespace,
|
|
77
|
+
});
|
|
78
|
+
if (!Array.isArray(results)) {
|
|
79
|
+
throw new Error('findMany should return an array');
|
|
80
|
+
}
|
|
81
|
+
if (results.length < 2) {
|
|
82
|
+
throw new Error('Should find at least 2 records');
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
// Test update
|
|
87
|
+
tests.push({
|
|
88
|
+
name: 'should update a record',
|
|
89
|
+
test: async () => {
|
|
90
|
+
const created = await adapter.create({
|
|
91
|
+
model: 'users',
|
|
92
|
+
data: { name: 'Update Me', email: 'update@example.com', age: 30 },
|
|
93
|
+
namespace,
|
|
94
|
+
});
|
|
95
|
+
const updated = await adapter.update({
|
|
96
|
+
model: 'users',
|
|
97
|
+
where: [{ field: 'id', operator: 'eq', value: created.id }],
|
|
98
|
+
data: { age: 31 },
|
|
99
|
+
namespace,
|
|
100
|
+
});
|
|
101
|
+
if (updated.age !== 31) {
|
|
102
|
+
throw new Error('Record should be updated');
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
// Test delete
|
|
107
|
+
tests.push({
|
|
108
|
+
name: 'should delete a record',
|
|
109
|
+
test: async () => {
|
|
110
|
+
const created = await adapter.create({
|
|
111
|
+
model: 'users',
|
|
112
|
+
data: { name: 'Delete Me', email: 'delete@example.com', age: 30 },
|
|
113
|
+
namespace,
|
|
114
|
+
});
|
|
115
|
+
await adapter.delete({
|
|
116
|
+
model: 'users',
|
|
117
|
+
where: [{ field: 'id', operator: 'eq', value: created.id }],
|
|
118
|
+
namespace,
|
|
119
|
+
});
|
|
120
|
+
const found = await adapter.findOne({
|
|
121
|
+
model: 'users',
|
|
122
|
+
where: [{ field: 'id', operator: 'eq', value: created.id }],
|
|
123
|
+
namespace,
|
|
124
|
+
});
|
|
125
|
+
if (found !== null) {
|
|
126
|
+
throw new Error('Record should be deleted');
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
return tests;
|
|
131
|
+
},
|
|
132
|
+
/**
|
|
133
|
+
* Test batch operations
|
|
134
|
+
*/
|
|
135
|
+
async testBatch() {
|
|
136
|
+
if (!adapter.capabilities.operations.batch) {
|
|
137
|
+
return [];
|
|
138
|
+
}
|
|
139
|
+
const tests = [];
|
|
140
|
+
tests.push({
|
|
141
|
+
name: 'should create multiple records',
|
|
142
|
+
test: async () => {
|
|
143
|
+
const data = [
|
|
144
|
+
{ name: 'Batch 1', email: 'batch1@example.com', age: 20 },
|
|
145
|
+
{ name: 'Batch 2', email: 'batch2@example.com', age: 25 },
|
|
146
|
+
];
|
|
147
|
+
const results = await adapter.createMany({
|
|
148
|
+
model: 'users',
|
|
149
|
+
data,
|
|
150
|
+
namespace,
|
|
151
|
+
});
|
|
152
|
+
if (!Array.isArray(results)) {
|
|
153
|
+
throw new Error('createMany should return an array');
|
|
154
|
+
}
|
|
155
|
+
if (results.length !== data.length) {
|
|
156
|
+
throw new Error('Should create all records');
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
return tests;
|
|
161
|
+
},
|
|
162
|
+
/**
|
|
163
|
+
* Test advanced operations
|
|
164
|
+
*/
|
|
165
|
+
async testAdvanced() {
|
|
166
|
+
const tests = [];
|
|
167
|
+
// Test count
|
|
168
|
+
tests.push({
|
|
169
|
+
name: 'should count records',
|
|
170
|
+
test: async () => {
|
|
171
|
+
await adapter.create({
|
|
172
|
+
model: 'users',
|
|
173
|
+
data: { name: 'Count 1', email: 'count1@example.com', age: 20 },
|
|
174
|
+
namespace,
|
|
175
|
+
});
|
|
176
|
+
await adapter.create({
|
|
177
|
+
model: 'users',
|
|
178
|
+
data: { name: 'Count 2', email: 'count2@example.com', age: 25 },
|
|
179
|
+
namespace,
|
|
180
|
+
});
|
|
181
|
+
const count = await adapter.count({
|
|
182
|
+
model: 'users',
|
|
183
|
+
namespace,
|
|
184
|
+
});
|
|
185
|
+
if (typeof count !== 'number' || count < 2) {
|
|
186
|
+
throw new Error('Count should return the number of records');
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
// Test upsert (if supported)
|
|
191
|
+
if (adapter.capabilities.operations.upsert) {
|
|
192
|
+
tests.push({
|
|
193
|
+
name: 'should upsert a record',
|
|
194
|
+
test: async () => {
|
|
195
|
+
const email = 'upsert@example.com';
|
|
196
|
+
// First upsert (create)
|
|
197
|
+
const result1 = await adapter.upsert({
|
|
198
|
+
model: 'users',
|
|
199
|
+
where: [{ field: 'email', operator: 'eq', value: email }],
|
|
200
|
+
create: { name: 'Upsert User', email, age: 30 },
|
|
201
|
+
update: { age: 31 },
|
|
202
|
+
namespace,
|
|
203
|
+
});
|
|
204
|
+
if (!result1 || result1.age !== 30) {
|
|
205
|
+
throw new Error('First upsert should create');
|
|
206
|
+
}
|
|
207
|
+
// Second upsert (update)
|
|
208
|
+
const result2 = await adapter.upsert({
|
|
209
|
+
model: 'users',
|
|
210
|
+
where: [{ field: 'email', operator: 'eq', value: email }],
|
|
211
|
+
create: { name: 'Upsert User', email, age: 30 },
|
|
212
|
+
update: { age: 31 },
|
|
213
|
+
namespace,
|
|
214
|
+
});
|
|
215
|
+
if (!result2 || result2.age !== 31) {
|
|
216
|
+
throw new Error('Second upsert should update');
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
return tests;
|
|
222
|
+
},
|
|
223
|
+
/**
|
|
224
|
+
* Test lifecycle operations
|
|
225
|
+
*/
|
|
226
|
+
async testLifecycle() {
|
|
227
|
+
const tests = [];
|
|
228
|
+
tests.push({
|
|
229
|
+
name: 'should initialize',
|
|
230
|
+
test: async () => {
|
|
231
|
+
await adapter.initialize();
|
|
232
|
+
},
|
|
233
|
+
});
|
|
234
|
+
tests.push({
|
|
235
|
+
name: 'should check health',
|
|
236
|
+
test: async () => {
|
|
237
|
+
const health = await adapter.isHealthy();
|
|
238
|
+
if (typeof health !== 'object' || typeof health.healthy !== 'boolean') {
|
|
239
|
+
throw new Error('isHealthy should return a health status object');
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
});
|
|
243
|
+
tests.push({
|
|
244
|
+
name: 'should get/set schema version',
|
|
245
|
+
test: async () => {
|
|
246
|
+
await adapter.setSchemaVersion('test', 1);
|
|
247
|
+
const version = await adapter.getSchemaVersion('test');
|
|
248
|
+
if (version !== 1) {
|
|
249
|
+
throw new Error('Schema version should be set and retrieved correctly');
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
});
|
|
253
|
+
return tests;
|
|
254
|
+
},
|
|
255
|
+
/**
|
|
256
|
+
* Run all contract tests
|
|
257
|
+
*/
|
|
258
|
+
async runAll() {
|
|
259
|
+
const allTests = [
|
|
260
|
+
...(await this.testCRUD()),
|
|
261
|
+
...(await this.testBatch()),
|
|
262
|
+
...(await this.testAdvanced()),
|
|
263
|
+
...(await this.testLifecycle()),
|
|
264
|
+
];
|
|
265
|
+
const results = {
|
|
266
|
+
total: allTests.length,
|
|
267
|
+
passed: 0,
|
|
268
|
+
failed: 0,
|
|
269
|
+
errors: [],
|
|
270
|
+
};
|
|
271
|
+
for (const test of allTests) {
|
|
272
|
+
try {
|
|
273
|
+
if (config.beforeEach) {
|
|
274
|
+
await config.beforeEach();
|
|
275
|
+
}
|
|
276
|
+
await test.test();
|
|
277
|
+
results.passed++;
|
|
278
|
+
if (config.afterEach) {
|
|
279
|
+
await config.afterEach();
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
catch (error) {
|
|
283
|
+
results.failed++;
|
|
284
|
+
results.errors.push({
|
|
285
|
+
name: test.name,
|
|
286
|
+
error: error,
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return results;
|
|
291
|
+
},
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Helper function to run contract tests with a test framework
|
|
296
|
+
* Pass your test framework's describe, it, beforeEach, afterEach functions
|
|
297
|
+
*/
|
|
298
|
+
export function describeAdapterContract(name, config, describe, it, beforeEach, afterEach) {
|
|
299
|
+
describe(`Adapter Contract: ${name}`, () => {
|
|
300
|
+
const tests = testAdapterContract(config);
|
|
301
|
+
describe('CRUD Operations', () => {
|
|
302
|
+
if (beforeEach) {
|
|
303
|
+
beforeEach(async () => {
|
|
304
|
+
if (config.beforeEach)
|
|
305
|
+
await config.beforeEach();
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
if (afterEach) {
|
|
309
|
+
afterEach(async () => {
|
|
310
|
+
if (config.afterEach)
|
|
311
|
+
await config.afterEach();
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
it('should create a record', async () => {
|
|
315
|
+
const crudTests = await tests.testCRUD();
|
|
316
|
+
await crudTests[0].test();
|
|
317
|
+
});
|
|
318
|
+
it('should find a record', async () => {
|
|
319
|
+
const crudTests = await tests.testCRUD();
|
|
320
|
+
await crudTests[1].test();
|
|
321
|
+
});
|
|
322
|
+
it('should find multiple records', async () => {
|
|
323
|
+
const crudTests = await tests.testCRUD();
|
|
324
|
+
await crudTests[2].test();
|
|
325
|
+
});
|
|
326
|
+
it('should update a record', async () => {
|
|
327
|
+
const crudTests = await tests.testCRUD();
|
|
328
|
+
await crudTests[3].test();
|
|
329
|
+
});
|
|
330
|
+
it('should delete a record', async () => {
|
|
331
|
+
const crudTests = await tests.testCRUD();
|
|
332
|
+
await crudTests[4].test();
|
|
333
|
+
});
|
|
334
|
+
});
|
|
335
|
+
if (config.adapter.capabilities.operations.batch) {
|
|
336
|
+
describe('Batch Operations', () => {
|
|
337
|
+
if (beforeEach) {
|
|
338
|
+
beforeEach(async () => {
|
|
339
|
+
if (config.beforeEach)
|
|
340
|
+
await config.beforeEach();
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
if (afterEach) {
|
|
344
|
+
afterEach(async () => {
|
|
345
|
+
if (config.afterEach)
|
|
346
|
+
await config.afterEach();
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
it('should create multiple records', async () => {
|
|
350
|
+
const batchTests = await tests.testBatch();
|
|
351
|
+
if (batchTests.length > 0) {
|
|
352
|
+
await batchTests[0].test();
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
describe('Advanced Operations', () => {
|
|
358
|
+
if (beforeEach) {
|
|
359
|
+
beforeEach(async () => {
|
|
360
|
+
if (config.beforeEach)
|
|
361
|
+
await config.beforeEach();
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
if (afterEach) {
|
|
365
|
+
afterEach(async () => {
|
|
366
|
+
if (config.afterEach)
|
|
367
|
+
await config.afterEach();
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
it('should count records', async () => {
|
|
371
|
+
const advancedTests = await tests.testAdvanced();
|
|
372
|
+
await advancedTests[0].test();
|
|
373
|
+
});
|
|
374
|
+
});
|
|
375
|
+
describe('Lifecycle', () => {
|
|
376
|
+
it('should initialize', async () => {
|
|
377
|
+
const lifecycleTests = await tests.testLifecycle();
|
|
378
|
+
await lifecycleTests[0].test();
|
|
379
|
+
});
|
|
380
|
+
it('should check health', async () => {
|
|
381
|
+
const lifecycleTests = await tests.testLifecycle();
|
|
382
|
+
await lifecycleTests[1].test();
|
|
383
|
+
});
|
|
384
|
+
it('should manage schema versions', async () => {
|
|
385
|
+
const lifecycleTests = await tests.testLifecycle();
|
|
386
|
+
await lifecycleTests[2].test();
|
|
387
|
+
});
|
|
388
|
+
});
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=contract-tests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-tests.js","sourceRoot":"","sources":["../../src/testing/contract-tests.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Testing utilities
|
|
3
|
+
*/
|
|
4
|
+
export { memoryAdapter } from '../adapters/memory/index.js';
|
|
5
|
+
export type { MemoryAdapterConfig } from '../adapters/memory/index.js';
|
|
6
|
+
export { testAdapterContract, describeAdapterContract } from './contract-tests.js';
|
|
7
|
+
export type { AdapterTestConfig } from './contract-tests.js';
|
|
8
|
+
export { MockAdapter, createMockAdapter } from './mocks.js';
|
|
9
|
+
export type { MockCall } from './mocks.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGvE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnF,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC5D,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Testing utilities
|
|
3
|
+
*/
|
|
4
|
+
// Re-export memory adapter for testing
|
|
5
|
+
export { memoryAdapter } from '../adapters/memory/index.js';
|
|
6
|
+
// Contract test utilities
|
|
7
|
+
export { testAdapterContract, describeAdapterContract } from './contract-tests.js';
|
|
8
|
+
// Mock adapter
|
|
9
|
+
export { MockAdapter, createMockAdapter } from './mocks.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,uCAAuC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,0BAA0B;AAC1B,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAGnF,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock adapter for testing with call tracking
|
|
3
|
+
*/
|
|
4
|
+
import type { Adapter, CreateParams, FindOneParams, FindManyParams, UpdateParams, DeleteParams, CreateManyParams, UpdateManyParams, DeleteManyParams, UpsertParams, CountParams, TransactionAdapter, TableSchema, ValidationResult, HealthStatus } from '../adapter/types.js';
|
|
5
|
+
export interface MockCall {
|
|
6
|
+
method: string;
|
|
7
|
+
params: any;
|
|
8
|
+
timestamp: Date;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Mock adapter for testing
|
|
12
|
+
* Records all method calls and allows inspection
|
|
13
|
+
*/
|
|
14
|
+
export declare class MockAdapter implements Adapter {
|
|
15
|
+
calls: MockCall[];
|
|
16
|
+
private responses;
|
|
17
|
+
private errors;
|
|
18
|
+
readonly id = "mock";
|
|
19
|
+
readonly name = "Mock Adapter";
|
|
20
|
+
readonly version = "1.0.0";
|
|
21
|
+
readonly capabilities: import("../index.js").AdapterCapabilities;
|
|
22
|
+
/**
|
|
23
|
+
* Set a mock response for a specific method
|
|
24
|
+
*/
|
|
25
|
+
setResponse(method: string, response: any): void;
|
|
26
|
+
/**
|
|
27
|
+
* Set an error to throw for a specific method
|
|
28
|
+
*/
|
|
29
|
+
setError(method: string, error: Error): void;
|
|
30
|
+
/**
|
|
31
|
+
* Record a method call
|
|
32
|
+
*/
|
|
33
|
+
private recordCall;
|
|
34
|
+
/**
|
|
35
|
+
* Get a mock response or throw error if configured
|
|
36
|
+
*/
|
|
37
|
+
private getResponse;
|
|
38
|
+
create<T = any>(params: CreateParams): Promise<T>;
|
|
39
|
+
findOne<T = any>(params: FindOneParams): Promise<T | null>;
|
|
40
|
+
findMany<T = any>(params: FindManyParams): Promise<T[]>;
|
|
41
|
+
update<T = any>(params: UpdateParams): Promise<T>;
|
|
42
|
+
delete(params: DeleteParams): Promise<void>;
|
|
43
|
+
createMany<T = any>(params: CreateManyParams): Promise<T[]>;
|
|
44
|
+
updateMany(params: UpdateManyParams): Promise<number>;
|
|
45
|
+
deleteMany(params: DeleteManyParams): Promise<number>;
|
|
46
|
+
upsert<T = any>(params: UpsertParams): Promise<T>;
|
|
47
|
+
count(params: CountParams): Promise<number>;
|
|
48
|
+
transaction<R>(_callback: (trx: TransactionAdapter) => Promise<R>): Promise<R>;
|
|
49
|
+
initialize(): Promise<void>;
|
|
50
|
+
isHealthy(): Promise<HealthStatus>;
|
|
51
|
+
close(): Promise<void>;
|
|
52
|
+
getSchemaVersion(namespace: string): Promise<number>;
|
|
53
|
+
setSchemaVersion(namespace: string, version: number): Promise<void>;
|
|
54
|
+
validateSchema(_schema: TableSchema): Promise<ValidationResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Get all calls for a specific method
|
|
57
|
+
*/
|
|
58
|
+
getCalls(method?: string): MockCall[];
|
|
59
|
+
/**
|
|
60
|
+
* Get the last call for a specific method
|
|
61
|
+
*/
|
|
62
|
+
getLastCall(method: string): MockCall | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Check if a method was called
|
|
65
|
+
*/
|
|
66
|
+
wasCalled(method: string): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Check how many times a method was called
|
|
69
|
+
*/
|
|
70
|
+
getCallCount(method?: string): number;
|
|
71
|
+
/**
|
|
72
|
+
* Clear all recorded calls
|
|
73
|
+
*/
|
|
74
|
+
clearCalls(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Clear all mock responses and errors
|
|
77
|
+
*/
|
|
78
|
+
clearMocks(): void;
|
|
79
|
+
/**
|
|
80
|
+
* Reset the mock adapter completely
|
|
81
|
+
*/
|
|
82
|
+
reset(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Verify that a method was called with specific parameters
|
|
85
|
+
*/
|
|
86
|
+
verifyCall(method: string, params?: Partial<any>): boolean;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Create a mock adapter instance
|
|
90
|
+
*/
|
|
91
|
+
export declare function createMockAdapter(): MockAdapter;
|
|
92
|
+
//# sourceMappingURL=mocks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../src/testing/mocks.ts"],"names":[],"mappings":"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"}
|