Coverage for tests/tests_api/orders/buffer.py: 41%

39 statements  

« prev     ^ index     » next       coverage.py v7.6.2, created at 2024-10-10 03:02 +0300

1import pytest 

2from sotrans_models.models.orders.order import ( 

3 OrderCreateModel, 

4 OrderDBModel, 

5 OrderStatus, 

6) 

7from sotrans_models.models.responses import MultiselectError 

8 

9from ...conftest import tmp_subsidiary, tmp_user 

10from ...random_model import generate_models_json 

11from ..auth import test_client, token 

12from ..fixtures import ( 

13 tmp_buffer_order, 

14 tmp_client, 

15 update_org_with_employee, 

16 update_subsidiary_with_employee, 

17) 

18 

19 

20def test_create_order(test_client, tmp_client): 

21 model_dump = generate_models_json( 

22 OrderCreateModel, 

23 { 

24 "client": {"id": tmp_client.id}, 

25 "status": "buffer", 

26 "start_price": None, 

27 "carrier": None, 

28 }, 

29 ) 

30 resp = test_client.post("/buffer-orders", json=model_dump) 

31 assert resp.status_code == 201 

32 o = OrderDBModel(**resp.json()) 

33 assert o.status == OrderStatus.buffer 

34 assert o.client.inn == tmp_client.inn 

35 

36 

37@pytest.mark.xfail 

38def test_order_assignment( 

39 test_client, tmp_buffer_order, update_subsidiary_with_employee 

40): 

41 resp = test_client.put( 

42 f"/buffer-orders/{tmp_buffer_order.id}/to-appointment", 

43 json={ 

44 "assigned": { 

45 "company": { 

46 "subsidiary": { 

47 "id": str(update_subsidiary_with_employee.id) 

48 } 

49 } 

50 }, 

51 }, 

52 ) 

53 assert resp.status_code == 200 

54 assert not MultiselectError(**resp.json()).raised_ids 

55 

56 

57def test_buffer_to_trash(test_client, tmp_buffer_order): 

58 resp = test_client.put(f"/buffer-orders/{tmp_buffer_order.id}/to-trash") 

59 assert resp.status_code == 200 

60 assert not MultiselectError(**resp.json()).raised_ids 

61 

62 

63def test_buf_by_id(test_client, tmp_buffer_order): 

64 resp = test_client.get(f"/buffer-orders/{tmp_buffer_order.id}") 

65 assert resp.status_code == 200 

66 assert OrderDBModel(**resp.json()).status == OrderStatus.buffer 

67 

68 

69def test_update(test_client, tmp_buffer_order): 

70 test_str = "updated!" 

71 resp = test_client.patch( 

72 f"/buffer-orders/{tmp_buffer_order.id}", 

73 json={OrderDBModel.note: test_str, OrderDBModel.etag: None}, 

74 ) 

75 assert resp.status_code == 200 

76 assert OrderDBModel(**resp.json()).note == test_str 

77 

78 

79def test_to_exchange( 

80 test_client, tmp_buffer_order, update_org_with_employee, tmp_subsidiary 

81): 

82 resp = test_client.put( 

83 f"/buffer-orders/{tmp_buffer_order.id}/to-exchange", 

84 json={ 

85 "start_price": 80_000, 

86 }, 

87 ) 

88 assert resp.status_code == 200 

89 

90 

91@pytest.mark.xfail # failing on testing stage 

92def test_buf_xlsx(test_client): 

93 resp = test_client.get("/buffer-orders/xlsx") 

94 assert resp.status_code == 200