fix manual parser refresh reliability
All checks were successful
CI/CD Pipeline / Quality Gate (push) Successful in 1m11s
CI/CD Pipeline / Build and Push Images (push) Successful in 21s
CI/CD Pipeline / Internal Notify (push) Successful in 0s
CI/CD Pipeline / Deploy Dev via Compose (push) Successful in 32s

This commit is contained in:
2026-08-10 15:02:00 +02:00
parent 61e178544b
commit 1c2dd985d4
6 changed files with 165 additions and 46 deletions

View File

@@ -11,7 +11,7 @@ import zipfile
from datetime import date
from unittest.mock import Mock, patch
from apps.core.models import BackgroundJob
from apps.core.models import BackgroundJob, JobStatus
from apps.parsers.models import (
FinancialReport,
FinancialReportLine,
@@ -1428,3 +1428,22 @@ class ParsersViewSetTest(APITestCase):
queued_task_id = apply_async_mock.call_args.kwargs["task_id"]
job = BackgroundJob.objects.get(task_id=queued_task_id)
self.assertEqual(job.meta["source_key"], "mpt_products")
def test_run_parser_reuses_fresh_active_job(self):
self.client.force_authenticate(self.user)
existing = BackgroundJob.objects.create(
task_id="active-products",
task_name="apps.parsers.tasks.parse_industrial_products",
status=JobStatus.STARTED,
)
url = reverse("api_v1:parsers:run-parser", args=["industrial_products"])
with patch(
"apps.parsers.views.tasks.parse_industrial_products.apply_async"
) as apply_async_mock:
response = self.client.post(url, {}, format="json")
self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED)
self.assertEqual(response.data["data"]["task_id"], existing.task_id)
self.assertTrue(response.data["data"]["already_running"])
apply_async_mock.assert_not_called()