119 lines
4.4 KiB
Python
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_corporation_memberships_filter(self):
|
|
InformationSecurityRegistryEntryFactory(
|
|
organization=self.organization,
|
|
presence_status="present",
|
|
)
|
|
InformationSecurityRegistryEntryFactory(
|
|
organization=self.other_organization,
|
|
presence_status="absent",
|
|
)
|
|
|
|
response = self.client.get(
|
|
f"/api/v1/corporation-memberships/?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)
|