Files
state-corp-backend/tests/apps/external_data/test_api.py

119 lines
4.4 KiB
Python

"""Tests for external data endpoints."""
from __future__ import annotations
from datetime import date
from django.test import override_settings
from rest_framework import status
from rest_framework.test import APITestCase
from tests.apps.external_data.factories import (
ArbitrationCaseFactory,
IndustrialProductFactory,
ProsecutorCheckFactory,
PublicProcurementFactory,
InformationSecurityRegistryEntryFactory,
)
from tests.apps.organization.factories import OrganizationFactory
from tests.apps.user.factories import UserFactory
@override_settings(ROOT_URLCONF="core.urls")
class ExternalDataApiTest(APITestCase):
def setUp(self):
self.user = UserFactory.create_user()
self.client.force_authenticate(self.user)
self.organization = OrganizationFactory.create()
self.other_organization = OrganizationFactory.create()
def test_industrial_products_endpoint_uses_classic_pagination(self):
IndustrialProductFactory.create(
organization=self.organization,
product_name="Лазерные датчики расстояния",
)
IndustrialProductFactory.create(organization=self.other_organization)
response = self.client.get(
f"/api/v1/industrial-products/?organization={self.organization.id}&search=датчики"
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertIn("results", response.data)
self.assertEqual(response.data["count"], 1)
self.assertEqual(
response.data["results"][0]["organization"], str(self.organization.id)
)
def test_prosecutor_checks_support_date_range_filters(self):
ProsecutorCheckFactory.create(
organization=self.organization,
law_type="294_fz",
start_date=date(2025, 1, 15),
)
ProsecutorCheckFactory.create(
organization=self.organization,
law_type="294_fz",
start_date=date(2023, 1, 15),
)
response = self.client.get(
f"/api/v1/prosecutor-checks/?organization={self.organization.id}"
"&law_type=294_fz&start_date_from=2024-01-01&start_date_to=2025-12-31"
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data["count"], 1)
def test_public_procurements_and_arbitration_cases_filters(self):
PublicProcurementFactory.create(
organization=self.organization,
law_type="44_fz",
contract_date=date(2025, 1, 15),
)
ArbitrationCaseFactory.create(
organization=self.organization,
party_role="defendant",
decision_date=date(2026, 1, 27),
)
procurement_response = self.client.get(
f"/api/v1/public-procurements/?organization={self.organization.id}"
"&law_type=44_fz&contract_date_from=2024-01-01&contract_date_to=2025-12-31"
)
arbitration_response = self.client.get(
f"/api/v1/arbitration-cases/?organization={self.organization.id}"
"&party_role=defendant&decision_date_from=2025-01-01&decision_date_to=2026-12-31"
)
self.assertEqual(procurement_response.status_code, status.HTTP_200_OK)
self.assertEqual(procurement_response.data["count"], 1)
self.assertEqual(arbitration_response.status_code, status.HTTP_200_OK)
self.assertEqual(arbitration_response.data["count"], 1)
def test_information_security_registry_entries_filter(self):
InformationSecurityRegistryEntryFactory(
organization=self.organization,
presence_status="present",
)
InformationSecurityRegistryEntryFactory(
organization=self.other_organization,
presence_status="absent",
)
response = self.client.get(
f"/api/v1/security-registries/?organization={self.organization.id}"
"&presence_status=present"
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data["count"], 1)
result = response.data["results"][0]
self.assertEqual(
result["organization"],
str(self.organization.id),
)
self.assertEqual(result["presence_status"], "present")
self.assertIn("registry_name", result)
self.assertIn("entry_number", result)