Skip to content

Commit

Permalink
Fixed #12304 -- regression tests to make sure the validation messages…
Browse files Browse the repository at this point in the history
… for unique violations are sane, Thanks ramiro!

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14198 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
honzakral committed Oct 13, 2010
1 parent b7ed25a commit 52716dd
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
9 changes: 9 additions & 0 deletions tests/regressiontests/model_forms_regress/models.py
Expand Up @@ -60,3 +60,12 @@ class Homepage(models.Model):


class Document(models.Model): class Document(models.Model):
myfile = models.FileField(upload_to='unused', blank=True) myfile = models.FileField(upload_to='unused', blank=True)

class Edition(models.Model):
author = models.ForeignKey(Person)
publication = models.ForeignKey(Publication)
edition = models.IntegerField()
isbn = models.CharField(max_length=13, unique=True)

class Meta:
unique_together = (('author', 'publication'), ('publication', 'edition'),)
30 changes: 29 additions & 1 deletion tests/regressiontests/model_forms_regress/tests.py
Expand Up @@ -8,7 +8,7 @@
from django.core.files.uploadedfile import SimpleUploadedFile from django.core.files.uploadedfile import SimpleUploadedFile


from models import Person, RealPerson, Triple, FilePathModel, Article, \ from models import Person, RealPerson, Triple, FilePathModel, Article, \
Publication, CustomFF, Author, Author1, Homepage, Document Publication, CustomFF, Author, Author1, Homepage, Document, Edition




class ModelMultipleChoiceFieldTests(TestCase): class ModelMultipleChoiceFieldTests(TestCase):
Expand Down Expand Up @@ -389,3 +389,31 @@ def test_clear_and_file_contradiction(self):
rendered = unicode(form) rendered = unicode(form)
self.assert_('something.txt' in rendered) self.assert_('something.txt' in rendered)
self.assert_('myfile-clear' in rendered) self.assert_('myfile-clear' in rendered)

class EditionForm(forms.ModelForm):
author = forms.ModelChoiceField(queryset=Person.objects.all())
publication = forms.ModelChoiceField(queryset=Publication.objects.all())
edition = forms.IntegerField()
isbn = forms.CharField(max_length=13)

class Meta:
model = Edition

class UniqueErrorsTests(TestCase):
def setUp(self):
self.author1 = Person.objects.create(name=u'Author #1')
self.author2 = Person.objects.create(name=u'Author #2')
self.pub1 = Publication.objects.create(title='Pub #1', date_published=date(2000, 10, 31))
self.pub2 = Publication.objects.create(title='Pub #2', date_published=date(2004, 1, 5))
form = EditionForm(data={'author': self.author1.pk, 'publication': self.pub1.pk, 'edition': 1, 'isbn': '9783161484100'})
form.save()

def test_unique_error_message(self):
form = EditionForm(data={'author': self.author1.pk, 'publication': self.pub2.pk, 'edition': 1, 'isbn': '9783161484100'})
self.assertEquals(form.errors, {'isbn': [u'Edition with this Isbn already exists.']})

def test_unique_together_error_message(self):
form = EditionForm(data={'author': self.author1.pk, 'publication': self.pub1.pk, 'edition': 2, 'isbn': '9783161489999'})
self.assertEquals(form.errors, {'__all__': [u'Edition with this Author and Publication already exists.']})
form = EditionForm(data={'author': self.author2.pk, 'publication': self.pub1.pk, 'edition': 1, 'isbn': '9783161487777'})
self.assertEquals(form.errors, {'__all__': [u'Edition with this Publication and Edition already exists.']})

0 comments on commit 52716dd

Please sign in to comment.