diff options
Diffstat (limited to 'tests/generic_relations/tests.py')
| -rw-r--r-- | tests/generic_relations/tests.py | 180 |
1 files changed, 1 insertions, 179 deletions
diff --git a/tests/generic_relations/tests.py b/tests/generic_relations/tests.py index d3aa3b15f8..4c27b6f3d5 100644 --- a/tests/generic_relations/tests.py +++ b/tests/generic_relations/tests.py @@ -1,11 +1,8 @@ -from django import forms -from django.contrib.contenttypes.forms import generic_inlineformset_factory from django.contrib.contenttypes.models import ContentType from django.core.exceptions import FieldError -from django.db import IntegrityError, models +from django.db import IntegrityError from django.db.models import Q from django.test import SimpleTestCase, TestCase -from django.test.utils import isolate_apps from .models import ( AllowsNullGFK, Animal, Carrot, Comparison, ConcreteRelatedModel, @@ -422,73 +419,6 @@ class GenericRelationsTests(TestCase): granite.delete() # deleting the rock should delete the related tag. self.assertEqual(ValuableTaggedItem.objects.count(), 0) - def test_generic_inline_formsets(self): - GenericFormSet = generic_inlineformset_factory(TaggedItem, extra=1) - formset = GenericFormSet() - self.assertHTMLEqual( - ''.join(form.as_p() for form in formset.forms), - """<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-tag"> -Tag:</label> <input id="id_generic_relations-taggeditem-content_type-object_id-0-tag" type="text" -name="generic_relations-taggeditem-content_type-object_id-0-tag" maxlength="50" /></p> -<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-DELETE">Delete:</label> -<input type="checkbox" name="generic_relations-taggeditem-content_type-object_id-0-DELETE" -id="id_generic_relations-taggeditem-content_type-object_id-0-DELETE" /> -<input type="hidden" name="generic_relations-taggeditem-content_type-object_id-0-id" -id="id_generic_relations-taggeditem-content_type-object_id-0-id" /></p>""" - ) - - formset = GenericFormSet(instance=Animal()) - self.assertHTMLEqual( - ''.join(form.as_p() for form in formset.forms), - """<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-tag"> -Tag:</label> <input id="id_generic_relations-taggeditem-content_type-object_id-0-tag" -type="text" name="generic_relations-taggeditem-content_type-object_id-0-tag" maxlength="50" /></p> -<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-DELETE">Delete:</label> -<input type="checkbox" name="generic_relations-taggeditem-content_type-object_id-0-DELETE" -id="id_generic_relations-taggeditem-content_type-object_id-0-DELETE" /><input type="hidden" -name="generic_relations-taggeditem-content_type-object_id-0-id" -id="id_generic_relations-taggeditem-content_type-object_id-0-id" /></p>""" - ) - - platypus = Animal.objects.create( - common_name="Platypus", latin_name="Ornithorhynchus anatinus" - ) - platypus.tags.create(tag="shiny") - GenericFormSet = generic_inlineformset_factory(TaggedItem, extra=1) - formset = GenericFormSet(instance=platypus) - tagged_item_id = TaggedItem.objects.get( - tag='shiny', object_id=platypus.id - ).id - self.assertHTMLEqual( - ''.join(form.as_p() for form in formset.forms), - """<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-tag">Tag:</label> -<input id="id_generic_relations-taggeditem-content_type-object_id-0-tag" type="text" -name="generic_relations-taggeditem-content_type-object_id-0-tag" value="shiny" maxlength="50" /></p> -<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-DELETE">Delete:</label> -<input type="checkbox" name="generic_relations-taggeditem-content_type-object_id-0-DELETE" -id="id_generic_relations-taggeditem-content_type-object_id-0-DELETE" /> -<input type="hidden" name="generic_relations-taggeditem-content_type-object_id-0-id" -value="%s" id="id_generic_relations-taggeditem-content_type-object_id-0-id" /></p> -<p><label for="id_generic_relations-taggeditem-content_type-object_id-1-tag">Tag:</label> -<input id="id_generic_relations-taggeditem-content_type-object_id-1-tag" type="text" -name="generic_relations-taggeditem-content_type-object_id-1-tag" maxlength="50" /></p> -<p><label for="id_generic_relations-taggeditem-content_type-object_id-1-DELETE">Delete:</label> -<input type="checkbox" name="generic_relations-taggeditem-content_type-object_id-1-DELETE" -id="id_generic_relations-taggeditem-content_type-object_id-1-DELETE" /> -<input type="hidden" name="generic_relations-taggeditem-content_type-object_id-1-id" -id="id_generic_relations-taggeditem-content_type-object_id-1-id" /></p>""" % tagged_item_id - ) - - lion = Animal.objects.create(common_name="Lion", latin_name="Panthera leo") - formset = GenericFormSet(instance=lion, prefix='x') - self.assertHTMLEqual( - ''.join(form.as_p() for form in formset.forms), - """<p><label for="id_x-0-tag">Tag:</label> -<input id="id_x-0-tag" type="text" name="x-0-tag" maxlength="50" /></p> -<p><label for="id_x-0-DELETE">Delete:</label> <input type="checkbox" name="x-0-DELETE" id="id_x-0-DELETE" /> -<input type="hidden" name="x-0-id" id="id_x-0-id" /></p>""" - ) - def test_gfk_manager(self): # GenericForeignKey should not use the default manager (which may filter objects) #16048 tailless = Gecko.objects.create(has_tail=False) @@ -513,22 +443,6 @@ id="id_generic_relations-taggeditem-content_type-object_id-1-id" /></p>""" % tag TaggedItem.objects.create(content_object=bear, tag='orange') self.assertEqual(Carrot.objects.get(tags__tag='orange'), bear) - def test_generic_inline_formsets_initial(self): - """ - Test for #17927 Initial values support for BaseGenericInlineFormSet. - """ - quartz = Mineral.objects.create(name="Quartz", hardness=7) - - GenericFormSet = generic_inlineformset_factory(TaggedItem, extra=1) - ctype = ContentType.objects.get_for_model(quartz) - initial_data = [{ - 'tag': 'lizard', - 'content_type': ctype.pk, - 'object_id': quartz.pk, - }] - formset = GenericFormSet(initial=initial_data) - self.assertEqual(formset.forms[0].initial, initial_data[0]) - def test_get_or_create(self): # get_or_create should work with virtual fields (content_object) quartz = Mineral.objects.create(name="Quartz", hardness=7) @@ -586,98 +500,6 @@ id="id_generic_relations-taggeditem-content_type-object_id-1-id" /></p>""" % tag self.assertEqual(tag.content_object, spinach) -class CustomWidget(forms.TextInput): - pass - - -class TaggedItemForm(forms.ModelForm): - class Meta: - model = TaggedItem - fields = '__all__' - widgets = {'tag': CustomWidget} - - -class GenericInlineFormsetTest(TestCase): - def test_generic_inlineformset_factory(self): - """ - Regression for #14572: Using base forms with widgets - defined in Meta should not raise errors. - """ - Formset = generic_inlineformset_factory(TaggedItem, TaggedItemForm) - form = Formset().forms[0] - self.assertIsInstance(form['tag'].field.widget, CustomWidget) - - @isolate_apps('generic_relations') - def test_incorrect_content_type(self): - class BadModel(models.Model): - content_type = models.PositiveIntegerField() - - msg = "fk_name 'generic_relations.BadModel.content_type' is not a ForeignKey to ContentType" - with self.assertRaisesMessage(Exception, msg): - generic_inlineformset_factory(BadModel, TaggedItemForm) - - def test_save_new_uses_form_save(self): - """ - Regression for #16260: save_new should call form.save() - """ - class SaveTestForm(forms.ModelForm): - def save(self, *args, **kwargs): - self.instance.saved_by = "custom method" - return super().save(*args, **kwargs) - - Formset = generic_inlineformset_factory(ForProxyModelModel, fields='__all__', form=SaveTestForm) - - instance = ProxyRelatedModel.objects.create() - - data = { - 'form-TOTAL_FORMS': '1', - 'form-INITIAL_FORMS': '0', - 'form-MAX_NUM_FORMS': '', - 'form-0-title': 'foo', - } - - formset = Formset(data, instance=instance, prefix='form') - self.assertTrue(formset.is_valid()) - new_obj = formset.save()[0] - self.assertEqual(new_obj.saved_by, "custom method") - - def test_save_new_for_proxy(self): - Formset = generic_inlineformset_factory(ForProxyModelModel, fields='__all__', for_concrete_model=False) - - instance = ProxyRelatedModel.objects.create() - - data = { - 'form-TOTAL_FORMS': '1', - 'form-INITIAL_FORMS': '0', - 'form-MAX_NUM_FORMS': '', - 'form-0-title': 'foo', - } - - formset = Formset(data, instance=instance, prefix='form') - self.assertTrue(formset.is_valid()) - - new_obj, = formset.save() - self.assertEqual(new_obj.obj, instance) - - def test_save_new_for_concrete(self): - Formset = generic_inlineformset_factory(ForProxyModelModel, fields='__all__', for_concrete_model=True) - - instance = ProxyRelatedModel.objects.create() - - data = { - 'form-TOTAL_FORMS': '1', - 'form-INITIAL_FORMS': '0', - 'form-MAX_NUM_FORMS': '', - 'form-0-title': 'foo', - } - - formset = Formset(data, instance=instance, prefix='form') - self.assertTrue(formset.is_valid()) - - new_obj, = formset.save() - self.assertNotIsInstance(new_obj.obj, ProxyRelatedModel) - - class ProxyRelatedModelTest(TestCase): def test_default_behavior(self): """ |
