From 05b197dbb17fad30dd8a0cdc68bfb453697473ed Mon Sep 17 00:00:00 2001 From: Ian Kelly Date: Tue, 8 Mar 2011 22:50:56 +0000 Subject: [1.2.X] Added a skip for a test that fails in Oracle. Unlike other backends, Oracle does not allow duplicate rows where there is a unique_together constraint for which some but not all of the columns are NULL. Backport of r15777 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@15778 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/modeltests/model_formsets/tests.py | 54 +++++++++++++++++--------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/tests/modeltests/model_formsets/tests.py b/tests/modeltests/model_formsets/tests.py index 91c9043e75..059d70e1ef 100644 --- a/tests/modeltests/model_formsets/tests.py +++ b/tests/modeltests/model_formsets/tests.py @@ -4,7 +4,8 @@ from datetime import date from decimal import Decimal from django import forms -from django.db import models +from django.conf import settings +from django.db import models, DEFAULT_DB_ALIAS from django.forms.models import (_get_foreign_key, inlineformset_factory, modelformset_factory, modelformset_factory) from django.test import TestCase @@ -577,30 +578,33 @@ class ModelFormsetTest(TestCase): self.assertEqual(book1.title, 'Flowers of Evil') self.assertEqual(book1.notes, 'English translation of Les Fleurs du Mal') - # Test inline formsets where the inline-edited object has a - # unique_together constraint with a nullable member - - AuthorBooksFormSet4 = inlineformset_factory(Author, BookWithOptionalAltEditor, can_delete=False, extra=2) - - data = { - 'bookwithoptionalalteditor_set-TOTAL_FORMS': '2', # the number of forms rendered - 'bookwithoptionalalteditor_set-INITIAL_FORMS': '0', # the number of forms with initial data - 'bookwithoptionalalteditor_set-MAX_NUM_FORMS': '', # the max number of forms - 'bookwithoptionalalteditor_set-0-author': '1', - 'bookwithoptionalalteditor_set-0-title': 'Les Fleurs du Mal', - 'bookwithoptionalalteditor_set-1-author': '1', - 'bookwithoptionalalteditor_set-1-title': 'Les Fleurs du Mal', - } - formset = AuthorBooksFormSet4(data, instance=author) - self.assertTrue(formset.is_valid()) - - saved = formset.save() - self.assertEqual(len(saved), 2) - book1, book2 = saved - self.assertEqual(book1.author_id, 1) - self.assertEqual(book1.title, 'Les Fleurs du Mal') - self.assertEqual(book2.author_id, 1) - self.assertEqual(book2.title, 'Les Fleurs du Mal') + if settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE'] != 'django.db.backends.oracle': + def test_inline_formsets_with_nullable_unique_together(self): + # Test inline formsets where the inline-edited object has a + # unique_together constraint with a nullable member + + AuthorBooksFormSet4 = inlineformset_factory(Author, BookWithOptionalAltEditor, can_delete=False, extra=2) + author = Author.objects.create(pk=1, name='Charles Baudelaire') + + data = { + 'bookwithoptionalalteditor_set-TOTAL_FORMS': '2', # the number of forms rendered + 'bookwithoptionalalteditor_set-INITIAL_FORMS': '0', # the number of forms with initial data + 'bookwithoptionalalteditor_set-MAX_NUM_FORMS': '', # the max number of forms + 'bookwithoptionalalteditor_set-0-author': '1', + 'bookwithoptionalalteditor_set-0-title': 'Les Fleurs du Mal', + 'bookwithoptionalalteditor_set-1-author': '1', + 'bookwithoptionalalteditor_set-1-title': 'Les Fleurs du Mal', + } + formset = AuthorBooksFormSet4(data, instance=author) + self.assertTrue(formset.is_valid()) + + saved = formset.save() + self.assertEqual(len(saved), 2) + book1, book2 = saved + self.assertEqual(book1.author_id, 1) + self.assertEqual(book1.title, 'Les Fleurs du Mal') + self.assertEqual(book2.author_id, 1) + self.assertEqual(book2.title, 'Les Fleurs du Mal') def test_inline_formsets_with_custom_save_method(self): AuthorBooksFormSet = inlineformset_factory(Author, Book, can_delete=False, extra=2) -- cgit v1.2.1