Align frontend API contracts
This commit is contained in:
@@ -181,8 +181,8 @@ class FNSUploadIntegrationTest(APITestCase):
|
||||
|
||||
jobs_response = self.client.get(reverse("api_v1:jobs:job-list"))
|
||||
self.assertEqual(jobs_response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(len(jobs_response.data), 1)
|
||||
self.assertEqual(jobs_response.data[0]["task_id"], task_id)
|
||||
self.assertEqual(len(jobs_response.data["results"]), 1)
|
||||
self.assertEqual(jobs_response.data["results"][0]["task_id"], task_id)
|
||||
|
||||
other_client = self.client_class()
|
||||
other_client.force_authenticate(self.other)
|
||||
|
||||
@@ -181,12 +181,10 @@ class SourceCardsApiTestCase(APITestCase):
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED)
|
||||
self.assertTrue(response.data["success"])
|
||||
payload = response.data["data"]
|
||||
self.assertEqual(payload["source_card"], "financial-indicators")
|
||||
self.assertEqual(len(payload["tasks"]), 1)
|
||||
self.assertEqual(response.data["status"], "accepted")
|
||||
self.assertEqual(set(response.data.keys()), {"task_id", "status"})
|
||||
|
||||
task_id = payload["tasks"][0]["task_id"]
|
||||
task_id = response.data["task_id"]
|
||||
self.assertTrue(
|
||||
BackgroundJob.objects.filter(
|
||||
task_id=task_id,
|
||||
|
||||
@@ -206,15 +206,19 @@ class SourcesApiE2ETest(APITestCase):
|
||||
self.assertEqual(minprom_response.status_code, status.HTTP_202_ACCEPTED)
|
||||
self.assertEqual(procurements_response.status_code, status.HTTP_202_ACCEPTED)
|
||||
|
||||
minprom_tasks = minprom_response.data["data"]["tasks"]
|
||||
self.assertEqual(minprom_response.data["status"], "accepted")
|
||||
self.assertEqual(procurements_response.data["status"], "accepted")
|
||||
|
||||
minprom_tasks = minprom_response.data["tasks"]
|
||||
self.assertEqual(
|
||||
[item["task_id"] for item in minprom_tasks],
|
||||
["task-industrial", "task-products", "task-manufactures"],
|
||||
)
|
||||
self.assertEqual(
|
||||
procurements_response.data["data"]["tasks"][0]["task_id"],
|
||||
"task-procurements",
|
||||
set(procurements_response.data.keys()),
|
||||
{"task_id", "status"},
|
||||
)
|
||||
self.assertEqual(procurements_response.data["task_id"], "task-procurements")
|
||||
self.assertTrue(
|
||||
BackgroundJob.objects.filter(
|
||||
task_id="task-procurements",
|
||||
|
||||
@@ -202,7 +202,7 @@ class ParsersViewSetTest(APITestCase):
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
rows = response.data["data"]
|
||||
rows = response.data["results"]
|
||||
self.assertEqual(len(rows), 1)
|
||||
self.assertEqual(rows[0]["id"], first_log.id)
|
||||
self.assertEqual(rows[0]["organizations_count"], 2)
|
||||
@@ -228,6 +228,23 @@ class ParsersViewSetTest(APITestCase):
|
||||
self.assertIn("organizations_count", content)
|
||||
self.assertIn("333", content)
|
||||
|
||||
def test_system_logs_support_search_by_source_label(self):
|
||||
ParserLoadLogFactory(
|
||||
source="fns_reports",
|
||||
batch_id=909,
|
||||
status="success",
|
||||
)
|
||||
|
||||
self.client.force_authenticate(self.admin)
|
||||
response = self.client.get(
|
||||
reverse("api_v1:system:parser-logs-list"),
|
||||
{"search": "финансово"},
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(len(response.data["results"]), 1)
|
||||
self.assertEqual(response.data["results"][0]["source"], "financial-indicators")
|
||||
|
||||
def test_fns_upload_invalid_filename(self):
|
||||
self.client.force_authenticate(self.admin)
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
@@ -277,3 +294,46 @@ class ParsersViewSetTest(APITestCase):
|
||||
url, {"files": [upload]}, format="multipart"
|
||||
)
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
|
||||
def test_fns_upload_accepts_single_file_payload(self):
|
||||
self.client.force_authenticate(self.admin)
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
watch_dir = os.path.join(tmpdir, "watch")
|
||||
processed_dir = os.path.join(tmpdir, "processed")
|
||||
failed_dir = os.path.join(tmpdir, "failed")
|
||||
content = _build_fns_excel_bytes()
|
||||
upload = SimpleUploadedFile(
|
||||
f"fin_{_digits(5)}_{_digits(13)}.xlsx",
|
||||
content,
|
||||
content_type=(
|
||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
||||
),
|
||||
)
|
||||
with self.settings(
|
||||
FNS_WATCH_DIRECTORY=watch_dir,
|
||||
FNS_PROCESSED_DIRECTORY=processed_dir,
|
||||
FNS_FAILED_DIRECTORY=failed_dir,
|
||||
):
|
||||
url = reverse("api_v1:fns:fns-upload")
|
||||
response = self.client.post(url, {"file": upload}, format="multipart")
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(response.data["success"], True)
|
||||
self.assertIn("message", response.data)
|
||||
|
||||
def test_parsing_settings_get_and_patch(self):
|
||||
self.client.force_authenticate(self.admin)
|
||||
url = reverse("api_v1:parsing:parsing-settings")
|
||||
|
||||
initial = self.client.get(url)
|
||||
self.assertEqual(initial.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(initial.data["planned_inspections"], "monthly")
|
||||
|
||||
updated = self.client.patch(
|
||||
url,
|
||||
{"planned_inspections": "weekly"},
|
||||
format="json",
|
||||
)
|
||||
|
||||
self.assertEqual(updated.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(updated.data["planned_inspections"], "weekly")
|
||||
|
||||
Reference in New Issue
Block a user