Skip to content

Commit 49e6283

Browse files
committed
fixed usage
1 parent a04b9f5 commit 49e6283

File tree

2 files changed

+57
-61
lines changed

2 files changed

+57
-61
lines changed

packages/postgres-database/tests/conftest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,8 +339,8 @@ async def _creator(product_name: str) -> Row:
339339
)
340340
assert result
341341
row = result.one()
342-
created_product_names.add(row.name)
343-
return row
342+
created_product_names.add(row.name)
343+
return row
344344

345345
yield _creator
346346

packages/postgres-database/tests/test_utils_user_preferences.py

Lines changed: 55 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# pylint: disable=inconsistent-return-statements
22
# pylint: disable=redefined-outer-name
33

4-
from collections.abc import AsyncIterator, Awaitable, Callable
4+
from collections.abc import Awaitable, Callable
55
from typing import Any
66

77
import pytest
@@ -14,7 +14,7 @@
1414
UserServicesUserPreferencesRepo,
1515
)
1616
from sqlalchemy.engine.row import Row
17-
from sqlalchemy.ext.asyncio import AsyncConnection, AsyncEngine
17+
from sqlalchemy.ext.asyncio import AsyncEngine
1818

1919

2020
@pytest.fixture
@@ -40,54 +40,49 @@ def preference_repo(request: pytest.FixtureRequest) -> type[BasePreferencesRepo]
4040
return request.param
4141

4242

43-
@pytest.fixture
44-
async def connection(
45-
asyncpg_engine: AsyncEngine,
46-
) -> AsyncIterator[AsyncConnection]:
47-
async with asyncpg_engine.begin() as connection:
48-
yield connection
49-
50-
5143
async def _assert_save_get_preference(
52-
connection: AsyncConnection,
44+
asyncpg_engine: AsyncEngine,
5345
preference_repo: type[BasePreferencesRepo],
5446
*,
5547
user_id: int,
5648
preference_name: str,
5749
product_name: str,
5850
payload: Any,
5951
) -> None:
60-
await preference_repo.save(
61-
connection,
62-
user_id=user_id,
63-
preference_name=preference_name,
64-
product_name=product_name,
65-
payload=payload,
66-
)
67-
get_res_2: Any | None = await preference_repo.load(
68-
connection,
69-
user_id=user_id,
70-
preference_name=preference_name,
71-
product_name=product_name,
72-
)
52+
async with asyncpg_engine.begin() as connection:
53+
await preference_repo.save(
54+
connection,
55+
user_id=user_id,
56+
preference_name=preference_name,
57+
product_name=product_name,
58+
payload=payload,
59+
)
60+
async with asyncpg_engine.connect() as connection:
61+
get_res_2: Any | None = await preference_repo.load(
62+
connection,
63+
user_id=user_id,
64+
preference_name=preference_name,
65+
product_name=product_name,
66+
)
7367
assert get_res_2 is not None
7468
assert get_res_2 == payload
7569

7670

7771
async def _assert_preference_not_saved(
78-
connection: AsyncConnection,
72+
asyncpg_engine: AsyncEngine,
7973
preference_repo: type[BasePreferencesRepo],
8074
*,
8175
user_id: int,
8276
preference_name: str,
8377
product_name: str,
8478
) -> None:
85-
not_found: Any | None = await preference_repo.load(
86-
connection,
87-
user_id=user_id,
88-
preference_name=preference_name,
89-
product_name=product_name,
90-
)
79+
async with asyncpg_engine.connect() as connection:
80+
not_found: Any | None = await preference_repo.load(
81+
connection,
82+
user_id=user_id,
83+
preference_name=preference_name,
84+
product_name=product_name,
85+
)
9186
assert not_found is None
9287

9388

