From 4efed80a2f8dc238b420eadf97d56c3eccaadb76 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Sun, 18 Oct 2026 22:22:55 +0200 Subject: refactor: inject the database into every service Groceries, projects, references and routines become classes holding the Drizzle handle, wired once in services/index.ts alongside categories. Tests build their own instance on an in-memory database. Drops the unused projects.loadAll and projects.rename. --- src/lib/server/services/references.test.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src/lib/server/services/references.test.ts') diff --git a/src/lib/server/services/references.test.ts b/src/lib/server/services/references.test.ts index fa3fc97..1f5d172 100644 --- a/src/lib/server/services/references.test.ts +++ b/src/lib/server/services/references.test.ts @@ -2,13 +2,15 @@ import { describe, it, expect, beforeEach } from 'vitest'; import { groceries, references } from '$lib/server/db/schema'; import { eq } from 'drizzle-orm'; import { createTestDb, type TestDb } from '$lib/server/db/test-helper'; -import { loadForGrocery, add, promote, deleteReference } from './references'; +import { ReferencesService } from './references'; describe('references service', () => { let db: TestDb['db']; + let service: ReferencesService; beforeEach(async () => { db = (await createTestDb()).db; + service = new ReferencesService(db); }); it('loadForGrocery returns refs for the given grocery', async () => { @@ -29,7 +31,7 @@ describe('references service', () => { { groceryId: g2.id, reference: 'Brand B' }, ]); - const refs = await loadForGrocery(g1.id, db); + const refs = await service.loadForGrocery(g1.id); expect(refs).toHaveLength(1); expect(refs[0].reference).toBe('Brand A'); }); @@ -49,7 +51,7 @@ describe('references service', () => { { groceryId: g.id, reference: 'D', qualityScore: 50 }, ]); - const refs = await loadForGrocery(g.id, db); + const refs = await service.loadForGrocery(g.id); expect(refs.map((r) => r.reference)).toEqual(['B', 'D', 'A', 'C']); }); @@ -62,7 +64,7 @@ describe('references service', () => { .values({ name: 'pasta', checked: false, createdAt: now }) .returning(); - const ref = await add(g.id, 'Barilla', 2.5, '€/kg', 85, db); + const ref = await service.add(g.id, 'Barilla', 2.5, '€/kg', 85); expect(ref.reference).toBe('Barilla'); expect(ref.price).toBe(2.5); @@ -90,12 +92,12 @@ describe('references service', () => { .values({ groceryId: g.id, reference: 'B' }) .returning(); - await promote(b.id, db); - let refs = await loadForGrocery(g.id, db); + await service.promote(b.id); + let refs = await service.loadForGrocery(g.id); expect(refs.map((r) => r.reference)).toEqual(['B', 'A']); - await promote(a.id, db); - refs = await loadForGrocery(g.id, db); + await service.promote(a.id); + refs = await service.loadForGrocery(g.id); expect(refs.map((r) => r.reference)).toEqual(['A', 'B']); const rows = await db @@ -119,7 +121,7 @@ describe('references service', () => { .values({ groceryId: g.id, reference: 'Brand X' }) .returning(); - await deleteReference(ref.id, db); + await service.deleteReference(ref.id); const rows = await db.select().from(references); expect(rows).toHaveLength(0); -- cgit v1.3