summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBaptiste Mispelon <bmispelon@gmail.com>2013-04-07 18:41:35 +0200
committerBaptiste Mispelon <bmispelon@gmail.com>2013-04-07 19:08:53 +0200
commitf9dc1379b874f80694a80e95f0f266a3d42f7368 (patch)
treeb11ff5802383cfe41eb6c344df6d8ca704b7a8eb /tests
parent5ab66dea50eab6625e3a07b71342268432e9cfaf (diff)
Fix #15126: Better error message when passing invalid options to ModelForm.Meta.
Diffstat (limited to 'tests')
-rw-r--r--tests/model_forms/tests.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py
index e8c638389b..96c3ecbdce 100644
--- a/tests/model_forms/tests.py
+++ b/tests/model_forms/tests.py
@@ -5,6 +5,7 @@ import os
from decimal import Decimal
from django import forms
+from django.core.exceptions import FieldError
from django.core.files.uploadedfile import SimpleUploadedFile
from django.core.validators import ValidationError
from django.db import connection
@@ -228,6 +229,22 @@ class ModelFormBaseTest(TestCase):
self.assertEqual(list(LimitFields.base_fields),
['url'])
+ def test_limit_nonexistent_field(self):
+ expected_msg = 'Unknown field(s) (nonexistent) specified for Category'
+ with self.assertRaisesMessage(FieldError, expected_msg):
+ class InvalidCategoryForm(forms.ModelForm):
+ class Meta:
+ model = Category
+ fields = ['nonexistent']
+
+ def test_limit_fields_with_string(self):
+ expected_msg = "CategoryForm.Meta.fields cannot be a string. Did you mean to type: ('url',)?"
+ with self.assertRaisesMessage(TypeError, expected_msg):
+ class CategoryForm(forms.ModelForm):
+ class Meta:
+ model = Category
+ fields = ('url') # note the missing comma
+
def test_exclude_fields(self):
class ExcludeFields(forms.ModelForm):
class Meta:
@@ -237,6 +254,23 @@ class ModelFormBaseTest(TestCase):
self.assertEqual(list(ExcludeFields.base_fields),
['name', 'slug'])
+ def test_exclude_nonexistent_field(self):
+ class ExcludeFields(forms.ModelForm):
+ class Meta:
+ model = Category
+ exclude = ['nonexistent']
+
+ self.assertEqual(list(ExcludeFields.base_fields),
+ ['name', 'slug', 'url'])
+
+ def test_exclude_fields_with_string(self):
+ expected_msg = "CategoryForm.Meta.exclude cannot be a string. Did you mean to type: ('url',)?"
+ with self.assertRaisesMessage(TypeError, expected_msg):
+ class CategoryForm(forms.ModelForm):
+ class Meta:
+ model = Category
+ exclude = ('url') # note the missing comma
+
def test_confused_form(self):
class ConfusedForm(forms.ModelForm):
""" Using 'fields' *and* 'exclude'. Not sure why you'd want to do