Skip to content

Commit 41386ed

Browse files
committed
#812 Attempted fix to modifier tests
1 parent 53aec08 commit 41386ed

4 files changed

Lines changed: 52 additions & 63 deletions

File tree

src/backend_api/app/api/routes/currency.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ async def create_currency(
135135

136136

137137
@router.put(
138-
"/{currencyId}",
138+
"/",
139139
response_model=schemas.Currency,
140140
dependencies=[
141141
Depends(get_current_active_superuser),
@@ -162,7 +162,7 @@ async def update_currency(
162162

163163

164164
@router.delete(
165-
"/{currencyId}",
165+
"/",
166166
response_model=str,
167167
dependencies=[
168168
Depends(get_current_active_superuser),

src/backend_api/app/api/routes/item_base_type.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ async def create_item_base_type(
113113

114114

115115
@router.put(
116-
"/{itemBaseTypeId}",
116+
"/",
117117
response_model=schemas.ItemBaseType,
118118
dependencies=[
119119
Depends(get_current_active_superuser),
@@ -141,7 +141,7 @@ async def update_item_base_type(
141141

142142

143143
@router.delete(
144-
"/{itemBaseTypeId}",
144+
"/",
145145
response_model=str,
146146
dependencies=[Depends(get_current_active_superuser)],
147147
)

src/backend_api/app/tests/test_simulating_env/api/api_routes_test_base.py

Lines changed: 45 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ async def test_create_on_duplicate_pkey(
176176
on_duplicate_params: tuple[bool, str | None],
177177
) -> None:
178178
"""Test create found duplicate instance"""
179-
on_duplicate_pkey_do_nothing = on_duplicate_params[0]
179+
# on_duplicate_pkey_do_nothing = on_duplicate_params[0]
180180
# if not on_duplicate_pkey_do_nothing:
181181
# TODO: Make test database mock with unique constraints
182182
pytest.skip(
@@ -398,7 +398,6 @@ async def test_update_instance(
398398
object_generator_func: Callable[[], tuple[dict, ModelType]],
399399
route_prefix: str,
400400
model_table_name: str,
401-
unique_identifier: str,
402401
update_request_params: bool,
403402
ignore_test_columns: list[str],
404403
is_hypertable: bool,
@@ -429,7 +428,8 @@ async def test_update_instance(
429428
update_obj_pk_map = self._create_primary_key_map(update_object_out)
430429

431430
delete_response = await async_client.delete(
432-
f"{settings.API_V1_STR}/{route_prefix}/{update_obj_pk_map[unique_identifier]}",
431+
f"{settings.API_V1_STR}/{route_prefix}/",
432+
params=update_obj_pk_map,
433433
headers=superuser_token_headers,
434434
) # delete the object to avoid unique constraint errorspå
435435
assert delete_response.status_code == 200
@@ -439,24 +439,18 @@ async def test_update_instance(
439439
content_delete
440440
== get_delete_return_msg(
441441
model_table_name=model_table_name,
442-
filter={unique_identifier: update_obj_pk_map[unique_identifier]},
442+
filter=update_obj_pk_map,
443443
).message
444444
)
445445

446446
if update_request_params:
447447
obj_out_pk_map = self._create_primary_key_map(object_out)
448-
response = await async_client.put(
449-
f"{settings.API_V1_STR}/{route_prefix}/",
450-
headers=superuser_token_headers,
451-
json=update_object_dict,
452-
params=obj_out_pk_map,
453-
)
454-
else:
455-
response = await async_client.put(
456-
f"{settings.API_V1_STR}/{route_prefix}/{obj_out_pk_map[unique_identifier]}",
457-
headers=superuser_token_headers,
458-
json=update_object_dict,
459-
)
448+
response = await async_client.put(
449+
f"{settings.API_V1_STR}/{route_prefix}/",
450+
headers=superuser_token_headers,
451+
json=update_object_dict,
452+
params=obj_out_pk_map,
453+
)
460454
assert response.status_code == 200
461455
content = response.json()
462456

@@ -476,8 +470,6 @@ async def test_update_instance_not_found(
476470
object_generator_func: Callable[[], tuple[dict, ModelType]],
477471
route_prefix: str,
478472
model_table_name: str,
479-
update_request_params: bool,
480-
unique_identifier: str,
481473
is_hypertable: bool,
482474
) -> None:
483475
"""Test update instance not found
@@ -507,7 +499,8 @@ async def test_update_instance_not_found(
507499
update_obj_out_pk_map = self._create_primary_key_map(update_object_out)
508500

509501
delete_response = await async_client.delete(
510-
f"{settings.API_V1_STR}/{route_prefix}/{update_obj_out_pk_map[unique_identifier]}",
502+
f"{settings.API_V1_STR}/{route_prefix}/",
503+
params=update_obj_out_pk_map,
511504
headers=superuser_token_headers,
512505
) # delete the object to avoid unique constraint errors
513506
assert delete_response.status_code == 200
@@ -518,27 +511,20 @@ async def test_update_instance_not_found(
518511
content_delete
519512
== get_delete_return_msg(
520513
model_table_name=model_table_name,
521-
filter={unique_identifier: update_obj_out_pk_map[unique_identifier]},
514+
filter=update_obj_out_pk_map,
522515
).message
523516
)
524517

525518
not_found_object = 999
526519
for key in update_obj_out_pk_map:
527520
update_obj_out_pk_map[key] = not_found_object
528521

529-
if update_request_params:
530-
response = await async_client.put(
531-
f"{settings.API_V1_STR}/{route_prefix}/",
532-
headers=superuser_token_headers,
533-
json=update_object_dict,
534-
params=update_obj_out_pk_map,
535-
)
536-
else:
537-
response = await async_client.put(
538-
f"{settings.API_V1_STR}/{route_prefix}/{not_found_object}",
539-
headers=superuser_token_headers,
540-
json=update_object_dict,
541-
)
522+
response = await async_client.put(
523+
f"{settings.API_V1_STR}/{route_prefix}/",
524+
headers=superuser_token_headers,
525+
json=update_object_dict,
526+
params=update_obj_out_pk_map,
527+
)
542528

543529
db_obj_does_not_exist_error = DbObjectDoesNotExistError(
544530
model_table_name=model_table_name,
@@ -558,8 +544,6 @@ async def test_update_instance_not_enough_permissions(
558544
route_prefix: str,
559545
model_table_name: str,
560546
superuser_token_headers: dict[str, str],
561-
unique_identifier: str,
562-
update_request_params: bool,
563547
is_hypertable: bool,
564548
) -> None:
565549
"""Test update instance not enough permissions
@@ -591,7 +575,8 @@ async def test_update_instance_not_enough_permissions(
591575
update_obj_pk_map = self._create_primary_key_map(update_object_out)
592576

593577
delete_response = await async_client.delete(
594-
f"{settings.API_V1_STR}/{route_prefix}/{update_obj_pk_map[unique_identifier]}",
578+
f"{settings.API_V1_STR}/{route_prefix}/",
579+
params=update_obj_pk_map,
595580
headers=superuser_token_headers,
596581
) # delete the object to avoid unique constraint errors
597582
assert delete_response.status_code == 200
@@ -602,21 +587,15 @@ async def test_update_instance_not_enough_permissions(
602587
content_delete
603588
== get_delete_return_msg(
604589
model_table_name=model_table_name,
605-
filter={unique_identifier: update_obj_pk_map[unique_identifier]},
590+
filter=update_obj_pk_map,
606591
).message
607592
)
608593

609-
if update_request_params:
610-
response = await async_client.put(
611-
f"{settings.API_V1_STR}/{route_prefix}/",
612-
json=update_object_dict,
613-
params=obj_pk_map,
614-
)
615-
else:
616-
response = await async_client.put(
617-
f"{settings.API_V1_STR}/{route_prefix}/{obj_pk_map[unique_identifier]}",
618-
json=update_object_dict,
619-
)
594+
response = await async_client.put(
595+
f"{settings.API_V1_STR}/{route_prefix}/",
596+
json=update_object_dict,
597+
params=obj_pk_map,
598+
)
620599
invalid_token_error = InvalidTokenError(
621600
token=None,
622601
function_name=UserCache.verify_token.__name__,
@@ -635,7 +614,6 @@ async def test_delete_instance(
635614
object_generator_func: Callable[[], tuple[dict, ModelType]],
636615
route_prefix: str,
637616
model_table_name: str,
638-
unique_identifier: str,
639617
is_hypertable: bool,
640618
) -> None:
641619
"""Test delete instance
@@ -660,7 +638,8 @@ async def test_delete_instance(
660638
update_obj_pk_map = self._create_primary_key_map(update_object_out)
661639

662640
response = await async_client.delete(
663-
f"{settings.API_V1_STR}/{route_prefix}/{update_obj_pk_map[unique_identifier]}",
641+
f"{settings.API_V1_STR}/{route_prefix}/",
642+
params=update_obj_pk_map,
664643
headers=superuser_token_headers,
665644
)
666645
assert response.status_code == 200
@@ -670,18 +649,19 @@ async def test_delete_instance(
670649
content
671650
== get_delete_return_msg(
672651
model_table_name=model_table_name,
673-
filter={unique_identifier: update_obj_pk_map[unique_identifier]},
652+
filter=update_obj_pk_map,
674653
).message
675654
)
676655

677656
@pytest.mark.anyio
678657
async def test_delete_instance_not_found(
679658
self,
680659
async_client: AsyncClient,
660+
db: Session,
681661
superuser_token_headers: dict[str, str],
662+
object_generator_func: Callable[[], tuple[dict, ModelType]],
682663
route_prefix: str,
683664
model_table_name: str,
684-
unique_identifier: str,
685665
crud_instance: CRUDBase,
686666
is_hypertable: bool,
687667
) -> None:
@@ -697,14 +677,23 @@ async def test_delete_instance_not_found(
697677
if is_hypertable:
698678
pytest.skip("Hypertables doesn't support delete object operations")
699679

700-
not_found_object = 999
680+
object_dict, object_out = await self._create_random_object_crud(
681+
db, object_generator_func
682+
) # create the object to update and add to the db
683+
self._test_object(object_out, object_dict)
684+
685+
delete_obj_out_pk_map = self._create_primary_key_map(object_out)
686+
for key in delete_obj_out_pk_map.keys():
687+
delete_obj_out_pk_map[key] = 999
688+
701689
response = await async_client.delete(
702-
f"{settings.API_V1_STR}/{route_prefix}/{not_found_object}",
690+
f"{settings.API_V1_STR}/{route_prefix}/",
691+
params=delete_obj_out_pk_map,
703692
headers=superuser_token_headers,
704693
)
705694
db_obj_not_exists_error = DbObjectDoesNotExistError(
706695
model_table_name=model_table_name,
707-
filter={unique_identifier: not_found_object},
696+
filter=delete_obj_out_pk_map,
708697
function_name=crud_instance.remove.__name__,
709698
class_name=crud_instance.__class__.__name__,
710699
)
@@ -719,7 +708,6 @@ async def test_delete_instance_not_enough_permissions(
719708
db: Session,
720709
object_generator_func: Callable[[], tuple[dict, ModelType]],
721710
route_prefix: str,
722-
unique_identifier: str,
723711
is_hypertable: bool,
724712
) -> None:
725713
"""Test delete instance not enough permissions
@@ -740,7 +728,7 @@ async def test_delete_instance_not_enough_permissions(
740728
_, object_out = await self._create_random_object_crud(db, object_generator_func)
741729
obj_out_pk_map = self._create_primary_key_map(object_out)
742730
response = await async_client.delete(
743-
f"{settings.API_V1_STR}/{route_prefix}/{obj_out_pk_map[unique_identifier]}",
731+
f"{settings.API_V1_STR}/{route_prefix}/", params=obj_out_pk_map
744732
)
745733
invalid_token_error = InvalidTokenError(
746734
token=None,

src/backend_api/app/tests/test_simulating_env/api/routes/test_modifier.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,14 @@ def create_random_object_func() -> Callable[[], dict]:
107107
async def get_object_from_api_normal_user(
108108
async_client: AsyncClient,
109109
route_prefix: str,
110-
unique_identifier: str,
110+
_: str,
111111
normal_user_token_headers: dict[str, str],
112112
) -> Callable[[Any, Any], Awaitable[Any]]:
113113
async def _get_object(object_pk_map: dict[str, Any]) -> Response:
114114
response = await async_client.get(
115-
f"{settings.API_V1_STR}/{route_prefix}/{object_pk_map[unique_identifier]}",
115+
f"{settings.API_V1_STR}/{route_prefix}/",
116116
headers=normal_user_token_headers,
117+
params=object_pk_map,
117118
)
118119
return response
119120

0 commit comments

Comments
 (0)