feat: migrate parser data to source records
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
"""Tests for exchange API views."""
|
||||
|
||||
import json
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import patch
|
||||
|
||||
from apps.exchange.models import ExchangeConnection
|
||||
@@ -154,39 +153,17 @@ class ExchangeViewsTest(APITestCase):
|
||||
old_active.refresh_from_db()
|
||||
self.assertTrue(old_active.is_active)
|
||||
|
||||
def test_copy_requires_active_connection(self):
|
||||
def test_copy_endpoint_is_disabled(self):
|
||||
self.client.force_authenticate(self.admin)
|
||||
response = self.client.post(self.copy_url, {"mode": "all"}, format="json")
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
@patch("apps.exchange.views.copy_parsers_data_async.delay")
|
||||
@patch("apps.exchange.services.ExchangeConnectionService.get_active_connection")
|
||||
def test_copy_all_success(self, get_active_mock, delay_mock):
|
||||
active_connection = ExchangeConnectionFactory(is_active=True)
|
||||
get_active_mock.return_value = active_connection
|
||||
delay_mock.return_value = SimpleNamespace(id="task-123")
|
||||
self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
||||
def test_tables_endpoint_is_disabled(self):
|
||||
self.client.force_authenticate(self.admin)
|
||||
response = self.client.post(self.copy_url, {"mode": "all"}, format="json")
|
||||
response = self.client.get(reverse("api_v1:exchange:tables"))
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED)
|
||||
self.assertEqual(response.data["data"]["status"], "started")
|
||||
self.assertEqual(response.data["data"]["task_id"], "task-123")
|
||||
self.assertEqual(response.data["data"]["connection_id"], active_connection.id)
|
||||
get_active_mock.assert_called_once()
|
||||
delay_mock.assert_called_once_with(
|
||||
connection_id=active_connection.id,
|
||||
payload={"mode": "all", "truncate_before_copy": True},
|
||||
requested_by_id=self.admin.id,
|
||||
)
|
||||
|
||||
def test_copy_single_requires_table(self):
|
||||
self.client.force_authenticate(self.admin)
|
||||
response = self.client.post(self.copy_url, {"mode": "single"}, format="json")
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
self.assertIn("table", str(response.data))
|
||||
self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
||||
def test_periodic_tasks_endpoint_admin_only(self):
|
||||
response = self.client.get(self.periodic_tasks_url)
|
||||
@@ -310,7 +287,7 @@ class ExchangeViewsTest(APITestCase):
|
||||
self.assertTrue(response.data["notify_on_error"])
|
||||
self.assertFalse(IntervalSchedule.objects.filter(id=interval.id).exists())
|
||||
|
||||
def test_periodic_task_detail_returns_404_for_non_exchange_task(self):
|
||||
def test_periodic_task_detail_get_is_disabled(self):
|
||||
interval = IntervalSchedule.objects.create(every=1, period="hours")
|
||||
task = PeriodicTask.objects.create(
|
||||
name="another-task",
|
||||
@@ -326,4 +303,23 @@ class ExchangeViewsTest(APITestCase):
|
||||
self.client.force_authenticate(self.admin)
|
||||
response = self.client.get(detail_url)
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
|
||||
self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
||||
def test_periodic_task_detail_delete_is_disabled(self):
|
||||
interval = IntervalSchedule.objects.create(every=1, period="hours")
|
||||
task = PeriodicTask.objects.create(
|
||||
name="exchange-copy-hourly",
|
||||
task=ExchangePeriodicTaskService.TASK_NAME,
|
||||
interval=interval,
|
||||
kwargs="{}",
|
||||
)
|
||||
detail_url = reverse(
|
||||
"api_v1:exchange:periodic-task-detail",
|
||||
kwargs={"task_id": task.id},
|
||||
)
|
||||
|
||||
self.client.force_authenticate(self.admin)
|
||||
response = self.client.delete(detail_url)
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
self.assertTrue(PeriodicTask.objects.filter(id=task.id).exists())
|
||||
|
||||
Reference in New Issue
Block a user