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

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) 

12 

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) 

20 

21 

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 

26 

27 

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 

33 

34 

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 ) 

45 

46 

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 

61 

62 

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 

67 

68 

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 ) 

79 

80 

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()) 

85 

86 

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 

93 

94 

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 ) 

104 

105 

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 

110 

111 

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