57 lines
2.2 KiB
Python
57 lines
2.2 KiB
Python
from werkzeug.datastructures import ImmutableMultiDict
|
|
|
|
from atst.forms.officers import EditTaskOrderOfficersForm
|
|
from tests.factories import TaskOrderFactory, UserFactory
|
|
|
|
|
|
class TestEditTaskOrderOfficersForm:
|
|
def _assert_officer_info_matches(self, form, task_order, officer):
|
|
prefix = form.OFFICER_PREFIXES[officer]
|
|
|
|
for field in form.OFFICER_INFO_FIELD_NAMES:
|
|
assert form[officer][field].data == getattr(
|
|
task_order, "{}_{}".format(prefix, field)
|
|
)
|
|
|
|
def test_processing_with_existing_task_order(self):
|
|
task_order = TaskOrderFactory.create()
|
|
form = EditTaskOrderOfficersForm(obj=task_order)
|
|
for officer in form.OFFICER_PREFIXES.keys():
|
|
self._assert_officer_info_matches(form, task_order, officer)
|
|
|
|
def test_processing_form_with_formdata(self):
|
|
data = {
|
|
"contracting_officer-first_name": "Han",
|
|
"contracting_officer-last_name": "Solo",
|
|
}
|
|
formdata = ImmutableMultiDict(data)
|
|
task_order = TaskOrderFactory.create()
|
|
form = EditTaskOrderOfficersForm(formdata=formdata, obj=task_order)
|
|
|
|
for officer in ["contracting_officer_representative", "security_officer"]:
|
|
self._assert_officer_info_matches(form, task_order, officer)
|
|
|
|
prefix = "ko"
|
|
officer = "contracting_officer"
|
|
for field in form.OFFICER_INFO_FIELD_NAMES:
|
|
data_field = "{}-{}".format(officer, field)
|
|
if data_field in formdata:
|
|
assert form[officer][field].data == formdata[data_field]
|
|
else:
|
|
assert form[officer][field].data == getattr(
|
|
task_order, "{}_{}".format(prefix, field)
|
|
)
|
|
|
|
def test_populate_obj(self):
|
|
data = {
|
|
"security_officer-first_name": "Luke",
|
|
"security_officer-last_name": "Skywalker",
|
|
}
|
|
formdata = ImmutableMultiDict(data)
|
|
task_order = TaskOrderFactory.create()
|
|
form = EditTaskOrderOfficersForm(formdata=formdata, obj=task_order)
|
|
|
|
form.populate_obj(task_order)
|
|
assert task_order.so_first_name == data["security_officer-first_name"]
|
|
assert task_order.so_last_name == data["security_officer-last_name"]
|