Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 3m50s
CI/CD Pipeline / Run Tests (push) Successful in 3m57s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped
CI/CD Pipeline / Deploy to Server (push) Has been skipped
92 lines
3.4 KiB
Python
92 lines
3.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,
|
|
)
|
|
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)
|