from django.test import TestCase from apps.dashboard.forms import ( DUPLICATE_ITEM_ERROR, EMPTY_ITEM_ERROR, ExistingNoteItemForm, ItemForm, ) from apps.dashboard.models import Item, Note class ItemFormTest(TestCase): def test_form_save_handles_saving_to_a_note(self): mynote = Note.objects.create() form = ItemForm(data={"text": "do re mi"}) self.assertTrue(form.is_valid()) new_item = form.save(for_note=mynote) self.assertEqual(new_item, Item.objects.get()) self.assertEqual(new_item.text, "do re mi") self.assertEqual(new_item.note, mynote) class ExistingNoteItemFormTest(TestCase): def test_form_validation_for_blank_items(self): note = Note.objects.create() form = ExistingNoteItemForm(for_note=note, data={"text": ""}) self.assertFalse(form.is_valid()) self.assertEqual(form.errors["text"], [EMPTY_ITEM_ERROR]) def test_form_validation_for_duplicate_items(self): note = Note.objects.create() Item.objects.create(note=note, text="twins, basil") form = ExistingNoteItemForm(for_note=note, data={"text": "twins, basil"}) self.assertFalse(form.is_valid()) self.assertEqual(form.errors["text"], [DUPLICATE_ITEM_ERROR]) def test_form_save(self): mynote = Note.objects.create() form = ExistingNoteItemForm(for_note=mynote, data={"text": "howdy"}) self.assertTrue(form.is_valid()) new_item = form.save() self.assertEqual(new_item, Item.objects.get())