summaryrefslogtreecommitdiff
path: root/tests/model_validation
diff options
context:
space:
mode:
authorDonald Stufft <donald@stufft.io>2013-05-17 15:31:41 -0400
committerDonald Stufft <donald@stufft.io>2013-05-18 11:14:05 -0400
commita19e9d80ffa10f8da43addcaa4ddd440beee8a4d (patch)
tree6c405ce14256de50c1e4a394514a6daaa0410e50 /tests/model_validation
parenta0c0cc924e4c6ffd22158f254ed9bc9556f05cc4 (diff)
Fixed #20430 - Enable iterable of iterables for model choices
Allows for any iterable, not just lists or tuples, to be used as the inner item for a list of choices in a model.
Diffstat (limited to 'tests/model_validation')
-rw-r--r--tests/model_validation/__init__.py0
-rw-r--r--tests/model_validation/models.py27
-rw-r--r--tests/model_validation/tests.py14
3 files changed, 41 insertions, 0 deletions
diff --git a/tests/model_validation/__init__.py b/tests/model_validation/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/model_validation/__init__.py
diff --git a/tests/model_validation/models.py b/tests/model_validation/models.py
new file mode 100644
index 0000000000..9a2a5f7cd0
--- /dev/null
+++ b/tests/model_validation/models.py
@@ -0,0 +1,27 @@
+from django.db import models
+
+
+class ThingItem(object):
+
+ def __init__(self, value, display):
+ self.value = value
+ self.display = display
+
+ def __iter__(self):
+ return (x for x in [self.value, self.display])
+
+ def __len__(self):
+ return 2
+
+
+class Things(object):
+
+ def __iter__(self):
+ return (x for x in [ThingItem(1, 2), ThingItem(3, 4)])
+
+
+class ThingWithIterableChoices(models.Model):
+
+ # Testing choices= Iterable of Iterables
+ # See: https://code.djangoproject.com/ticket/20430
+ thing = models.CharField(max_length=100, blank=True, choices=Things())
diff --git a/tests/model_validation/tests.py b/tests/model_validation/tests.py
new file mode 100644
index 0000000000..96baf640eb
--- /dev/null
+++ b/tests/model_validation/tests.py
@@ -0,0 +1,14 @@
+import io
+
+from django.core import management
+from django.test import TestCase
+
+
+class ModelValidationTest(TestCase):
+
+ def test_models_validate(self):
+ # All our models should validate properly
+ # Validation Tests:
+ # * choices= Iterable of Iterables
+ # See: https://code.djangoproject.com/ticket/20430
+ management.call_command("validate", stdout=io.BytesIO())