66import itertools
77import random
88from random import randint
9- from typing import Any , AsyncIterator , Callable , Iterable , Iterator
9+ from typing import Any , AsyncIterator , Awaitable , Callable , Iterable , Iterator
1010
1111import pytest
1212import respx
2424 services_access_rights ,
2525 services_meta_data ,
2626)
27+ from sqlalchemy import tuple_
2728from sqlalchemy .dialects .postgresql import insert as pg_insert
2829from sqlalchemy .ext .asyncio import AsyncEngine
2930from starlette .testclient import TestClient
@@ -178,7 +179,7 @@ async def user_groups_ids(
178179@pytest .fixture ()
179180async def services_db_tables_injector (
180181 sqlalchemy_async_engine : AsyncEngine ,
181- ) -> AsyncIterator [Callable ]:
182+ ) -> AsyncIterator [Callable [[ list [ tuple ]], Awaitable [ None ]] ]:
182183 """Returns a helper function to init
183184 services_meta_data and services_access_rights tables
184185
@@ -205,6 +206,7 @@ async def services_db_tables_injector(
205206 )
206207 """
207208 # pylint: disable=no-value-for-parameter
209+ inserted_services : set [tuple [str , str ]] = set ()
208210
209211 async def inject_in_db (fake_catalog : list [tuple ]):
210212 # [(service, ar1, ...), (service2, ar1, ...) ]
@@ -221,6 +223,7 @@ async def inject_in_db(fake_catalog: list[tuple]):
221223 set_ = service ,
222224 )
223225 await conn .execute (upsert_meta )
226+ inserted_services .add ((service ["key" ], service ["version" ]))
224227
225228 for access_rights in itertools .chain (items [1 :] for items in fake_catalog ):
226229 stmt_access = services_access_rights .insert ().values (access_rights )
@@ -229,8 +232,13 @@ async def inject_in_db(fake_catalog: list[tuple]):
229232 yield inject_in_db
230233
231234 async with sqlalchemy_async_engine .begin () as conn :
232- await conn .execute (services_access_rights .delete ())
233- await conn .execute (services_meta_data .delete ())
235+ await conn .execute (
236+ services_meta_data .delete ().where (
237+ tuple_ (services_meta_data .c .key , services_meta_data .c .version ).in_ (
238+ inserted_services
239+ )
240+ )
241+ )
234242
235243
236244@pytest .fixture ()
0 commit comments