1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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);
});
});
|