Coverage for tests/tests_api/misc/documents.py: 37%
57 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
4from sotrans_models.models.misc.document import (
5 DocumentCreateModel,
6 DocumentDBModel,
7)
8from sotrans_models.models.resources.drivers import (
9 DriverCreateModel,
10 DriverDBModel,
11)
12from sotrans_models.models.responses import GenericGetListResponse
13from utils.dt_utils import get_current_datetime
15from ...conftest import APIDataStorage
16from ...random_model import generate_models_json
17from ...tests_api.auth import test_client, token
20@pytest.mark.dependency
21def test_create_document(test_client):
22 json_data = generate_models_json(
23 DocumentCreateModel,
24 {
25 "valid_until": get_current_datetime() + datetime.timedelta(days=1),
26 "collection": "documents",
27 },
28 )
29 response = test_client.post("/documents", json=json_data)
30 assert response.status_code == 201
31 APIDataStorage.document = DocumentDBModel(**response.json())
34@pytest.mark.dependency(depends=["test_create_document"])
35def test_get_document(test_client):
36 response = test_client.get(f"/documents/{APIDataStorage.document.id}")
37 assert response.status_code == 200
38 assert (
39 APIDataStorage.document.collection
40 == DocumentDBModel(**response.json()).collection
41 )
44@pytest.mark.dependency(depends=["test_create_document"])
45def test_update_document(test_client):
46 patch_data = {"note": "test_data", "etag": None}
47 response = test_client.patch(
48 f"/documents/{APIDataStorage.document.id}", json=patch_data
49 )
50 assert response.status_code == 200
51 assert (
52 DocumentDBModel(**response.json()).note
53 == patch_data[DocumentDBModel.note]
54 )
57@pytest.mark.dependency(depends=["test_create_document"])
58def test_get_documents(test_client):
59 response = test_client.get("/documents")
60 assert response.status_code == 200
61 assert GenericGetListResponse[DocumentDBModel](**response.json()).total > 0
64@pytest.mark.dependency(depends=["test_create_document"])
65def test_remove_document(test_client):
66 response = test_client.delete(f"/documents/{APIDataStorage.document.id}")
67 assert response.status_code == 204
68 APIDataStorage.document = None
71@pytest.mark.dependency
72def test_create_document_v2(test_client):
73 model_dump = generate_models_json(
74 DriverCreateModel,
75 {"documents": [{"type": "passport", "link": "mongomock bug"}]},
76 ) # adding initial document actually doesn't help, added AttributeError in handling
77 response = test_client.post("/drivers", json=model_dump)
78 assert response.status_code == 201
79 APIDataStorage.driver = DriverDBModel(**response.json())
80 response = test_client.post(
81 f"/drivers/{APIDataStorage.driver.id}/documents",
82 json=generate_models_json(
83 DocumentCreateModel,
84 {
85 "valid_until": get_current_datetime()
86 + datetime.timedelta(days=1)
87 },
88 ),
89 )
90 assert response.status_code == 201
91 APIDataStorage.document = DocumentDBModel(**response.json())
94@pytest.mark.dependency(depends=["test_create_document_v2"])
95def test_get_document_v2(test_client):
96 response = test_client.get(
97 f"/drivers/{APIDataStorage.driver.id}/documents"
98 )
99 assert response.status_code == 200 or response.status_code == 404
100 if response.status_code == 404:
101 return
102 got = GenericGetListResponse[DocumentDBModel](**response.json())
103 assert got.total > 0
104 for i in got.items:
105 if i.link == APIDataStorage.document.link:
106 return
107 assert False