test: SearchableField.has_changed() should handle non-list initial val (#4965)

This commit is contained in:
Jennifer Richards 2023-01-10 17:13:37 -04:00 committed by GitHub
parent 0cc907f957
commit 250692997e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -25,6 +25,7 @@ from tempfile import mkdtemp
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
@ -37,6 +38,7 @@ import debug # pyflakes:ignore
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
@ -517,3 +519,25 @@ class TimezoneTests(TestCase):
):
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())