from django.test import TestCase from ..forms import ( DUPLICATE_ITEM_ERROR, EMPTY_ITEM_ERROR, ExistingListItemForm, ItemForm, ) from ..models import Item, List class ItemFormTest(TestCase): def test_form_validation_for_blank_items(self): form = ItemForm(data={"text": ""}) form.save() def test_form_validation_for_blank_items(self): form = ItemForm(data={"text": ""}) self.assertFalse(form.is_valid()) self.assertEqual(form.errors["text"], [EMPTY_ITEM_ERROR]) def test_form_save_handles_saving_to_a_list(self): mylist = List.objects.create() form = ItemForm(data={"text": "do re mi"}) new_item = form.save(for_list=mylist) self.assertEqual(new_item, Item.objects.get()) self.assertEqual(new_item.text, "do re mi") self.assertEqual(new_item.list, mylist) class ExistingListItemFormTest(TestCase): def test_form_validation_for_blank_items(self): list_ = List.objects.create() form = ExistingListItemForm(for_list=list_, data={"text": ""}) self.assertFalse(form.is_valid()) self.assertEqual(form.errors["text"], [EMPTY_ITEM_ERROR]) def test_form_validation_for_duplicate_items(self): list_ = List.objects.create() Item.objects.create(list=list_, text="twins, basil") form = ExistingListItemForm(for_list=list_, data={"text": "twins, basil"}) self.assertFalse(form.is_valid()) self.assertEqual(form.errors["text"], [DUPLICATE_ITEM_ERROR]) def test_form_save(self): mylist = List.objects.create() form = ExistingListItemForm(for_list=mylist, data={"text": "howdy"}) self.assertTrue(form.is_valid()) new_item = form.save() self.assertEqual(new_item, Item.objects.get())