Skip to content

Commit 260cff2

Browse files
extend nested payload request tests
1 parent 0558bb1 commit 260cff2

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed

tests/unit/test_routes/test_flights_route.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,22 @@ def test_create_flight(stub_flight_dump, mock_controller_instance):
8686
)
8787

8888

89+
def test_create_flight_with_string_nested_fields(
90+
stub_flight_dump, mock_controller_instance
91+
):
92+
payload = copy.deepcopy(stub_flight_dump)
93+
payload['environment'] = json.dumps(payload['environment'])
94+
payload['rocket'] = json.dumps(payload['rocket'])
95+
mock_controller_instance.post_flight = AsyncMock(
96+
return_value=FlightCreated(flight_id='123')
97+
)
98+
response = client.post('/flights/', json=payload)
99+
assert response.status_code == 201
100+
mock_controller_instance.post_flight.assert_called_once_with(
101+
FlightModel(**payload)
102+
)
103+
104+
89105
def test_create_flight_from_references(
90106
stub_flight_reference_payload, mock_controller_instance
91107
):
@@ -247,6 +263,20 @@ def test_update_flight_by_id(stub_flight_dump, mock_controller_instance):
247263
)
248264

249265

266+
def test_update_flight_with_string_nested_fields(
267+
stub_flight_dump, mock_controller_instance
268+
):
269+
payload = copy.deepcopy(stub_flight_dump)
270+
payload['environment'] = json.dumps(payload['environment'])
271+
payload['rocket'] = json.dumps(payload['rocket'])
272+
mock_controller_instance.put_flight_by_id = AsyncMock(return_value=None)
273+
response = client.put('/flights/123', json=payload)
274+
assert response.status_code == 204
275+
mock_controller_instance.put_flight_by_id.assert_called_once_with(
276+
'123', FlightModel(**payload)
277+
)
278+
279+
250280
def test_update_flight_from_references(
251281
stub_flight_reference_payload, mock_controller_instance
252282
):

tests/unit/test_routes/test_rockets_route.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,30 @@ def test_create_rocket(stub_rocket_dump, mock_controller_instance):
111111
)
112112

113113

114+
def test_create_rocket_with_string_nested_fields(
115+
stub_rocket_dump,
116+
stub_parachute_dump,
117+
stub_rail_buttons_dump,
118+
stub_tail_dump,
119+
mock_controller_instance,
120+
):
121+
payload = copy.deepcopy(stub_rocket_dump)
122+
payload['motor'] = json.dumps(payload['motor'])
123+
payload['nose'] = json.dumps(payload['nose'])
124+
payload['fins'] = json.dumps(payload['fins'])
125+
payload['parachutes'] = json.dumps([stub_parachute_dump])
126+
payload['rail_buttons'] = json.dumps(stub_rail_buttons_dump)
127+
payload['tail'] = json.dumps(stub_tail_dump)
128+
129+
mock_response = AsyncMock(return_value=RocketCreated(rocket_id='123'))
130+
mock_controller_instance.post_rocket = mock_response
131+
response = client.post('/rockets/', json=payload)
132+
assert response.status_code == 201
133+
mock_controller_instance.post_rocket.assert_called_once_with(
134+
RocketModel(**payload)
135+
)
136+
137+
114138
def test_create_rocket_from_motor_reference(
115139
stub_rocket_reference_payload, mock_controller_instance
116140
):
@@ -440,6 +464,30 @@ def test_update_rocket(stub_rocket_dump, mock_controller_instance):
440464
)
441465

442466

467+
def test_update_rocket_with_string_nested_fields(
468+
stub_rocket_dump,
469+
stub_parachute_dump,
470+
stub_rail_buttons_dump,
471+
stub_tail_dump,
472+
mock_controller_instance,
473+
):
474+
payload = copy.deepcopy(stub_rocket_dump)
475+
payload['motor']['motor_kind'] = 'SOLID'
476+
payload['motor'] = json.dumps(payload['motor'])
477+
payload['nose'] = json.dumps(payload['nose'])
478+
payload['fins'] = json.dumps(payload['fins'])
479+
payload['parachutes'] = json.dumps([stub_parachute_dump])
480+
payload['rail_buttons'] = json.dumps(stub_rail_buttons_dump)
481+
payload['tail'] = json.dumps(stub_tail_dump)
482+
483+
mock_controller_instance.put_rocket_by_id = AsyncMock(return_value=None)
484+
response = client.put('/rockets/123', json=payload)
485+
assert response.status_code == 204
486+
mock_controller_instance.put_rocket_by_id.assert_called_once_with(
487+
'123', RocketModel(**payload)
488+
)
489+
490+
443491
def test_update_rocket_invalid_input():
444492
response = client.put(
445493
'/rockets/123', json={'mass': 'foo', 'radius': 'bar'}

0 commit comments

Comments
 (0)