Coverage for tests/tests_api/orders/exchange.py: 39%
51 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 pytest
2from sotrans_models.models.orders.bid import BidDBModel
3from sotrans_models.models.orders.order import (
4 OrderDBModel,
5 OrderStatus,
6 ResourceCheckOrderDBModel,
7)
8from sotrans_models.models.responses import (
9 GenericGetListResponse,
10 MultiselectError,
11)
13from ...conftest import tmp_org, tmp_user
14from ...tests_api.auth import test_client, token
15from ..fixtures import (
16 tmp_exchange_duple,
17 tmp_exchange_order,
18 update_org_with_employee,
19)
22def test_get_xch_by_id(tmp_exchange_order, test_client):
23 resp = test_client.get(f"/exchange-orders/{tmp_exchange_order.id}")
24 assert resp.status_code == 200
25 assert OrderDBModel(**resp.json()).status == OrderStatus.exchange
28def test_put_to_appointment(tmp_exchange_order, test_client):
29 resp = test_client.put(
30 f"/exchange-orders/{tmp_exchange_order.id}/to-appointment"
31 )
32 assert resp.status_code == 200
35def test_bid_for_order(tmp_exchange_order, test_client):
36 value = tmp_exchange_order.start_price + 1000
37 resp = test_client.put(
38 f"/exchange-orders/{tmp_exchange_order.id}/bid", json={"value": value}
39 )
40 assert (
41 resp.status_code == 201
42 and BidDBModel(**resp.json()).value == value
43 or resp.status_code == 404
44 )
47def test_confirm_order(
48 tmp_exchange_order,
49 test_client,
50 tmp_org,
51 tmp_user,
52 update_org_with_employee,
53):
54 carrier = tmp_org.model_dump(format_ids=False, mode="json")
55 carrier["employees"] = [tmp_user.model_dump(format_ids=False)]
56 resp = test_client.put(
57 f"/exchange-orders/{tmp_exchange_order.id}/to-confirmed",
58 json={"carrier": carrier},
59 )
60 assert resp.status_code == 200
63def test_get_exchange(test_client, tmp_exchange_order):
64 resp = test_client.get("/exchange-orders")
65 assert resp.status_code == 200
66 assert GenericGetListResponse[OrderDBModel](**resp.json()).total > 0
69@pytest.mark.skip # no organization?
70def test_get_verified(test_client, tmp_exchange_order):
71 resp = test_client.get(
72 f"/exchange-orders/{tmp_exchange_order.id}/verification"
73 )
74 assert resp.status_code == 200
75 assert (
76 ResourceCheckOrderDBModel(**resp.json()).resource_check_passing
77 is False
78 )
81def test_my_bids(test_client):
82 resp = test_client.get("/exchange-orders/my-bids")
83 assert resp.status_code == 200
84 assert GenericGetListResponse[OrderDBModel](**resp.json())
87def test_to_trash(test_client, tmp_exchange_order, tmp_exchange_duple):
88 resp = test_client.put(
89 f"/exchange-orders/{tmp_exchange_order.id},{tmp_exchange_duple.id}/to-trash"
90 )
91 assert resp.status_code == 200
92 assert not MultiselectError(**resp.json()).raised_ids
95def test_to_reserved(test_client, tmp_exchange_order):
96 resp = test_client.put(
97 f"/exchange-orders/{tmp_exchange_order.id}/to-reserved"
98 )
99 assert resp.status_code == 200
100 assert (
101 str(tmp_exchange_order.id)[-6:]
102 in MultiselectError(**resp.json()).raised_ids
103 )
106@pytest.mark.xfail # failing on testing stage
107def test_xlsx(test_client):
108 resp = test_client.get("/exchange-orders/xlsx")
109 assert resp.status_code == 200
112def test_to_buffer(test_client, tmp_exchange_order):
113 resp = test_client.put(
114 f"/exchange-orders/{tmp_exchange_order.id}/to-buffer"
115 )
116 assert resp.status_code == 200