Files
python-tdd/src/apps/dashboard/tests/test_models.py

49 lines
1.7 KiB
Python
Raw Normal View History

from django.core.exceptions import ValidationError
from django.db.utils import IntegrityError
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)
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()
def test_get_absolute_url(self):
mylist = List.objects.create()
self.assertEqual(mylist.get_absolute_url(), f"/apps/dashboard/{mylist.id}/")