aboutsummaryrefslogtreecommitdiff
path: root/src/lib/server/db/ondelete.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/server/db/ondelete.test.ts')
-rw-r--r--src/lib/server/db/ondelete.test.ts32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/lib/server/db/ondelete.test.ts b/src/lib/server/db/ondelete.test.ts
new file mode 100644
index 0000000..c2c86de
--- /dev/null
+++ b/src/lib/server/db/ondelete.test.ts
@@ -0,0 +1,32 @@
+import { describe, it, expect, beforeEach } from 'vitest';
+import { groceries, categories } from '$lib/server/db/schema';
+import { eq } from 'drizzle-orm';
+import { createTestDb } from './test-helper';
+
+describe('category delete behavior', () => {
+ let db: Awaited<ReturnType<typeof createTestDb>>['db'];
+
+ beforeEach(async () => {
+ const testDb = await createTestDb();
+ db = testDb.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();
+ });
+});