summaryrefslogtreecommitdiff
path: root/tests/postgres_tests
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2016-09-06 17:41:54 -0400
committerTim Graham <timograham@gmail.com>2016-09-22 13:07:23 -0400
commit0b59ea3343ef6f035064cfae1608f54c5a3fd147 (patch)
tree81a3499027dd1397d6345a518c4b4cba8e5a1cdd /tests/postgres_tests
parent190cd0e49f967d2ec0b6c50a63f0d58d13319611 (diff)
[1.10.x] Fixed #27186 -- Fixed model form default fallback for MultiWidget, FileInput, SplitDateTimeWidget, SelectDateWidget, and SplitArrayWidget.
Thanks Matt Westcott for the review. Backport of 3507d4e773aa9ff2336e7230ba231c4ba6eb568f from master
Diffstat (limited to 'tests/postgres_tests')
-rw-r--r--tests/postgres_tests/models.py2
-rw-r--r--tests/postgres_tests/test_array.py27
2 files changed, 27 insertions, 2 deletions
diff --git a/tests/postgres_tests/models.py b/tests/postgres_tests/models.py
index d94eb90d4a..7d2dabcd01 100644
--- a/tests/postgres_tests/models.py
+++ b/tests/postgres_tests/models.py
@@ -40,7 +40,7 @@ class PostgreSQLModel(models.Model):
class IntegerArrayModel(PostgreSQLModel):
- field = ArrayField(models.IntegerField())
+ field = ArrayField(models.IntegerField(), default=[], blank=True)
class NullableIntegerArrayModel(PostgreSQLModel):
diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py
index 6a305556d4..5929c565d6 100644
--- a/tests/postgres_tests/test_array.py
+++ b/tests/postgres_tests/test_array.py
@@ -20,7 +20,9 @@ from .models import (
try:
from django.contrib.postgres.fields import ArrayField
- from django.contrib.postgres.forms import SimpleArrayField, SplitArrayField
+ from django.contrib.postgres.forms import (
+ SimpleArrayField, SplitArrayField, SplitArrayWidget,
+ )
except ImportError:
pass
@@ -714,3 +716,26 @@ class TestSplitFormField(PostgreSQLTestCase):
'Item 0 in the array did not validate: Ensure this value has at most 2 characters (it has 3).',
'Item 2 in the array did not validate: Ensure this value has at most 2 characters (it has 4).',
])
+
+ def test_splitarraywidget_value_omitted_from_data(self):
+ class Form(forms.ModelForm):
+ field = SplitArrayField(forms.IntegerField(), required=False, size=2)
+
+ class Meta:
+ model = IntegerArrayModel
+ fields = ('field',)
+
+ form = Form({'field_0': '1', 'field_1': '2'})
+ self.assertEqual(form.errors, {})
+ obj = form.save(commit=False)
+ self.assertEqual(obj.field, [1, 2])
+
+
+class TestSplitFormWidget(PostgreSQLTestCase):
+
+ def test_value_omitted_from_data(self):
+ widget = SplitArrayWidget(forms.TextInput(), size=2)
+ self.assertIs(widget.value_omitted_from_data({}, {}, 'field'), True)
+ self.assertIs(widget.value_omitted_from_data({'field_0': 'value'}, {}, 'field'), False)
+ self.assertIs(widget.value_omitted_from_data({'field_1': 'value'}, {}, 'field'), False)
+ self.assertIs(widget.value_omitted_from_data({'field_0': 'value', 'field_1': 'value'}, {}, 'field'), False)