aboutsummaryrefslogtreecommitdiff
path: root/src/lib/server/services/references.test.ts
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2026-10-18 22:22:55 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2026-10-18 22:22:55 +0200
commit4efed80a2f8dc238b420eadf97d56c3eccaadb76 (patch)
tree7732a80745622c097a9e75dfb056603bceb10a23 /src/lib/server/services/references.test.ts
parent0685e9ece66fbcb09c9457027cf7bb2107cc0171 (diff)
refactor: inject the database into every servicemain
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.
Diffstat (limited to 'src/lib/server/services/references.test.ts')
-rw-r--r--src/lib/server/services/references.test.ts20
1 files changed, 11 insertions, 9 deletions
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);