fix manual parser refresh reliability
All checks were successful
All checks were successful
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user