summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/forms_tests/tests/test_forms.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/forms_tests/tests/test_forms.py b/tests/forms_tests/tests/test_forms.py
index 3204ec9437..640f48fe44 100644
--- a/tests/forms_tests/tests/test_forms.py
+++ b/tests/forms_tests/tests/test_forms.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
+import copy
import datetime
from django.core.files.uploadedfile import SimpleUploadedFile
@@ -1793,6 +1794,26 @@ class FormsTestCase(TestCase):
self.assertTrue(form.is_valid())
self.assertEqual(form.cleaned_data, {'name' : 'fname lname'})
+ def test_multivalue_deep_copy(self):
+ """
+ #19298 -- MultiValueField needs to override the default as it needs
+ to deep-copy subfields:
+ """
+ class ChoicesField(MultiValueField):
+ def __init__(self, fields=(), *args, **kwargs):
+ fields = (ChoiceField(label='Rank',
+ choices=((1,1),(2,2))),
+ CharField(label='Name', max_length=10))
+ super(ChoicesField, self).__init__(fields=fields, *args, **kwargs)
+
+
+ field = ChoicesField()
+ field2 = copy.deepcopy(field)
+ self.assertTrue(isinstance(field2, ChoicesField))
+ self.assertFalse(id(field2.fields) == id(field.fields))
+ self.assertFalse(id(field2.fields[0].choices) ==
+ id(field.fields[0].choices))
+
def test_multivalue_optional_subfields(self):
class PhoneField(MultiValueField):
def __init__(self, *args, **kwargs):