From fa5700d9e89562a36e15a49225404d65b53de4f3 Mon Sep 17 00:00:00 2001 From: Disco DeDisco Date: Wed, 21 Jan 2026 15:29:47 -0500 Subject: [PATCH] added Meta class to Item() model to test for duplicate item/list entries --- src/apps/dashboard/models.py | 4 +++- src/apps/dashboard/tests/test_models.py | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/apps/dashboard/models.py b/src/apps/dashboard/models.py index cc40ed9..890780f 100644 --- a/src/apps/dashboard/models.py +++ b/src/apps/dashboard/models.py @@ -7,6 +7,8 @@ class List(models.Model): class Item(models.Model): - text = models.TextField(default='') + text = models.TextField(default="") list = models.ForeignKey(List, default=None, on_delete=models.CASCADE) + class Meta: + unique_together = ("list", "text") diff --git a/src/apps/dashboard/tests/test_models.py b/src/apps/dashboard/tests/test_models.py index 0e65abc..0a7e43b 100644 --- a/src/apps/dashboard/tests/test_models.py +++ b/src/apps/dashboard/tests/test_models.py @@ -46,3 +46,17 @@ class ListAndItemModelsTest(TestCase): def test_get_absolute_url(self): mylist = List.objects.create() self.assertEqual(mylist.get_absolute_url(), f"/apps/dashboard/{mylist.id}/") + + def test_duplicate_items_are_invalid(self): + mylist = List.objects.create() + Item.objects.create(list=mylist, text="jklol") + with self.assertRaises(ValidationError): + item = Item(list=mylist, text="jklol") + item.full_clean() + + def test_still_can_save_same_item_to_different_lists(self): + list1 = List.objects.create() + list2 = List.objects.create() + Item.objects.create(list=list1, text="nojk") + item = Item(list=list2, text="nojk") + item.full_clean() # should not raise