Moved tests for model Field.get_choices().

This commit is contained in:
Tim Graham 2018-04-20 10:37:29 -04:00
parent 11b8c30b9e
commit e35004966b
2 changed files with 14 additions and 12 deletions

View File

@ -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):
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):

View File

@ -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):
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], ('', '---------'))