Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions ietf/utils/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
from django.apps import apps
from django.contrib.auth.models import User
from django.conf import settings
from django.forms import Form
from django.template import Context
from django.template import Template # pyflakes:ignore
from django.template.defaulttags import URLNode
Expand All @@ -37,6 +38,7 @@
from ietf.person.name import name_parts, unidecode_name
from ietf.submit.tests import submission_file
from ietf.utils.draft import PlaintextDraft, getmeta
from ietf.utils.fields import SearchableField
from ietf.utils.log import unreachable, assertion
from ietf.utils.mail import send_mail_preformatted, send_mail_text, send_mail_mime, outbox, get_payload_text
from ietf.utils.test_runner import get_template_paths, set_coverage_checking
Expand Down Expand Up @@ -517,3 +519,25 @@ def test_timezone_not_near_midnight(self, mock):
):
with self.assertRaises(RuntimeError):
timezone_not_near_midnight()


class SearchableFieldTests(TestCase):
def test_has_changed_single_value(self):
"""Should work with initial as a single value or list when max_entries == 1"""
class TestSearchableField(SearchableField):
model = "fake model" # needs to be not-None to allow field init

class TestForm(Form):
test_field = TestSearchableField(max_entries=1)

# single value in initial (e.g., when used as a single-valued field in a formset)
changed_form = TestForm(initial={'test_field': 1}, data={'test_field': [2]})
self.assertTrue(changed_form.has_changed())
unchanged_form = TestForm(initial={'test_field': 1}, data={'test_field': [1]})
self.assertFalse(unchanged_form.has_changed())

# list value in initial (usual situation for a MultipleChoiceField subclass like SearchableField)
changed_form = TestForm(initial={'test_field': [1]}, data={'test_field': [2]})
self.assertTrue(changed_form.has_changed())
unchanged_form = TestForm(initial={'test_field': [1]}, data={'test_field': [1]})
self.assertFalse(unchanged_form.has_changed())