aboutsummaryrefslogtreecommitdiff
path: root/src/lib/server/db/ondelete.test.ts
blob: 347bb921bbbc2a7053a84dd5eb5a001709d7b639 (plain) (blame)
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

import { describe, it, expect, beforeEach } from 'vitest';
import { groceries, categories } from '$lib/server/db/schema';
import { eq } from 'drizzle-orm';
import { createTestDb, type TestDb } from './test-helper';

describe('category delete behavior', () => {
	let db: TestDb['db'];

	beforeEach(async () => {
		db = (await createTestDb()).db;
	});

	it('sets category_id to null when a referenced category is deleted', async () => {
		await db.insert(categories).values({ name: 'Boissons' });
		const cats = await db.select().from(categories);
		const catId = cats[0].id;

		await db.insert(groceries).values({
			name: 'lait',
			checked: false,
			createdAt: new Date().toISOString(),
			categoryId: catId,
		});

		await db.delete(categories).where(eq(categories.id, catId));

		const items = await db.select().from(groceries);
		expect(items).toHaveLength(1);
		expect(items[0].categoryId).toBeNull();
	});
});