1
1
from fastapi import status
2
2
from httpx import AsyncClient
3
+ from sqlalchemy .ext .asyncio import AsyncSession
3
4
from that_depends import Provide , inject
4
5
5
6
from app import ioc
6
- from app .repositories import CardsService , DecksService
7
7
from tests import factories
8
8
9
9
10
10
@inject
11
11
async def test_get_cards_empty (
12
12
client : AsyncClient ,
13
- decks_service : DecksService = Provide [ioc .IOCContainer .decks_service ],
13
+ session : AsyncSession = Provide [ioc .IOCContainer .session ],
14
14
) -> None :
15
- deck = factories .DeckModelFactory .build ()
16
- await decks_service . create ( deck )
15
+ factories .DeckModelFactory .__async_session__ = session
16
+ deck = await factories . DeckModelFactory . create_async ( )
17
17
18
18
response = await client .get (f"/api/decks/{ deck .id } /cards/" )
19
19
assert response .status_code == status .HTTP_200_OK
@@ -26,14 +26,12 @@ async def test_get_cards_empty(
26
26
@inject
27
27
async def test_get_cards (
28
28
client : AsyncClient ,
29
- decks_service : DecksService = Provide [ioc .IOCContainer .decks_service ],
30
- cards_repo : CardsService = Provide [ioc .IOCContainer .cards_service ],
29
+ session : AsyncSession = Provide [ioc .IOCContainer .session ],
31
30
) -> None :
32
- deck = factories .DeckModelFactory .build ()
33
- await decks_service .create (deck )
34
-
35
- card = factories .CardModelFactory .build (deck_id = deck .id )
36
- await cards_repo .create (card )
31
+ factories .DeckModelFactory .__async_session__ = session
32
+ factories .CardModelFactory .__async_session__ = session
33
+ deck = await factories .DeckModelFactory .create_async ()
34
+ card = await factories .CardModelFactory .create_async (deck_id = deck .id )
37
35
38
36
response = await client .get (f"/api/decks/{ card .deck_id } /cards/" )
39
37
assert response .status_code == status .HTTP_200_OK
@@ -46,14 +44,12 @@ async def test_get_cards(
46
44
@inject
47
45
async def test_get_card (
48
46
client : AsyncClient ,
49
- decks_service : DecksService = Provide [ioc .IOCContainer .decks_service ],
50
- cards_repo : CardsService = Provide [ioc .IOCContainer .cards_service ],
47
+ session : AsyncSession = Provide [ioc .IOCContainer .session ],
51
48
) -> None :
52
- deck = factories .DeckModelFactory .build ()
53
- await decks_service .create (deck )
54
-
55
- card = factories .CardModelFactory .build (deck_id = deck .id )
56
- await cards_repo .create (card )
49
+ factories .DeckModelFactory .__async_session__ = session
50
+ factories .CardModelFactory .__async_session__ = session
51
+ deck = await factories .DeckModelFactory .create_async ()
52
+ card = await factories .CardModelFactory .create_async (deck_id = deck .id )
57
53
58
54
response = await client .get (f"/api/cards/{ card .id } /" )
59
55
assert response .status_code == status .HTTP_200_OK
@@ -69,11 +65,10 @@ async def test_get_card_not_exist(client: AsyncClient) -> None:
69
65
@inject
70
66
async def test_create_cards (
71
67
client : AsyncClient ,
72
- decks_service : DecksService = Provide [ioc .IOCContainer .decks_service ],
68
+ session : AsyncSession = Provide [ioc .IOCContainer .session ],
73
69
) -> None :
74
- # bulk create
75
- deck = factories .DeckModelFactory .build ()
76
- await decks_service .create (deck )
70
+ factories .DeckModelFactory .__async_session__ = session
71
+ deck = await factories .DeckModelFactory .create_async ()
77
72
78
73
cards_to_create = [factories .CardCreateSchemaFactory .build (), factories .CardCreateSchemaFactory .build ()]
79
74
response = await client .post (
@@ -107,16 +102,12 @@ async def test_create_cards(
107
102
@inject
108
103
async def test_update_cards (
109
104
client : AsyncClient ,
110
- decks_service : DecksService = Provide [ioc .IOCContainer .decks_service ],
111
- cards_repo : CardsService = Provide [ioc .IOCContainer .cards_service ],
105
+ session : AsyncSession = Provide [ioc .IOCContainer .session ],
112
106
) -> None :
113
- deck = factories .DeckModelFactory .build ()
114
- await decks_service .create (deck )
115
-
116
- card1 = factories .CardModelFactory .build (deck_id = deck .id )
117
- card2 = factories .CardModelFactory .build (deck_id = deck .id )
118
- await cards_repo .create (card1 )
119
- await cards_repo .create (card2 )
107
+ factories .DeckModelFactory .__async_session__ = session
108
+ factories .CardModelFactory .__async_session__ = session
109
+ deck = await factories .DeckModelFactory .create_async ()
110
+ card1 , card2 = await factories .CardModelFactory .create_batch_async (size = 2 , deck_id = deck .id )
120
111
121
112
updated_data = [
122
113
{
0 commit comments