diff options
Diffstat (limited to 'src/lib/server/services/references.test.ts')
| -rw-r--r-- | src/lib/server/services/references.test.ts | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/lib/server/services/references.test.ts b/src/lib/server/services/references.test.ts new file mode 100644 index 0000000..c02f9e6 --- /dev/null +++ b/src/lib/server/services/references.test.ts @@ -0,0 +1,70 @@ +import { describe, it, expect, beforeEach } from 'vitest'; +import { groceries, references } from '$lib/server/db/schema'; +import { eq } from 'drizzle-orm'; +import { createTestDb } from '$lib/server/db/test-helper'; +import { loadForGrocery, add, deleteReference } from './references'; + +describe('references service', () => { + let db: Awaited<ReturnType<typeof createTestDb>>['db']; + + beforeEach(async () => { + const testDb = await createTestDb(); + db = testDb.db; + }); + + it('loadForGrocery returns refs for the given grocery', async () => { + const now = new Date().toISOString(); + const [g1] = await db + .insert(groceries) + .values({ name: 'coffee', checked: false, createdAt: now }) + .returning(); + const [g2] = await db + .insert(groceries) + .values({ name: 'tea', checked: false, createdAt: now }) + .returning(); + + await db.insert(references).values([ + { groceryId: g1.id, reference: 'Brand A' }, + { groceryId: g2.id, reference: 'Brand B' }, + ]); + + const refs = await loadForGrocery(g1.id, db); + expect(refs).toHaveLength(1); + expect(refs[0].reference).toBe('Brand A'); + }); + + it('add creates a reference', async () => { + const now = new Date().toISOString(); + const [g] = await db + .insert(groceries) + .values({ name: 'pasta', checked: false, createdAt: now }) + .returning(); + + const ref = await add(g.id, 'Barilla', 2.5, '€/kg', 85, db); + expect(ref.reference).toBe('Barilla'); + expect(ref.price).toBe(2.5); + + const rows = await db + .select() + .from(references) + .where(eq(references.groceryId, g.id)); + expect(rows).toHaveLength(1); + }); + + it('deleteReference removes the ref', async () => { + const now = new Date().toISOString(); + const [g] = await db + .insert(groceries) + .values({ name: 'rice', checked: false, createdAt: now }) + .returning(); + const [ref] = await db + .insert(references) + .values({ groceryId: g.id, reference: 'Brand X' }) + .returning(); + + await deleteReference(ref.id, db); + + const rows = await db.select().from(references); + expect(rows).toHaveLength(0); + }); +}); |
