Coverage for tests/tests_api/fixtures.py: 44%
68 statements
« prev ^ index » next coverage.py v7.6.2, created at 2024-10-10 03:02 +0300
« prev ^ index » next coverage.py v7.6.2, created at 2024-10-10 03:02 +0300
1import datetime
3import pytest_asyncio
4from mongodb import (
5 buf_col,
6 clients_col,
7 orders_col,
8 orgs_col,
9 subsidiaries_col,
10 trash_orders_col,
11)
12from sotrans_models.models.misc.client import ClientCreateModel, ClientDBModel
13from sotrans_models.models.orders.order import OrderDBModel, OrderStatus
14from utils.dt_utils import get_current_datetime
16from ..conftest import tmp_org, tmp_subsidiary, tmp_user
17from ..random_model import generate_models_json
20@pytest_asyncio.fixture
21async def tmp_client():
22 model_dump = generate_models_json(ClientCreateModel)
23 created = await clients_col.create(model_dump)
24 client = ClientDBModel(**created)
25 yield client
26 await clients_col.delete_by_id(client.id)
29@pytest_asyncio.fixture
30async def tmp_buffer_order(tmp_client):
31 model_dump = generate_models_json(
32 OrderDBModel,
33 {
34 "status": OrderStatus.buffer.value,
35 "client": tmp_client.model_dump(),
36 },
37 )
38 created = await buf_col.create(model_dump)
39 yield OrderDBModel(**created)
42@pytest_asyncio.fixture
43async def tmp_trash_order(tmp_client):
44 model_dump = generate_models_json(
45 OrderDBModel,
46 {
47 "status": OrderStatus.archived.value,
48 "client": tmp_client.model_dump(),
49 },
50 )
51 created = await trash_orders_col.create(model_dump)
52 yield OrderDBModel(**created)
55@pytest_asyncio.fixture
56async def tmp_confirmed_order(tmp_subsidiary, tmp_client):
57 model_dump = generate_models_json(
58 OrderDBModel,
59 {
60 "status": OrderStatus.confirmed.value,
61 "assigned": {
62 "company": {"subsidiary": tmp_subsidiary.model_dump()}
63 },
64 "client": tmp_client.model_dump(),
65 },
66 )
67 created = await orders_col.create(model_dump)
68 yield OrderDBModel(**created)
71@pytest_asyncio.fixture
72async def tmp_exchange_order(tmp_subsidiary, tmp_client):
73 model_dump = generate_models_json(
74 OrderDBModel,
75 {
76 "status": OrderStatus.exchange.value,
77 "start_price": 20_000,
78 "rate_step": 1_000,
79 "client": tmp_client.model_dump(),
80 "auction_end_time": get_current_datetime()
81 + datetime.timedelta(days=10),
82 "on_exchange_from": None,
83 "assigned": {
84 "company": {
85 "subsidiary": tmp_subsidiary.model_dump(format_ids=False)
86 }
87 },
88 },
89 )
90 created = await orders_col.create(model_dump)
91 yield OrderDBModel(**created)
94@pytest_asyncio.fixture
95async def tmp_exchange_duple(tmp_client):
96 model_dump = generate_models_json(
97 OrderDBModel,
98 {
99 "status": OrderStatus.exchange.value,
100 "start_price": 20_000,
101 "rate_step": 1_000,
102 "auction_end_time": get_current_datetime()
103 + datetime.timedelta(days=10),
104 "client": tmp_client.model_dump(),
105 },
106 )
107 created = await orders_col.create(model_dump)
108 yield OrderDBModel(**created)
111@pytest_asyncio.fixture
112async def update_org_with_employee(tmp_org, tmp_user):
113 await orgs_col.collection.update_one(
114 {"id": tmp_org.id}, {"$set": {"employees": [tmp_user.model_dump()]}}
115 )
118@pytest_asyncio.fixture
119async def update_subsidiary_with_employee(tmp_subsidiary, tmp_user):
120 await subsidiaries_col.update_by_id(
121 tmp_subsidiary.id, {"employees": [tmp_user.model_dump()]}
122 )
123 yield tmp_subsidiary
126@pytest_asyncio.fixture
127async def tmp_appointment_order(tmp_subsidiary, tmp_client):
128 tmp_order = generate_models_json(
129 OrderDBModel,
130 {
131 "status": OrderStatus.appointment.value,
132 "assigned": {
133 "company": {"subsidiary": tmp_subsidiary.model_dump()}
134 },
135 "client": tmp_client.model_dump(),
136 },
137 )
138 created = await orders_col.create(tmp_order)
139 order = OrderDBModel(**created)
140 yield order
141 await orders_col.delete_by_id(order.id)
144@pytest_asyncio.fixture
145async def tmp_canceled_order(tmp_subsidiary, tmp_client):
146 tmp_order = generate_models_json(
147 OrderDBModel,
148 {
149 "status": OrderStatus.canceled.value,
150 "assigned": {
151 "company": {"subsidiary": tmp_subsidiary.model_dump()}
152 },
153 "client": tmp_client.model_dump(),
154 },
155 )
156 created = await orders_col.create(tmp_order)
157 order = OrderDBModel(**created)
158 yield order
159 await orders_col.delete_by_id(order.id)
162@pytest_asyncio.fixture
163async def tmp_unverified_order(tmp_org, tmp_subsidiary, tmp_client):
164 tmp_order = generate_models_json(
165 OrderDBModel,
166 {
167 "status": OrderStatus.unverified.value,
168 "carrier": tmp_org.model_dump(),
169 "assigned": {
170 "company": {"subsidiary": tmp_subsidiary.model_dump()}
171 },
172 "client": tmp_client.model_dump(),
173 },
174 )
175 created = await orders_col.create(tmp_order)
176 order = OrderDBModel(**created)
177 yield order
178 await orders_col.delete_by_id(order.id)