import datetime
from django import forms
from django.forms import CheckboxSelectMultiple
from django.test import override_settings
from .base import WidgetTest
class CheckboxSelectMultipleTest(WidgetTest):
widget = CheckboxSelectMultiple
def test_render_value(self):
self.check_html(
self.widget(choices=self.beatles),
"beatles",
["J"],
html="""
""",
)
def test_render_none(self):
"""
If the value is None, none of the options are selected, even if the
choices have an empty option.
"""
self.check_html(
self.widget(choices=(("", "Unknown"),) + self.beatles),
"beatles",
None,
html="""
"""
self.check_html(
self.widget(choices=nested_choices),
"nestchoice",
("vinyl", "dvd"),
html=html,
)
def test_separate_ids(self):
"""
Each input gets a separate ID.
"""
choices = [("a", "A"), ("b", "B"), ("c", "C")]
html = """
"""
self.check_html(
self.widget(choices=choices),
"letters",
["a", "c"],
attrs={"id": "abc"},
html=html,
)
def test_separate_ids_constructor(self):
"""
Each input gets a separate ID when the ID is passed to the constructor.
"""
widget = CheckboxSelectMultiple(
attrs={"id": "abc"}, choices=[("a", "A"), ("b", "B"), ("c", "C")]
)
html = """