From e3b03d74cc64c885eb5150eaf5a4dae703efbae4 Mon Sep 17 00:00:00 2001 From: John Carter Date: Sat, 26 Oct 2019 13:27:42 +1300 Subject: [PATCH] Add test of the default widget, with failing test for #280 --- django_countries/tests/test_widgets.py | 72 +++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/django_countries/tests/test_widgets.py b/django_countries/tests/test_widgets.py index 47313e79..4ec9806e 100644 --- a/django_countries/tests/test_widgets.py +++ b/django_countries/tests/test_widgets.py @@ -9,7 +9,7 @@ from distutils.version import StrictVersion import django from django.forms.models import modelform_factory -from django.test import TestCase +from django.test import TestCase, override_settings from django.utils import safestring from django.utils.html import escape @@ -73,3 +73,73 @@ def test_required_attribute(self): rendered = self.Form()["country"].as_widget() rendered = rendered[: rendered.find(">") + 1] self.assertIn("required", rendered) + + +class TestDefaultSelectWidget(TestCase): + def setUp(self): + del countries.countries + + def tearDown(self): + del countries.countries + + def setup_form(self): + """ + Setup form for use in tests + Note that this isn't in setUp so that we can call it inside of a settings override scope. + """ + self.Form = modelform_factory(Person, fields=["country"]) + + def test_is_default_widget(self): + self.setup_form() + + widget = self.Form().fields["country"].widget + self.assertNotIsInstance(widget, widgets.CountrySelectWidget) + self.assertIsInstance(widget, widgets.LazySelect) + + @skipIf( + StrictVersion(django.get_version()) < StrictVersion("1.10"), + "required attribute only implemented in 1.10+", + ) + @override_settings(COUNTRIES_ONLY=["NZ", "AU"]) + def test_required_attribute(self): + self.setup_form() + rendered = self.Form()["country"].as_widget() + rendered_first_tag = rendered[: rendered.find(">") + 1] + self.assertIn("required", rendered_first_tag) + + self.assertHTMLEqual( + """ + + """, + rendered, + ) + + @skipIf( + StrictVersion(django.get_version()) < StrictVersion("1.10"), + "required attribute only implemented in 1.10+", + ) + @override_settings( + COUNTRIES_FIRST=["NZ"], + COUNTRIES_ONLY=["NZ", "AU"], + COUNTRIES_FIRST_BREAK="-----", + ) + def test_required_attribute_with_countries_first_break(self): + self.setup_form() + rendered = self.Form()["country"].as_widget() + rendered_first_tag = rendered[: rendered.find(">") + 1] + self.assertIn("required", rendered_first_tag) + + self.assertHTMLEqual( + """ + + """, + rendered, + )