custom save method implemented in ItemForm(); views & tests updated accordingly (all UTs & FTs passing)
This commit is contained in:
@@ -16,3 +16,7 @@ class ItemForm(forms.models.ModelForm):
|
||||
),
|
||||
}
|
||||
error_messages = {"text": {"required": EMPTY_ITEM_ERROR}}
|
||||
|
||||
def save(self, for_list):
|
||||
self.instance.list = for_list
|
||||
return super().save()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from django.test import TestCase
|
||||
from ..forms import EMPTY_ITEM_ERROR, ItemForm
|
||||
from ..models import Item, List
|
||||
|
||||
class ItemFormTest(TestCase):
|
||||
def test_form_item_has_placeholder_and_css_classes(self):
|
||||
@@ -16,3 +17,11 @@ class ItemFormTest(TestCase):
|
||||
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)
|
||||
|
||||
@@ -22,7 +22,7 @@ def view_list(request, list_id):
|
||||
if request.method == "POST":
|
||||
form = ItemForm(data=request.POST)
|
||||
if form.is_valid():
|
||||
Item.objects.create(text=request.POST["text"], list=our_list)
|
||||
form.save(for_list=our_list)
|
||||
return redirect(our_list)
|
||||
return render(request, 'apps/dashboard/list.html', {'list': our_list, "form": form})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user