File size: 4,793 Bytes
1e7f40c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
import kuznetsov_av
from fastapi.testclient import TestClient
from run_api import app

client = TestClient(app)


def test_get_description_image_predict() -> None:
    """
    Тест API Описание загруженного изображения
    """
    from zvereva_ev.develop_api_app import Url

    response = client.post(
        url="/get_description_image/predict/",
        json=Url(url="https://fikiwiki.com/uploads/posts/2022-02/1645000127_53-"
                     "fikiwiki-com-p-kartinki-krasivie-babochki"
                     "-narisovannie-55.png"
                 ).model_dump())

    assert response.status_code == 200
    assert response.text == '"Фото бабочки с оранжевыми крыльями и белыми точками"'


def test_langdetector_api_ru() -> None:
    """
    Тест API определения языка текста RU (mulyavin_aa)
    """
    import mulyavin_aa.model.langdetector

    api_resp = client.post(
        url="/langdetector/detect",
        json=mulyavin_aa.model.langdetector.Request(
            text='Доброго дня всем котам!').model_dump())

    response = mulyavin_aa.model.langdetector.Response.model_validate_json(api_resp.text)

    assert api_resp.status_code == 200
    assert len(response.langs) > 0
    assert response.langs[0].label == 'ru'


def test_langdetector_api_en() -> None:
    """
    Тест API определения языка текста EN (mulyavin_aa)
    """
    import mulyavin_aa.model.langdetector

    api_resp = client.post(
        url="/langdetector/detect",
        json=mulyavin_aa.model.langdetector.Request(
            text='So I checked functions in the class model').model_dump())

    response = mulyavin_aa.model.langdetector.Response.model_validate_json(api_resp.text)

    assert api_resp.status_code == 200
    assert len(response.langs) > 0
    assert response.langs[0].label == 'en'


def test_langdetector_api_err() -> None:
    """
    Тест API определения языка текста не Ru и En (mulyavin_aa)
    Модель не ограничена только Ru и En
    """
    import mulyavin_aa.model.langdetector

    api_resp = client.post(
        url="/langdetector/detect",
        json=mulyavin_aa.model.langdetector.Request(
            text='').model_dump())

    response = mulyavin_aa.model.langdetector.Response.model_validate_json(api_resp.text)

    assert api_resp.status_code == 200
    assert len(response.langs) > 0
    assert response.langs[0].label != 'en'
    assert response.langs[0].label != 'ru'


def test_translator_ru_to_en() -> None:
    """
    Тест API Перевод текста с языка Ru на En (mulyavin_aa)
    """
    import mulyavin_aa.model.translator

    api_resp = client.post(
        url="/translator/translate",
        json=mulyavin_aa.model.translator.Request(
            text='Доброго деня всем котам!').model_dump())

    response = mulyavin_aa.model.translator.Response.model_validate_json(api_resp.text)

    assert api_resp.status_code == 200
    assert len(response.text) > 0
    assert response.text == 'Good day to all cats!'


def test_translator_en_to_en() -> None:
    """
    Тест API Перевод текста с языка En на En (mulyavin_aa)
    """
    import mulyavin_aa.model.translator

    api_resp = client.post(
        url="/translator/translate",
        json=mulyavin_aa.model.translator.Request(
            text='Good day to all cats!').model_dump())

    response = mulyavin_aa.model.translator.Response.model_validate_json(api_resp.text)

    assert api_resp.status_code == 200
    assert len(response.text) > 0
    assert response.text == 'Good day to all cats!'


def test_text_to_speech_ok():
    """
    Тест API преобразования текста в речь
    """
    response = client.post(
        url='/text-to-speech/convert/',
        json=kuznetsov_av.api.Request(text='Test').model_dump()
    )

    assert response.status_code == 200
    assert response.json().get('audio') is not None
    assert type(response.json().get('audio')) == str
    assert len(response.json().get('audio')) > 0
    assert response.json().get('sampling_rate') is not None
    assert type(response.json().get('sampling_rate')) == int


def test_text_to_speech_error422():
    """
    Тест API преобразования текста в речь
    """
    response = client.post(
        url='/text-to-speech/convert/',
        json=''
    )

    assert response.status_code == 422


def test_root():
    response = client.get('/')

    assert response.status_code == 200
    assert response.json().get('message') is not None
    assert len(response.json().get('message')) > 0