2026-01-19 16:35:00 -05:00
|
|
|
from django.core.exceptions import ValidationError
|
|
|
|
|
from django.db.utils import IntegrityError
|
2026-01-14 13:56:21 -05:00
|
|
|
from django.test import TestCase
|
|
|
|
|
from ..models import Item, List
|
|
|
|
|
|
|
|
|
|
class ListAndItemModelsTest(TestCase):
|
|
|
|
|
def test_saving_and_retrieving_items(self):
|
|
|
|
|
mylist = List()
|
|
|
|
|
mylist.save()
|
|
|
|
|
|
|
|
|
|
first_item = Item()
|
|
|
|
|
first_item.text = "The first (ever) list item"
|
|
|
|
|
first_item.list = mylist
|
|
|
|
|
first_item.save()
|
|
|
|
|
|
|
|
|
|
second_item = Item()
|
|
|
|
|
second_item.text = "A sequel somehow better than the first"
|
|
|
|
|
second_item.list = mylist
|
|
|
|
|
second_item.save()
|
|
|
|
|
|
|
|
|
|
saved_list = List.objects.get()
|
|
|
|
|
self.assertEqual(saved_list, mylist)
|
|
|
|
|
|
|
|
|
|
saved_items = Item.objects.all()
|
|
|
|
|
self.assertEqual(saved_items.count(), 2)
|
|
|
|
|
|
|
|
|
|
first_saved_item = saved_items[0]
|
|
|
|
|
second_saved_item = saved_items[1]
|
|
|
|
|
self.assertEqual(first_saved_item.text, "The first (ever) list item")
|
|
|
|
|
self.assertEqual(first_saved_item.list, mylist)
|
|
|
|
|
self.assertEqual(second_saved_item.text, "A sequel somehow better than the first")
|
|
|
|
|
self.assertEqual(second_saved_item.list, mylist)
|
2026-01-19 16:35:00 -05:00
|
|
|
|
|
|
|
|
def test_cannot_save_null_list_items(self):
|
|
|
|
|
mylist = List.objects.create()
|
|
|
|
|
item = Item(list=mylist, text=None)
|
|
|
|
|
with self.assertRaises(IntegrityError):
|
|
|
|
|
item.save()
|
|
|
|
|
|
|
|
|
|
def test_cannot_save_empty_list_items(self):
|
|
|
|
|
mylist = List.objects.create()
|
|
|
|
|
item = Item(list=mylist, text="")
|
|
|
|
|
with self.assertRaises(ValidationError):
|
|
|
|
|
item.full_clean()
|
2026-01-19 19:25:04 -05:00
|
|
|
|
|
|
|
|
def test_get_absolute_url(self):
|
|
|
|
|
mylist = List.objects.create()
|
|
|
|
|
self.assertEqual(mylist.get_absolute_url(), f"/apps/dashboard/{mylist.id}/")
|