Skip to content

Commit 9141ca9

Browse files
committed
fix fixture and test
1 parent 6e3d2af commit 9141ca9

File tree

3 files changed

+37
-24
lines changed

3 files changed

+37
-24
lines changed

packages/postgres-database/tests/conftest.py

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from aiopg.sa.engine import Engine
2020
from aiopg.sa.result import ResultProxy, RowProxy
2121
from faker import Faker
22+
from models_library.products import ProductName
2223
from pytest_simcore.helpers import postgres_tools
2324
from pytest_simcore.helpers.faker_factories import (
2425
random_group,
@@ -38,6 +39,7 @@
3839
user_to_groups,
3940
users,
4041
)
42+
from sqlalchemy.engine.row import Row
4143
from sqlalchemy.ext.asyncio import AsyncEngine, create_async_engine
4244

4345
pytest_plugins = [
@@ -324,18 +326,26 @@ async def _creator(project_uuid: uuid.UUID) -> ProjectNode:
324326

325327

326328
@pytest.fixture
327-
def create_fake_product(
328-
connection: aiopg.sa.connection.SAConnection,
329-
) -> Callable[..., Awaitable[RowProxy]]:
330-
async def _creator(product_name: str) -> RowProxy:
331-
result = await connection.execute(
332-
sa.insert(products)
333-
.values(name=product_name, host_regex=".*")
334-
.returning(sa.literal_column("*"))
335-
)
336-
assert result
337-
row = await result.first()
338-
assert row
339-
return row
329+
async def create_fake_product(
330+
asyncpg_engine: AsyncEngine,
331+
) -> AsyncIterator[Callable[[ProductName], Awaitable[Row]]]:
332+
created_product_names = set()
333+
334+
async def _creator(product_name: ProductName) -> Row:
335+
async with asyncpg_engine.begin() as connection:
336+
result = await connection.execute(
337+
sa.insert(products)
338+
.values(name=product_name, host_regex=".*")
339+
.returning(sa.literal_column("*"))
340+
)
341+
assert result
342+
row = result.one()
343+
created_product_names.add(row.name)
344+
return row
340345

341-
return _creator
346+
yield _creator
347+
348+
async with asyncpg_engine.begin() as conn:
349+
await conn.execute(
350+
products.delete().where(products.c.name.in_(created_product_names))
351+
)

packages/postgres-database/tests/test_utils_groups_extra_properties.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import sqlalchemy
1212
from aiopg.sa.result import RowProxy
1313
from faker import Faker
14+
from models_library.products import ProductName
1415
from simcore_postgres_database.models.groups import GroupType, groups, user_to_groups
1516
from simcore_postgres_database.models.groups_extra_properties import (
1617
groups_extra_properties,
@@ -21,6 +22,7 @@
2122
GroupExtraPropertiesRepo,
2223
)
2324
from sqlalchemy import literal_column
25+
from sqlalchemy.engine.row import Row
2426
from sqlalchemy.ext.asyncio import AsyncEngine
2527

2628

@@ -84,7 +86,7 @@ async def test_get(
8486
connection: aiopg.sa.connection.SAConnection,
8587
registered_user: RowProxy,
8688
product_name: str,
87-
create_fake_product: Callable[..., Awaitable[RowProxy]],
89+
create_fake_product: Callable[[ProductName], Awaitable[Row]],
8890
create_fake_group_extra_properties: Callable[..., Awaitable[GroupExtraProperties]],
8991
):
9092
with pytest.raises(GroupExtraPropertiesNotFoundError):
@@ -106,7 +108,7 @@ async def test_get_v2(
106108
asyncpg_engine: AsyncEngine,
107109
registered_user: RowProxy,
108110
product_name: str,
109-
create_fake_product: Callable[..., Awaitable[RowProxy]],
111+
create_fake_product: Callable[[ProductName], Awaitable[Row]],
110112
create_fake_group_extra_properties: Callable[..., Awaitable[GroupExtraProperties]],
111113
):
112114
with pytest.raises(GroupExtraPropertiesNotFoundError):
@@ -157,7 +159,7 @@ async def test_get_aggregated_properties_for_user_returns_properties_in_expected
157159
connection: aiopg.sa.connection.SAConnection,
158160
product_name: str,
159161
registered_user: RowProxy,
160-
create_fake_product: Callable[..., Awaitable[RowProxy]],
162+
create_fake_product: Callable[[ProductName], Awaitable[Row]],
161163
create_fake_group: Callable[..., Awaitable[RowProxy]],
162164
create_fake_group_extra_properties: Callable[..., Awaitable[GroupExtraProperties]],
163165
everyone_group_id: int,
@@ -227,7 +229,7 @@ async def test_get_aggregated_properties_for_user_returns_properties_in_expected
227229
connection: aiopg.sa.connection.SAConnection,
228230
product_name: str,
229231
registered_user: RowProxy,
230-
create_fake_product: Callable[..., Awaitable[RowProxy]],
232+
create_fake_product: Callable[[ProductName], Awaitable[Row]],
231233
create_fake_group: Callable[..., Awaitable[RowProxy]],
232234
create_fake_group_extra_properties: Callable[..., Awaitable[GroupExtraProperties]],
233235
everyone_group_id: int,
@@ -274,7 +276,7 @@ async def test_get_aggregated_properties_for_user_returns_property_values_as_tru
274276
connection: aiopg.sa.connection.SAConnection,
275277
product_name: str,
276278
registered_user: RowProxy,
277-
create_fake_product: Callable[..., Awaitable[RowProxy]],
279+
create_fake_product: Callable[[ProductName], Awaitable[Row]],
278280
create_fake_group: Callable[..., Awaitable[RowProxy]],
279281
create_fake_group_extra_properties: Callable[..., Awaitable[GroupExtraProperties]],
280282
everyone_group_id: int,
@@ -385,7 +387,7 @@ async def test_get_aggregated_properties_for_user_returns_property_values_as_tru
385387
connection: aiopg.sa.connection.SAConnection,
386388
product_name: str,
387389
registered_user: RowProxy,
388-
create_fake_product: Callable[..., Awaitable[RowProxy]],
390+
create_fake_product: Callable[[ProductName], Awaitable[Row]],
389391
create_fake_group: Callable[..., Awaitable[RowProxy]],
390392
create_fake_group_extra_properties: Callable[..., Awaitable[GroupExtraProperties]],
391393
everyone_group_id: int,

packages/postgres-database/tests/test_utils_user_preferences.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
from typing import Any
66

77
import pytest
8-
from aiopg.sa.connection import AsyncConnection
9-
from aiopg.sa.result import RowProxy
108
from faker import Faker
119
from pytest_simcore.helpers.faker_factories import random_user
1210
from simcore_postgres_database.models.users import UserRole, users
@@ -15,6 +13,7 @@
1513
FrontendUserPreferencesRepo,
1614
UserServicesUserPreferencesRepo,
1715
)
16+
from sqlalchemy.engine.row import Row
1817
from sqlalchemy.ext.asyncio import AsyncConnection, AsyncEngine
1918

2019

@@ -29,7 +28,9 @@ def preference_two() -> str:
2928

3029

3130
@pytest.fixture
32-
async def product_name(create_fake_product: Callable[..., Awaitable[RowProxy]]) -> str:
31+
async def product_name(
32+
create_fake_product: Callable[[ProductName], Awaitable[Row]],
33+
) -> str:
3334
product = await create_fake_product("fake-product")
3435
return product[0]
3536

@@ -203,7 +204,7 @@ async def test__same_preference_name_product_name__different_users(
203204

204205
async def test__same_user_preference_name__different_product_name(
205206
connection: AsyncConnection,
206-
create_fake_product: Callable[..., Awaitable[RowProxy]],
207+
create_fake_product: Callable[[ProductName], Awaitable[Row]],
207208
preference_repo: type[BasePreferencesRepo],
208209
preference_one: str,
209210
faker: Faker,

0 commit comments

Comments
 (0)