Kaydet (Commit) e3500496 authored tarafından Tim Graham's avatar Tim Graham

Moved tests for model Field.get_choices().

üst 11b8c30b
...@@ -3,7 +3,6 @@ from unittest import skipIf ...@@ -3,7 +3,6 @@ from unittest import skipIf
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.db import connection, models from django.db import connection, models
from django.test import SimpleTestCase, TestCase from django.test import SimpleTestCase, TestCase
from django.utils.functional import lazy
from .models import Post from .models import Post
...@@ -50,17 +49,6 @@ class ValidationTests(SimpleTestCase): ...@@ -50,17 +49,6 @@ class ValidationTests(SimpleTestCase):
with self.assertRaises(ValidationError): with self.assertRaises(ValidationError):
f.clean('not a', None) f.clean('not a', None)
def test_charfield_get_choices_with_blank_defined(self):
f = models.CharField(choices=[('', '<><>'), ('a', 'A')])
self.assertEqual(f.get_choices(True), [('', '<><>'), ('a', 'A')])
def test_charfield_get_choices_doesnt_evaluate_lazy_strings(self):
# Regression test for #23098
# Will raise ZeroDivisionError if lazy is evaluated
lazy_func = lazy(lambda x: 0 / 0, int)
f = models.CharField(choices=[(lazy_func('group'), (('a', 'A'), ('b', 'B')))])
self.assertEqual(f.get_choices(True)[0], ('', '---------'))
def test_charfield_raises_error_on_empty_input(self): def test_charfield_raises_error_on_empty_input(self):
f = models.CharField(null=False) f = models.CharField(null=False)
with self.assertRaises(ValidationError): with self.assertRaises(ValidationError):
......
...@@ -3,6 +3,7 @@ import pickle ...@@ -3,6 +3,7 @@ import pickle
from django import forms from django import forms
from django.db import models from django.db import models
from django.test import SimpleTestCase, TestCase from django.test import SimpleTestCase, TestCase
from django.utils.functional import lazy
from .models import ( from .models import (
Foo, RenamedField, VerboseNameField, Whiz, WhizIter, WhizIterEmpty, Foo, RenamedField, VerboseNameField, Whiz, WhizIter, WhizIterEmpty,
...@@ -130,3 +131,16 @@ class ChoicesTests(SimpleTestCase): ...@@ -130,3 +131,16 @@ class ChoicesTests(SimpleTestCase):
self.assertEqual(WhizIterEmpty(c="b").c, "b") # Invalid value self.assertEqual(WhizIterEmpty(c="b").c, "b") # Invalid value
self.assertIsNone(WhizIterEmpty(c=None).c) # Blank value self.assertIsNone(WhizIterEmpty(c=None).c) # Blank value
self.assertEqual(WhizIterEmpty(c='').c, '') # Empty value self.assertEqual(WhizIterEmpty(c='').c, '') # Empty value
class GetChoicesTests(SimpleTestCase):
def test_blank_in_choices(self):
choices = [('', '<><>'), ('a', 'A')]
f = models.CharField(choices=choices)
self.assertEqual(f.get_choices(include_blank=True), choices)
def test_lazy_strings_not_evaluated(self):
lazy_func = lazy(lambda x: 0 / 0, int) # raises ZeroDivisionError if evaluated.
f = models.CharField(choices=[(lazy_func('group'), (('a', 'A'), ('b', 'B')))])
self.assertEqual(f.get_choices(include_blank=True)[0], ('', '---------'))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment