Skip to content

Commit

Permalink
Add test of the default widget, with failing test for SmileyChris#280
Browse files Browse the repository at this point in the history
  • Loading branch information
therefromhere committed Oct 26, 2019
1 parent 9f9ec44 commit e3b03d7
Showing 1 changed file with 71 additions and 1 deletion.
72 changes: 71 additions & 1 deletion django_countries/tests/test_widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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(
"""
<select name="country" id="id_country" required>
<option value="" selected>---------</option>
<option value="AU">Australia</option>
<option value="NZ">New Zealand</option>
</select>
""",
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(
"""
<select name="country" id="id_country" required>
<option value="NZ">New Zealand</option>
<option value="" selected>-----</option>
<option value="AU">Australia</option>
</select>
""",
rendered,
)

0 comments on commit e3b03d7

Please sign in to comment.