@@ -102,26 +97,27 @@ def _get_random_payload(
10297
pytest.fail(f"Did not define a casa for {preference_repo=}. Please add one.")
10398

10499

105-
async def _get_user_id(connection: AsyncConnection, faker: Faker) -> int:
100+
async def _create_user_id(asyncpg_engine: AsyncEngine, faker: Faker) -> int:
106101
data = random_user(role=faker.random_element(elements=UserRole))
107-
user_id = await connection.scalar(
108-
users.insert().values(**data).returning(users.c.id)
109-
)
102+
async with asyncpg_engine.begin() as connection:
103+
user_id = await connection.scalar(
104+
users.insert().values(**data).returning(users.c.id)
105+
)
110106
assert user_id
111107
return user_id
112108

113109

114110
async def test_user_preference_repo_workflow(
115-
connection: AsyncConnection,
111+
asyncpg_engine: AsyncEngine,
116112
preference_repo: type[BasePreferencesRepo],
117113
preference_one: str,
118114
product_name: str,
119115
faker: Faker,
120116
):
121-
user_id = await _get_user_id(connection, faker)
117+
user_id = await _create_user_id(asyncpg_engine, faker)
122118
# preference is not saved
123119
await _assert_preference_not_saved(
124-
connection,
120+
asyncpg_engine,
125121
preference_repo,
126122
user_id=user_id,
127123
preference_name=preference_one,
@@ -134,7 +130,7 @@ async def test_user_preference_repo_workflow(
134130

135131
# store the preference for the first time
136132
await _assert_save_get_preference(
137-
connection,
133+
asyncpg_engine,
138134
preference_repo,
139135
user_id=user_id,
140136
preference_name=preference_one,
@@ -144,7 +140,7 @@ async def test_user_preference_repo_workflow(
144140

145141
# updating the preference still works
146142
await _assert_save_get_preference(
147-
connection,
143+
asyncpg_engine,
148144
preference_repo,
149145
user_id=user_id,
150146
preference_name=preference_one,
@@ -154,29 +150,29 @@ async def test_user_preference_repo_workflow(
154150

155151

156152
async def test__same_preference_name_product_name__different_users(
157-
connection: AsyncConnection,
153+
asyncpg_engine: AsyncEngine,
158154
preference_repo: type[BasePreferencesRepo],
159155
preference_one: str,
160156
product_name: str,
161157
faker: Faker,
162158
):
163-
user_id_1 = await _get_user_id(connection, faker)
164-
user_id_2 = await _get_user_id(connection, faker)
159+
user_id_1 = await _create_user_id(asyncpg_engine, faker)
160+
user_id_2 = await _create_user_id(asyncpg_engine, faker)
165161

166162
payload_1 = _get_random_payload(faker, preference_repo)
167163
payload_2 = _get_random_payload(faker, preference_repo)
168164
assert payload_1 != payload_2
169165

170166
# save preference for first user
171167
await _assert_preference_not_saved(
172-
connection,
168+
asyncpg_engine,
173169
preference_repo,
174170
user_id=user_id_1,
175171
preference_name=preference_one,
176172
product_name=product_name,
177173
)
178174
await _assert_save_get_preference(
179-
connection,
175+
asyncpg_engine,
180176
preference_repo,
181177
user_id=user_id_1,
182178
preference_name=preference_one,
@@ -186,14 +182,14 @@ async def test__same_preference_name_product_name__different_users(
186182

187183
# save preference for second user
188184
await _assert_preference_not_saved(
189-
connection,
185+
asyncpg_engine,
190186
preference_repo,
191187
user_id=user_id_2,
192188
preference_name=preference_one,
193189
product_name=product_name,
194190
)
195191
await _assert_save_get_preference(
196-
connection,
192+
asyncpg_engine,
197193
preference_repo,
198194
user_id=user_id_2,
199195
preference_name=preference_one,
@@ -203,7 +199,7 @@ async def test__same_preference_name_product_name__different_users(
203199

204200

205201
async def test__same_user_preference_name__different_product_name(
206-
connection: AsyncConnection,
202+
asyncpg_engine: AsyncEngine,
207203
create_fake_product: Callable[[str], Awaitable[Row]],
208204
preference_repo: type[BasePreferencesRepo],
209205
preference_one: str,
@@ -212,22 +208,22 @@ async def test__same_user_preference_name__different_product_name(
212208
product_1 = (await create_fake_product("fake-product-1"))[0]
213209
product_2 = (await create_fake_product("fake-product-2"))[0]
214210

215-
user_id = await _get_user_id(connection, faker)
211+
user_id = await _create_user_id(asyncpg_engine, faker)
216212

217213
payload_1 = _get_random_payload(faker, preference_repo)
218214
payload_2 = _get_random_payload(faker, preference_repo)
219215
assert payload_1 != payload_2
220216

221217
# save for first product_name
222218
await _assert_preference_not_saved(
223-
connection,
219+
asyncpg_engine,
224220
preference_repo,
225221
user_id=user_id,
226222
preference_name=preference_one,
227223
product_name=product_1,
228224
)
229225
await _assert_save_get_preference(
230-
connection,
226+
asyncpg_engine,
231227
preference_repo,
232228
user_id=user_id,
233229
preference_name=preference_one,
@@ -237,14 +233,14 @@ async def test__same_user_preference_name__different_product_name(
237233

238234
# save for second product_name
239235
await _assert_preference_not_saved(
240-
connection,
236+
asyncpg_engine,
241237
preference_repo,
242238
user_id=user_id,
243239
preference_name=preference_one,
244240
product_name=product_2,
245241
)
246242
await _assert_save_get_preference(
247-
connection,
243+
asyncpg_engine,
248244
preference_repo,
249245
user_id=user_id,
250246
preference_name=preference_one,
@@ -254,29 +250,29 @@ async def test__same_user_preference_name__different_product_name(
254250

255251

256252
async def test__same_product_name_user__different_preference_name(
257-
connection: AsyncConnection,
253+
asyncpg_engine: AsyncEngine,
258254
preference_repo: type[BasePreferencesRepo],
259255
preference_one: str,
260256
preference_two: str,
261257
product_name: str,
262258
faker: Faker,
263259
):
264-
user_id = await _get_user_id(connection, faker)
260+
user_id = await _create_user_id(asyncpg_engine, faker)
265261

266262
payload_1 = _get_random_payload(faker, preference_repo)
267263
payload_2 = _get_random_payload(faker, preference_repo)
268264
assert payload_1 != payload_2
269265

270266
# save first preference
271267
await _assert_preference_not_saved(
272-
connection,
268+
asyncpg_engine,
273269
preference_repo,
274270
user_id=user_id,
275271
preference_name=preference_one,
276272
product_name=product_name,
277273
)
278274
await _assert_save_get_preference(
279-
connection,
275+
asyncpg_engine,
280276
preference_repo,
281277
user_id=user_id,
282278
preference_name=preference_one,
@@ -286,14 +282,14 @@ async def test__same_product_name_user__different_preference_name(
286282

287283
# save second preference
288284
await _assert_preference_not_saved(
289-
connection,
285+
asyncpg_engine,
290286
preference_repo,
291287
user_id=user_id,
292288
preference_name=preference_two,
293289
product_name=product_name,
294290
)
295291
await _assert_save_get_preference(
296-
connection,
292+
asyncpg_engine,
297293
preference_repo,
298294
user_id=user_id,
299295
preference_name=preference_two,

0 commit comments

Comments
 (0)