Skip to content

Commit a49c797

Browse files
committed
test: multiple operators registration
1 parent 1df1723 commit a49c797

7 files changed

Lines changed: 93 additions & 8 deletions

File tree

bc_obps/registration/api/_operations/_operation_id/_registration/operation.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from django.http import HttpRequest
44
from ninja import File, UploadedFile
55
from registration.schema import OperationInformationIn, OperationUpdateOut, OperationRegistrationOut, Message
6-
from service.operation_service import OperationData, OperationService
6+
from service.operation_service import OperationData, OperationService, MultipleOperatorData
77
from registration.constants import OPERATION_TAGS
88
from common.permissions import authorize
99
from common.api.utils import get_current_user_guid
@@ -48,7 +48,15 @@ def register_edit_operation_information(
4848
boundary_map=boundary_map,
4949
process_flow_diagram=process_flow_diagram,
5050
new_entrant_application=new_entrant_application,
51-
**payload.model_dump(),
51+
**payload.model_dump(exclude={'multiple_operators_array'}),
52+
multiple_operators_array=(
53+
[
54+
MultipleOperatorData(
55+
**op.model_dump(exclude={'business_structure'}), business_structure_id=op.business_structure.name # type: ignore
56+
)
57+
for op in payload.multiple_operators_array or []
58+
]
59+
),
5260
)
5361
operation = OperationService.register_operation_information(get_current_user_guid(request), operation_id, data)
5462

bc_obps/registration/api/_operations/_operation_id/_registration/operation_representative.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def remove_operation_representative(
4444
removed_id = OperationService.remove_operation_representative(
4545
get_current_user_guid(request),
4646
operation_id,
47-
payload.id,
47+
payload.id, # type: ignore
4848
)
4949

5050
return 200, OperationRepresentativeRemove(id=removed_id)

bc_obps/registration/api/_operations/operation_id.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from django.http import HttpRequest
77
from registration.constants import OPERATION_TAGS
88
from service.error_service.custom_codes_4xx import custom_codes_4xx
9-
from service.operation_service import OperationService, UpdateOperationData
9+
from service.operation_service import OperationService, UpdateOperationData, MultipleOperatorData
1010
from common.api.utils import get_current_user_guid
1111
from registration.api.router import router
1212
from registration.models import Operation
@@ -66,7 +66,15 @@ def update_operation(
6666
boundary_map=boundary_map,
6767
process_flow_diagram=process_flow_diagram,
6868
new_entrant_application=new_entrant_application,
69-
**payload.model_dump(),
69+
**payload.model_dump(exclude={'multiple_operators_array'}),
70+
multiple_operators_array=(
71+
[
72+
MultipleOperatorData(
73+
**op.model_dump(exclude={'business_structure'}), business_structure_id=op.business_structure.name # type: ignore
74+
)
75+
for op in payload.multiple_operators_array or []
76+
]
77+
),
7078
)
7179

7280
operation = OperationService.update_operation(get_current_user_guid(request), data, operation_id)

bc_obps/registration/api/operations.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
OperationTimelineFilterSchema,
1010
OperationTimelineListOut,
1111
)
12-
from service.data_types.operation_service import OperationData
12+
from service.data_types.operation_service import OperationData, MultipleOperatorData
1313
from service.operation_service import OperationService
1414
from common.permissions import authorize
1515
from django.http import HttpRequest
@@ -83,7 +83,15 @@ def register_create_operation_information(
8383
) -> Tuple[Literal[201], Operation]:
8484

8585
operation_data = OperationData(
86-
**payload.model_dump(),
86+
**payload.model_dump(exclude={'multiple_operators_array'}),
87+
multiple_operators_array=(
88+
[
89+
MultipleOperatorData(
90+
**op.model_dump(exclude={'business_structure'}), business_structure_id=op.business_structure.name # type: ignore
91+
)
92+
for op in payload.multiple_operators_array or []
93+
]
94+
),
8795
boundary_map=boundary_map,
8896
process_flow_diagram=process_flow_diagram,
8997
new_entrant_application=new_entrant_application,

bc_obps/registration/tests/endpoints/_operations/_operation_id/_registration/test_operation.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,20 @@ class TestPostOperationRegistrationInformationEndpoint(CommonTestSetup):
1919
"secondary_naics_code_id": 2,
2020
"tertiary_naics_code_id": 3,
2121
"activities": [1],
22+
"multiple_operators_array": [
23+
{
24+
"legal_name": "test legal name",
25+
"trade_name": "test trade name",
26+
"business_structure": "BC Corporation",
27+
"cra_business_number": "123456789",
28+
},
29+
{
30+
"legal_name": "test legal name2",
31+
"trade_name": "test trade name2",
32+
"business_structure": "Sole Proprietorship",
33+
"cra_business_number": "111222333",
34+
},
35+
],
2236
}
2337
),
2438
"boundary_map": create_test_file("boundary_map.pdf"),

bc_obps/registration/tests/endpoints/_operations/test_operation_id.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,20 @@ def test_operations_endpoint_post_success(self):
118118
"tertiary_naics_code_id": 3,
119119
"activities": [1],
120120
"operation_representatives": [contact.id],
121+
"multiple_operators_array": [
122+
{
123+
"legal_name": "test legal name",
124+
"trade_name": "test trade name",
125+
"business_structure": "BC Corporation",
126+
"cra_business_number": "123456789",
127+
},
128+
{
129+
"legal_name": "test legal name2",
130+
"trade_name": "test trade name2",
131+
"business_structure": "Sole Proprietorship",
132+
"cra_business_number": "111222333",
133+
},
134+
],
121135
}
122136
),
123137
"boundary_map": create_test_file("test_boundary_map.docx"),

bc_obps/registration/tests/endpoints/test_operations.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,37 @@ def test_user_can_post_operation_success(self):
9292
assert response.json().get('id') is not None
9393

9494
def test_user_can_post_with_multiple_operators(self):
95-
raise
95+
baker.make_recipe('registration.tests.utils.approved_user_operator', user=self.user)
96+
97+
payload = {
98+
**self.mock_payload,
99+
"multiple_operators_array": [
100+
{
101+
"legal_name": "test legal name",
102+
"trade_name": "test trade name",
103+
"business_structure": "BC Corporation",
104+
"cra_business_number": "123456789",
105+
},
106+
{
107+
"legal_name": "test legal name2",
108+
"trade_name": "test trade name2",
109+
"business_structure": "Sole Proprietorship",
110+
"cra_business_number": "111222333",
111+
},
112+
],
113+
}
114+
115+
response = TestUtils.client.post(
116+
path=custom_reverse_lazy("register_create_operation_information"),
117+
data={
118+
"payload": json.dumps(payload),
119+
"boundary_map": create_test_file("boundary_map.pdf"),
120+
"process_flow_diagram": create_test_file("process_flow_diagram.pdf"),
121+
},
122+
format="multipart",
123+
HTTP_AUTHORIZATION=self.auth_header_dumps,
124+
)
125+
126+
assert response.status_code == 201
127+
assert response.json().get('name') == "op name"
128+
assert response.json().get('id') is not None

0 commit comments

Comments
 (0)