@skillsmith/core 0.5.5 → 0.5.7

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.
@@ -85,8 +85,10 @@ describe('checkSchemaCompatibility', () => {
85
85
  });
86
86
  it('should return compatible + upgrade when schema is older', () => {
87
87
  const db = createTestDb();
88
- // Manually downgrade schema version
89
- db.prepare('UPDATE schema_version SET version = ?').run(SCHEMA_VERSION - 1);
88
+ // SMI-4486: schema_version now tracks every applied migration as a row;
89
+ // getSchemaVersion reads MAX(version). Drop higher-numbered rows to simulate
90
+ // an older DB rather than UPDATE-ing the column (which collides on PK).
91
+ db.prepare('DELETE FROM schema_version WHERE version > ?').run(SCHEMA_VERSION - 1);
90
92
  const result = checkSchemaCompatibility(db);
91
93
  expect(result.isCompatible).toBe(true);
92
94
  expect(result.action).toBe('upgrade');
@@ -95,8 +97,8 @@ describe('checkSchemaCompatibility', () => {
95
97
  });
96
98
  it('should return downgrade_warning when schema is newer (no breaking changes)', () => {
97
99
  const db = createTestDb();
98
- // Manually bump schema version beyond current
99
- db.prepare('UPDATE schema_version SET version = ?').run(SCHEMA_VERSION + 1);
100
+ // SMI-4486: append a future-version row instead of UPDATE-ing the column
101
+ db.prepare('INSERT INTO schema_version (version) VALUES (?)').run(SCHEMA_VERSION + 1);
100
102
  const result = checkSchemaCompatibility(db);
101
103
  expect(result.currentVersion).toBe(SCHEMA_VERSION + 1);
102
104
  // Could be downgrade_warning or incompatible depending on migration content
@@ -114,8 +116,8 @@ describe('ensureSchemaCompatibility', () => {
114
116
  });
115
117
  it('should throw for incompatible schema', () => {
116
118
  const db = createTestDb();
117
- // Set to a very high version that likely has breaking migrations
118
- db.prepare('UPDATE schema_version SET version = ?').run(9999);
119
+ // SMI-4486: append a future-version row to bump MAX(version)
120
+ db.prepare('INSERT INTO schema_version (version) VALUES (?)').run(9999);
119
121
  // This may or may not throw depending on migration content
120
122
  // At minimum, it should not crash
121
123
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"migration.test.js","sourceRoot":"","sources":["../../../tests/db/migration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration.test.js","sourceRoot":"","sources":["../../../tests/db/migration.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skillsmith/core",
3
- "version": "0.5.5",
3
+ "version": "0.5.7",
4
4
  "description": "Core types and utilities for Skillsmith",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",
@@ -79,7 +79,7 @@
79
79
  "stripe": "20.3.0",
80
80
  "tree-sitter-wasms": "0.1.13",
81
81
  "typescript": "5.9.3",
82
- "web-tree-sitter": "0.25.10",
82
+ "web-tree-sitter": "0.26.8",
83
83
  "zod": "4.2.1"
84
84
  },
85
85
  "devDependencies": {
@@ -107,6 +107,6 @@
107
107
  "llm"
108
108
  ],
109
109
  "engines": {
110
- "node": ">=22.0.0"
110
+ "node": ">=22.22.0"
111
111
  }
112
112
  }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=GDPRComplianceService.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GDPRComplianceService.test.d.ts","sourceRoot":"","sources":["../../../src/billing/GDPRComplianceService.test.ts"],"names":[],"mappings":""}
@@ -1,405 +0,0 @@
1
- import { beforeEach, describe, expect, it, vi } from 'vitest';
2
- import { GDPRComplianceService } from './GDPRComplianceService.js';
3
- function makeStmt(opts) {
4
- return {
5
- all: vi.fn().mockReturnValue(opts.allResult ?? []),
6
- get: vi.fn().mockReturnValue(opts.getResult),
7
- run: vi.fn().mockReturnValue(opts.runResult ?? { changes: 0, lastInsertRowid: 0 }),
8
- iterate: vi.fn(),
9
- finalize: vi.fn(),
10
- bind: vi.fn(),
11
- };
12
- }
13
- function makeMockDb() {
14
- return {
15
- prepare: vi.fn(),
16
- exec: vi.fn(),
17
- transaction: vi.fn(),
18
- pragma: vi.fn(),
19
- close: vi.fn(),
20
- open: true,
21
- name: ':memory:',
22
- memory: true,
23
- readonly: false,
24
- };
25
- }
26
- function makeMockStripe(deletesFn = vi.fn().mockResolvedValue({})) {
27
- return {
28
- getStripeInstance: vi.fn().mockReturnValue({
29
- customers: { del: deletesFn },
30
- }),
31
- };
32
- }
33
- // ---------------------------------------------------------------------------
34
- // Fixture data
35
- // ---------------------------------------------------------------------------
36
- const CUSTOMER_ID = 'user-abc-123';
37
- const STRIPE_CUSTOMER_ID = 'cus_stripe123';
38
- const SUB_ID = 'sub-001';
39
- const SUB_ROW = {
40
- id: SUB_ID,
41
- stripeSubscriptionId: 'stripe-sub-001',
42
- tier: 'individual',
43
- status: 'active',
44
- seatCount: 1,
45
- currentPeriodStart: '2026-01-01T00:00:00Z',
46
- currentPeriodEnd: '2026-02-01T00:00:00Z',
47
- canceledAt: null,
48
- createdAt: '2026-01-01T00:00:00Z',
49
- updatedAt: '2026-01-01T00:00:00Z',
50
- };
51
- const INVOICE_ROW = {
52
- id: 'inv-001',
53
- stripeInvoiceId: 'in_stripe001',
54
- amountCents: 999,
55
- currency: 'cad',
56
- status: 'paid',
57
- invoiceNumber: 'INV-001',
58
- paidAt: '2026-01-05T00:00:00Z',
59
- periodStart: '2026-01-01T00:00:00Z',
60
- periodEnd: '2026-02-01T00:00:00Z',
61
- createdAt: '2026-01-01T00:00:00Z',
62
- };
63
- const LICENSE_DB_ROW = {
64
- id: 'key-001',
65
- keyExpiry: '2027-01-01T00:00:00Z',
66
- isActive: 1,
67
- generatedAt: '2026-01-01T00:00:00Z',
68
- revokedAt: null,
69
- revocationReason: null,
70
- };
71
- const WEBHOOK_DB_ROW = {
72
- id: 'wh-001',
73
- stripeEventId: 'evt_001',
74
- eventType: 'customer.subscription.created',
75
- processedAt: '2026-01-01T00:00:00Z',
76
- success: 1,
77
- };
78
- // ---------------------------------------------------------------------------
79
- // exportCustomerData
80
- // ---------------------------------------------------------------------------
81
- describe('GDPRComplianceService.exportCustomerData', () => {
82
- let db;
83
- beforeEach(() => {
84
- db = makeMockDb();
85
- });
86
- function setupFullExport() {
87
- db.prepare
88
- // exportSubscriptions
89
- .mockReturnValueOnce(makeStmt({ allResult: [SUB_ROW] }))
90
- // exportInvoices
91
- .mockReturnValueOnce(makeStmt({ allResult: [INVOICE_ROW] }))
92
- // exportLicenseKeys: fetch subscription IDs
93
- .mockReturnValueOnce(makeStmt({ allResult: [{ id: SUB_ID }] }))
94
- // exportLicenseKeys: fetch keys
95
- .mockReturnValueOnce(makeStmt({ allResult: [LICENSE_DB_ROW] }))
96
- // exportWebhookEvents: fetch stripe customer ID
97
- .mockReturnValueOnce(makeStmt({ getResult: { stripe_customer_id: STRIPE_CUSTOMER_ID } }))
98
- // exportWebhookEvents: fetch events
99
- .mockReturnValueOnce(makeStmt({ allResult: [WEBHOOK_DB_ROW] }));
100
- }
101
- it('returns metadata with the correct customer ID, format, and version', () => {
102
- setupFullExport();
103
- const service = new GDPRComplianceService({ db });
104
- const result = service.exportCustomerData(CUSTOMER_ID);
105
- expect(result.metadata.customerId).toBe(CUSTOMER_ID);
106
- expect(result.metadata.format).toBe('json');
107
- expect(result.metadata.version).toBe('1.0');
108
- expect(result.metadata.exportedAt).toMatch(/^\d{4}-\d{2}-\d{2}T/);
109
- });
110
- it('returns subscriptions with all fields mapped', () => {
111
- setupFullExport();
112
- const service = new GDPRComplianceService({ db });
113
- const result = service.exportCustomerData(CUSTOMER_ID);
114
- expect(result.subscriptions).toHaveLength(1);
115
- expect(result.subscriptions[0]).toMatchObject({
116
- id: SUB_ID,
117
- tier: 'individual',
118
- status: 'active',
119
- });
120
- });
121
- it('defaults seatCount to 1 when the database row returns null', () => {
122
- db.prepare
123
- .mockReturnValueOnce(makeStmt({ allResult: [{ ...SUB_ROW, seatCount: null }] }))
124
- .mockReturnValueOnce(makeStmt({ allResult: [] }))
125
- .mockReturnValueOnce(makeStmt({ allResult: [] }))
126
- .mockReturnValueOnce(makeStmt({ getResult: undefined }));
127
- const service = new GDPRComplianceService({ db });
128
- const result = service.exportCustomerData(CUSTOMER_ID);
129
- expect(result.subscriptions[0]?.seatCount).toBe(1);
130
- });
131
- it('returns invoices with all fields mapped', () => {
132
- setupFullExport();
133
- const service = new GDPRComplianceService({ db });
134
- const result = service.exportCustomerData(CUSTOMER_ID);
135
- expect(result.invoices).toHaveLength(1);
136
- expect(result.invoices[0]).toMatchObject({ id: 'inv-001', amountCents: 999, currency: 'cad' });
137
- });
138
- it('converts isActive integer to boolean in license key export', () => {
139
- setupFullExport();
140
- const service = new GDPRComplianceService({ db });
141
- const result = service.exportCustomerData(CUSTOMER_ID);
142
- const key = result.licenseKeys[0];
143
- expect(typeof key.isActive).toBe('boolean');
144
- expect(key.isActive).toBe(true);
145
- });
146
- it('converts success integer to boolean in webhook event export', () => {
147
- setupFullExport();
148
- const service = new GDPRComplianceService({ db });
149
- const result = service.exportCustomerData(CUSTOMER_ID);
150
- const event = result.webhookEvents[0];
151
- expect(typeof event.success).toBe('boolean');
152
- expect(event.success).toBe(true);
153
- });
154
- it('returns empty licenseKeys when the customer has no subscriptions', () => {
155
- db.prepare
156
- .mockReturnValueOnce(makeStmt({ allResult: [] })) // exportSubscriptions
157
- .mockReturnValueOnce(makeStmt({ allResult: [] })) // exportInvoices
158
- .mockReturnValueOnce(makeStmt({ allResult: [] })) // exportLicenseKeys: sub IDs → empty
159
- .mockReturnValueOnce(makeStmt({ getResult: undefined })); // exportWebhookEvents: no stripe ID
160
- const service = new GDPRComplianceService({ db });
161
- const result = service.exportCustomerData(CUSTOMER_ID);
162
- expect(result.licenseKeys).toEqual([]);
163
- });
164
- it('returns empty webhookEvents when there is no Stripe customer ID', () => {
165
- db.prepare
166
- .mockReturnValueOnce(makeStmt({ allResult: [SUB_ROW] }))
167
- .mockReturnValueOnce(makeStmt({ allResult: [INVOICE_ROW] }))
168
- .mockReturnValueOnce(makeStmt({ allResult: [{ id: SUB_ID }] }))
169
- .mockReturnValueOnce(makeStmt({ allResult: [LICENSE_DB_ROW] }))
170
- .mockReturnValueOnce(makeStmt({ getResult: undefined })); // no Stripe customer
171
- const service = new GDPRComplianceService({ db });
172
- const result = service.exportCustomerData(CUSTOMER_ID);
173
- expect(result.webhookEvents).toEqual([]);
174
- });
175
- it('returns all four empty arrays for a customer with no data', () => {
176
- db.prepare
177
- .mockReturnValueOnce(makeStmt({ allResult: [] })) // subscriptions
178
- .mockReturnValueOnce(makeStmt({ allResult: [] })) // invoices
179
- .mockReturnValueOnce(makeStmt({ allResult: [] })) // sub IDs → empty
180
- .mockReturnValueOnce(makeStmt({ getResult: undefined })); // no Stripe customer
181
- const service = new GDPRComplianceService({ db });
182
- const result = service.exportCustomerData(CUSTOMER_ID);
183
- expect(result.subscriptions).toEqual([]);
184
- expect(result.invoices).toEqual([]);
185
- expect(result.licenseKeys).toEqual([]);
186
- expect(result.webhookEvents).toEqual([]);
187
- });
188
- });
189
- // ---------------------------------------------------------------------------
190
- // deleteCustomerData
191
- // ---------------------------------------------------------------------------
192
- describe('GDPRComplianceService.deleteCustomerData', () => {
193
- let db;
194
- beforeEach(() => {
195
- db = makeMockDb();
196
- });
197
- function setupLiveDeletion(stripeId = STRIPE_CUSTOMER_ID) {
198
- db.prepare
199
- // Stripe customer ID lookup (before transaction)
200
- .mockReturnValueOnce(makeStmt({ getResult: { stripe_customer_id: stripeId } }))
201
- // Sub IDs for license key deletion
202
- .mockReturnValueOnce(makeStmt({ allResult: [{ id: SUB_ID }] }))
203
- // DELETE license_keys
204
- .mockReturnValueOnce(makeStmt({ runResult: { changes: 2, lastInsertRowid: 0 } }))
205
- // DELETE invoices
206
- .mockReturnValueOnce(makeStmt({ runResult: { changes: 3, lastInsertRowid: 0 } }))
207
- // DELETE stripe_webhook_events
208
- .mockReturnValueOnce(makeStmt({ runResult: { changes: 1, lastInsertRowid: 0 } }))
209
- // DELETE user_subscriptions
210
- .mockReturnValueOnce(makeStmt({ runResult: { changes: 1, lastInsertRowid: 0 } }));
211
- }
212
- it('returns success=true with correct deletion counts', async () => {
213
- setupLiveDeletion();
214
- const service = new GDPRComplianceService({ db });
215
- const result = await service.deleteCustomerData(CUSTOMER_ID);
216
- expect(result.success).toBe(true);
217
- expect(result.customerId).toBe(CUSTOMER_ID);
218
- expect(result.counts.licenseKeys).toBe(2);
219
- expect(result.counts.invoices).toBe(3);
220
- expect(result.counts.webhookEvents).toBe(1);
221
- expect(result.counts.subscriptions).toBe(1);
222
- expect(result.errors).toEqual([]);
223
- });
224
- it('wraps deletion in a transaction (BEGIN and COMMIT are called)', async () => {
225
- setupLiveDeletion();
226
- const service = new GDPRComplianceService({ db });
227
- await service.deleteCustomerData(CUSTOMER_ID);
228
- expect(db.exec).toHaveBeenCalledWith('BEGIN TRANSACTION');
229
- expect(db.exec).toHaveBeenCalledWith('COMMIT');
230
- });
231
- it('rolls back and reports an error when a database operation throws', async () => {
232
- db.prepare
233
- .mockReturnValueOnce(makeStmt({ getResult: { stripe_customer_id: STRIPE_CUSTOMER_ID } }))
234
- .mockReturnValueOnce(makeStmt({ allResult: [{ id: SUB_ID }] }))
235
- .mockReturnValueOnce({
236
- ...makeStmt({}),
237
- run: vi.fn().mockImplementation(() => {
238
- throw new Error('disk I/O error');
239
- }),
240
- });
241
- const service = new GDPRComplianceService({ db });
242
- const result = await service.deleteCustomerData(CUSTOMER_ID);
243
- expect(result.success).toBe(false);
244
- expect(result.errors[0]).toContain('disk I/O error');
245
- expect(db.exec).toHaveBeenCalledWith('ROLLBACK');
246
- });
247
- it('skips license key deletion when the customer has no subscriptions', async () => {
248
- db.prepare
249
- .mockReturnValueOnce(makeStmt({ getResult: { stripe_customer_id: STRIPE_CUSTOMER_ID } }))
250
- .mockReturnValueOnce(makeStmt({ allResult: [] })) // no sub IDs
251
- .mockReturnValueOnce(makeStmt({ runResult: { changes: 0, lastInsertRowid: 0 } })) // invoices
252
- .mockReturnValueOnce(makeStmt({ runResult: { changes: 1, lastInsertRowid: 0 } })) // webhook events
253
- .mockReturnValueOnce(makeStmt({ runResult: { changes: 0, lastInsertRowid: 0 } })); // subscriptions
254
- const service = new GDPRComplianceService({ db });
255
- const result = await service.deleteCustomerData(CUSTOMER_ID);
256
- expect(result.success).toBe(true);
257
- expect(result.counts.licenseKeys).toBe(0);
258
- });
259
- it('skips webhook event deletion when there is no Stripe customer ID', async () => {
260
- db.prepare
261
- .mockReturnValueOnce(makeStmt({ getResult: undefined })) // no stripe ID
262
- .mockReturnValueOnce(makeStmt({ allResult: [] })) // sub IDs
263
- .mockReturnValueOnce(makeStmt({ runResult: { changes: 0, lastInsertRowid: 0 } })) // invoices
264
- .mockReturnValueOnce(makeStmt({ runResult: { changes: 0, lastInsertRowid: 0 } })); // subscriptions
265
- const service = new GDPRComplianceService({ db });
266
- const result = await service.deleteCustomerData(CUSTOMER_ID);
267
- expect(result.counts.webhookEvents).toBe(0);
268
- });
269
- it('calls Stripe customer deletion when deleteFromStripe is true (default)', async () => {
270
- setupLiveDeletion();
271
- const stripeDel = vi.fn().mockResolvedValue({});
272
- const service = new GDPRComplianceService({
273
- db,
274
- stripeClient: makeMockStripe(stripeDel),
275
- });
276
- await service.deleteCustomerData(CUSTOMER_ID);
277
- expect(stripeDel).toHaveBeenCalledWith(STRIPE_CUSTOMER_ID);
278
- });
279
- it('sets stripeDeleted=true after a successful Stripe deletion', async () => {
280
- setupLiveDeletion();
281
- const service = new GDPRComplianceService({
282
- db,
283
- stripeClient: makeMockStripe(),
284
- });
285
- const result = await service.deleteCustomerData(CUSTOMER_ID);
286
- expect(result.stripeDeleted).toBe(true);
287
- });
288
- it('does not call Stripe deletion when deleteFromStripe is false', async () => {
289
- setupLiveDeletion();
290
- const stripeDel = vi.fn();
291
- const service = new GDPRComplianceService({
292
- db,
293
- stripeClient: makeMockStripe(stripeDel),
294
- });
295
- await service.deleteCustomerData(CUSTOMER_ID, { deleteFromStripe: false });
296
- expect(stripeDel).not.toHaveBeenCalled();
297
- });
298
- it('adds a Stripe error to errors without failing the db deletion', async () => {
299
- setupLiveDeletion();
300
- const service = new GDPRComplianceService({
301
- db,
302
- stripeClient: makeMockStripe(vi.fn().mockRejectedValue(new Error('Stripe unavailable'))),
303
- });
304
- const result = await service.deleteCustomerData(CUSTOMER_ID);
305
- expect(result.errors).toHaveLength(1);
306
- expect(result.errors[0]).toContain('Stripe unavailable');
307
- expect(result.stripeDeleted).toBe(false);
308
- });
309
- describe('dryRun mode', () => {
310
- function setupDryRun(stripeId = STRIPE_CUSTOMER_ID) {
311
- db.prepare
312
- .mockReturnValueOnce(makeStmt({ getResult: { stripe_customer_id: stripeId } }))
313
- // sub IDs
314
- .mockReturnValueOnce(makeStmt({ allResult: [{ id: SUB_ID }] }))
315
- // COUNT license_keys
316
- .mockReturnValueOnce(makeStmt({ getResult: { count: 2 } }))
317
- // COUNT invoices
318
- .mockReturnValueOnce(makeStmt({ getResult: { count: 3 } }))
319
- // COUNT stripe_webhook_events
320
- .mockReturnValueOnce(makeStmt({ getResult: { count: 1 } }))
321
- // COUNT user_subscriptions
322
- .mockReturnValueOnce(makeStmt({ getResult: { count: 1 } }));
323
- }
324
- it('returns counts without executing any DELETE statements', async () => {
325
- setupDryRun();
326
- const service = new GDPRComplianceService({ db });
327
- const result = await service.deleteCustomerData(CUSTOMER_ID, { dryRun: true });
328
- expect(result.counts.licenseKeys).toBe(2);
329
- expect(result.counts.invoices).toBe(3);
330
- expect(result.counts.webhookEvents).toBe(1);
331
- expect(result.counts.subscriptions).toBe(1);
332
- });
333
- it('does not call BEGIN TRANSACTION or COMMIT in dry run', async () => {
334
- setupDryRun();
335
- const service = new GDPRComplianceService({ db });
336
- await service.deleteCustomerData(CUSTOMER_ID, { dryRun: true });
337
- expect(db.exec).not.toHaveBeenCalled();
338
- });
339
- it('does not call Stripe deletion in dry run', async () => {
340
- setupDryRun();
341
- const stripeDel = vi.fn();
342
- const service = new GDPRComplianceService({
343
- db,
344
- stripeClient: makeMockStripe(stripeDel),
345
- });
346
- await service.deleteCustomerData(CUSTOMER_ID, { dryRun: true });
347
- expect(stripeDel).not.toHaveBeenCalled();
348
- });
349
- it('returns success=true with no errors in dry run', async () => {
350
- setupDryRun();
351
- const service = new GDPRComplianceService({ db });
352
- const result = await service.deleteCustomerData(CUSTOMER_ID, { dryRun: true });
353
- expect(result.success).toBe(true);
354
- expect(result.errors).toEqual([]);
355
- });
356
- });
357
- });
358
- // ---------------------------------------------------------------------------
359
- // hasCustomerData
360
- // ---------------------------------------------------------------------------
361
- describe('GDPRComplianceService.hasCustomerData', () => {
362
- it('returns true when a subscription row exists', () => {
363
- const db = makeMockDb();
364
- db.prepare.mockReturnValueOnce(makeStmt({ getResult: { id: SUB_ID } }));
365
- const service = new GDPRComplianceService({ db });
366
- expect(service.hasCustomerData(CUSTOMER_ID)).toBe(true);
367
- });
368
- it('returns false when no subscription row exists', () => {
369
- const db = makeMockDb();
370
- db.prepare.mockReturnValueOnce(makeStmt({ getResult: undefined }));
371
- const service = new GDPRComplianceService({ db });
372
- expect(service.hasCustomerData(CUSTOMER_ID)).toBe(false);
373
- });
374
- });
375
- // ---------------------------------------------------------------------------
376
- // getDataSummary
377
- // ---------------------------------------------------------------------------
378
- describe('GDPRComplianceService.getDataSummary', () => {
379
- it('returns zeroed summary for a customer with no subscription', () => {
380
- const db = makeMockDb();
381
- db.prepare.mockReturnValueOnce(makeStmt({ getResult: undefined }));
382
- const service = new GDPRComplianceService({ db });
383
- const summary = service.getDataSummary(CUSTOMER_ID);
384
- expect(summary).toEqual({
385
- hasSubscription: false,
386
- invoiceCount: 0,
387
- licenseKeyCount: 0,
388
- stripeCustomerId: null,
389
- });
390
- });
391
- it('returns correct counts and Stripe customer ID for an existing customer', () => {
392
- const db = makeMockDb();
393
- db.prepare
394
- .mockReturnValueOnce(makeStmt({ getResult: { id: SUB_ID, stripe_customer_id: STRIPE_CUSTOMER_ID } }))
395
- .mockReturnValueOnce(makeStmt({ getResult: { count: 4 } })) // invoice count
396
- .mockReturnValueOnce(makeStmt({ getResult: { count: 2 } })); // license key count
397
- const service = new GDPRComplianceService({ db });
398
- const summary = service.getDataSummary(CUSTOMER_ID);
399
- expect(summary.hasSubscription).toBe(true);
400
- expect(summary.invoiceCount).toBe(4);
401
- expect(summary.licenseKeyCount).toBe(2);
402
- expect(summary.stripeCustomerId).toBe(STRIPE_CUSTOMER_ID);
403
- });
404
- });
405
- //# sourceMappingURL=GDPRComplianceService.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GDPRComplianceService.test.js","sourceRoot":"","sources":["../../../src/billing/GDPRComplianceService.test.ts"],"names":[],"mappings":"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"}