feat: expand registry ingestion and demo exchange
All checks were successful
CI/CD Pipeline / Quality Gate (push) Successful in 36s
CI/CD Pipeline / Build and Push Images (push) Successful in 15s
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-16 12:59:23 +02:00
parent cc5aa84556
commit 007cecc8d5
43 changed files with 3723 additions and 352 deletions

View File

@@ -17,6 +17,15 @@ from tests.utils import TestHTTPServer
class TrudvsemClientTest(SimpleTestCase):
def test_default_base_url_uses_https_transport(self):
with TestHTTPServer() as server:
server.add_json("/api/v1/vacancies", {"results": {"vacancies": []}})
with TrudvsemClient(http_adapter=server.adapter) as client:
records = client.fetch_vacancies(limit=1)
self.assertEqual(records, [])
self.assertEqual(client.base_url, "https://opendata.trudvsem.ru/api/v1")
def test_fetch_vacancies_by_company_inn_uses_company_endpoint(self):
with TestHTTPServer() as server:
server.add_json(
@@ -78,6 +87,7 @@ class HHVacanciesClientTest(SimpleTestCase):
},
)
client = HHVacanciesClient(
user_agent="Mostovik/1.0 (ops@example.test)",
base_url=server.base_url,
http_adapter=server.adapter,
)
@@ -93,6 +103,10 @@ class HHVacanciesClientTest(SimpleTestCase):
self.assertEqual(record.amount, Decimal("120000"))
self.assertEqual(record.url, "https://hh.ru/vacancy/123")
self.assertEqual(record.payload["vacancy_source"], "hh")
self.assertEqual(
client.http_client.session.headers["HH-User-Agent"],
"Mostovik/1.0 (ops@example.test)",
)
def test_fetch_vacancies_tolerates_unexpected_nested_shapes(self):
with TestHTTPServer() as server:
@@ -111,6 +125,7 @@ class HHVacanciesClientTest(SimpleTestCase):
},
)
client = HHVacanciesClient(
user_agent="Mostovik/1.0 (ops@example.test)",
base_url=server.base_url,
http_adapter=server.adapter,
)
@@ -122,6 +137,21 @@ class HHVacanciesClientTest(SimpleTestCase):
self.assertEqual(records[0].organisation_name, "")
self.assertIsNone(records[0].amount)
def test_fetch_vacancies_requires_hh_user_agent_before_request(self):
with TestHTTPServer() as server:
server.add_json("/vacancies", {"items": []})
client = HHVacanciesClient(
user_agent=" ",
base_url=server.base_url,
http_adapter=server.adapter,
)
with self.assertRaisesMessage(
VacanciesClientError,
"HH_USER_AGENT is required",
):
client.fetch_vacancies(limit=1)
class SuperJobVacanciesClientTest(SimpleTestCase):
def test_fetch_vacancies_maps_superjob_objects_to_generic_records(self):