From e35004966bacbc9ba1fb10dd01edcfd874dad303 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Fri, 20 Apr 2018 10:37:29 -0400 Subject: [PATCH] Moved tests for model Field.get_choices(). --- tests/model_fields/test_charfield.py | 12 ------------ tests/model_fields/tests.py | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/tests/model_fields/test_charfield.py b/tests/model_fields/test_charfield.py index 04ac1d3f92..1b50f01f3a 100644 --- a/tests/model_fields/test_charfield.py +++ b/tests/model_fields/test_charfield.py @@ -3,7 +3,6 @@ from unittest import skipIf from django.core.exceptions import ValidationError from django.db import connection, models from django.test import SimpleTestCase, TestCase -from django.utils.functional import lazy from .models import Post @@ -50,17 +49,6 @@ class ValidationTests(SimpleTestCase): with self.assertRaises(ValidationError): 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): f = models.CharField(null=False) with self.assertRaises(ValidationError): diff --git a/tests/model_fields/tests.py b/tests/model_fields/tests.py index ab8ccd8b4c..fb0098a262 100644 --- a/tests/model_fields/tests.py +++ b/tests/model_fields/tests.py @@ -3,6 +3,7 @@ import pickle from django import forms from django.db import models from django.test import SimpleTestCase, TestCase +from django.utils.functional import lazy from .models import ( Foo, RenamedField, VerboseNameField, Whiz, WhizIter, WhizIterEmpty, @@ -130,3 +131,16 @@ class ChoicesTests(SimpleTestCase): self.assertEqual(WhizIterEmpty(c="b").c, "b") # Invalid value self.assertIsNone(WhizIterEmpty(c=None).c) # Blank 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], ('', '---------'))