fix: parse Checko API response fields
All checks were successful
CI/CD Pipeline / Quality Gate (push) Successful in 26s
CI/CD Pipeline / Build and Push Images (push) Successful in 18s
CI/CD Pipeline / Internal Notify (push) Successful in 0s
CI/CD Pipeline / Deploy Dev via Compose (push) Successful in 24s

This commit is contained in:
2026-07-19 16:22:13 +02:00
parent 06e8c2c3c6
commit 59769be400
2 changed files with 223 additions and 41 deletions

View File

@@ -436,6 +436,52 @@ class CheckoClientApiTest(SimpleTestCase):
self.assertEqual(response.data.contracts[0].registry_number, contract_number)
def test_get_contracts_supports_checko_russian_response(self):
inn = _digits(10)
contract_number = _digits(12)
with TestHTTPServer() as server:
server.add_json(
"/v2/contracts",
{
"data": {
"ЗапВсего": 1,
"СтрВсего": 1,
"СтрТекущ": 1,
"Записи": [
{
"РегНомер": contract_number,
"СтрЕИС": "https://zakupki.gov.ru/contract/1",
"Дата": "2026-01-10",
"ДатаИсп": "2026-12-31",
"Цена": 125000,
"Заказ": {
"ИНН": inn,
"НаимПолн": "Тестовый заказчик",
},
"Постав": {
"ИНН": _digits(10),
"НаимСокр": "Тестовый поставщик",
},
"Объекты": [{"Наим": "Поставка оборудования"}],
}
],
},
"meta": _meta_ok(),
},
)
client = _client_for(server)
response = client.get_contracts(
ContractsRequest(inn=inn, law=ContractLaw.FZ44)
)
contract = response.data.contracts[0]
self.assertEqual(contract.registry_number, contract_number)
self.assertEqual(contract.subject, "Поставка оборудования")
self.assertEqual(contract.customer.inn, inn)
self.assertEqual(len(contract.suppliers), 1)
self.assertEqual(response.data.pagination.total_records, 1)
def test_get_legal_cases(self):
inn = "".join(str(fake.random_int(0, 9)) for _ in range(10))
case_number = fake.bothify(text="A-####/####")
@@ -465,6 +511,47 @@ class CheckoClientApiTest(SimpleTestCase):
self.assertEqual(response.data.cases[0].case_number, case_number)
def test_get_legal_cases_supports_checko_russian_response(self):
inn = _digits(10)
case_number = "А40-12345/2026"
with TestHTTPServer() as server:
server.add_json(
"/v2/legal-cases",
{
"data": {
"ЗапВсего": 1,
"СтрВсего": 1,
"СтрТекущ": 1,
"ОбщСуммИск": 250000,
"Записи": [
{
"Номер": case_number,
"СтрКАД": "https://kad.arbitr.ru/Card/1",
"Дата": "2026-02-03",
"Тип": "Гражданское",
"ПрАктив": True,
"Суд": "Арбитражный суд города Москвы",
"Ист": [{"ИНН": inn, "Наим": "Истец"}],
"Ответ": [{"ИНН": _digits(10), "Наим": "Ответчик"}],
"СуммИск": 250000,
}
],
},
"meta": _meta_ok(),
},
)
client = _client_for(server)
response = client.get_legal_cases(LegalCasesRequest(inn=inn))
legal_case = response.data.cases[0]
self.assertEqual(legal_case.case_number, case_number)
self.assertEqual(legal_case.claim_amount, 250000)
self.assertEqual(legal_case.plaintiffs[0].inn, inn)
self.assertEqual(legal_case.status, "active")
self.assertEqual(response.data.total_claim_amount, 250000)
self.assertEqual(response.data.pagination.total_records, 1)
def test_api_error_handling(self):
with TestHTTPServer() as server:
server.add_json(
@@ -583,6 +670,49 @@ class CheckoClientExtraEndpointsTest(SimpleTestCase):
self.assertEqual(response.data.inspections[0].id, inspection_id)
def test_get_inspections_supports_checko_russian_response(self):
inn = _digits(10)
inspection_number = "77260041000101234567"
with TestHTTPServer() as server:
server.add_json(
"/v2/inspections",
{
"data": {
"ЗапВсего": 1,
"СтрВсего": 1,
"СтрТекущ": 1,
"Записи": [
{
"Номер": inspection_number,
"Статус": "Завершено",
"Наруш": True,
"ТипРасп": "Внеплановая",
"ТипПров": "Выездная",
"ДатаНач": "2026-03-01",
"ДатаОконч": "2026-03-05",
"Цель": "Контроль обязательных требований",
"ОргКонтр": {
"ОГРН": _digits(13),
"Наим": "Контрольный орган",
},
"Объекты": [{"Результ": "Выявлены нарушения"}],
}
],
},
"meta": _meta_ok(),
},
)
client = _client_for(server)
response = client.get_inspections(InspectionsRequest(inn=inn))
inspection = response.data.inspections[0]
self.assertEqual(inspection.id, inspection_number)
self.assertEqual(inspection.authority_name, "Контрольный орган")
self.assertEqual(inspection.result, "Выявлены нарушения")
self.assertTrue(inspection.violations_found)
self.assertEqual(response.data.pagination.total_records, 1)
def test_iter_inspections_pagination(self):
inn = _digits(10)