Merge pull request #584 from dod-ccpo/edit-to-officer
Edit Task Order Officer Info
This commit is contained in:
56
tests/forms/test_officers.py
Normal file
56
tests/forms/test_officers.py
Normal file
@@ -0,0 +1,56 @@
|
||||
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"]
|
@@ -2,6 +2,7 @@ from flask import url_for
|
||||
import pytest
|
||||
|
||||
from atst.domain.roles import Roles
|
||||
from atst.domain.task_orders import TaskOrders
|
||||
from atst.models.portfolio_role import Status as PortfolioStatus
|
||||
|
||||
from tests.factories import (
|
||||
@@ -100,3 +101,53 @@ def test_can_view_task_order_invitations(client, user_session):
|
||||
)
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
class TestTaskOrderInvitations:
|
||||
def setup(self):
|
||||
self.portfolio = PortfolioFactory.create()
|
||||
self.task_order = TaskOrderFactory.create(portfolio=self.portfolio)
|
||||
|
||||
def _post(self, client, updates):
|
||||
return client.post(
|
||||
url_for(
|
||||
"portfolios.edit_task_order_invitations",
|
||||
portfolio_id=self.portfolio.id,
|
||||
task_order_id=self.task_order.id,
|
||||
),
|
||||
headers={"Content-Type": "application/x-www-form-urlencoded"},
|
||||
data=updates,
|
||||
)
|
||||
|
||||
def test_editing_with_partial_data(self, user_session, client):
|
||||
user_session(self.portfolio.owner)
|
||||
response = self._post(
|
||||
client,
|
||||
{
|
||||
"contracting_officer-first_name": "Luke",
|
||||
"contracting_officer-last_name": "Skywalker",
|
||||
"security_officer-first_name": "Boba",
|
||||
"security_officer-last_name": "Fett",
|
||||
},
|
||||
)
|
||||
updated_task_order = TaskOrders.get(self.portfolio.owner, self.task_order.id)
|
||||
assert updated_task_order.ko_first_name == "Luke"
|
||||
assert updated_task_order.ko_last_name == "Skywalker"
|
||||
assert updated_task_order.so_first_name == "Boba"
|
||||
assert updated_task_order.so_last_name == "Fett"
|
||||
|
||||
def test_editing_with_invalid_data(self, user_session, client):
|
||||
user_session(self.portfolio.owner)
|
||||
response = self._post(
|
||||
client,
|
||||
{
|
||||
"contracting_officer-phone_number": "invalid input",
|
||||
"security_officer-first_name": "Boba",
|
||||
"security_officer-last_name": "Fett",
|
||||
},
|
||||
)
|
||||
|
||||
assert "There were some errors" in response.data.decode()
|
||||
|
||||
updated_task_order = TaskOrders.get(self.portfolio.owner, self.task_order.id)
|
||||
assert updated_task_order.so_first_name != "Boba"
|
||||
|
Reference in New Issue
Block a user