feat: add demo report import workflow
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 2m44s
CI/CD Pipeline / Run Tests (push) Successful in 2m50s
CI/CD Pipeline / Build and Push Dev Images (push) Has been skipped
CI/CD Pipeline / Deploy Dev via Compose (push) Has been skipped

This commit is contained in:
2026-07-16 12:59:23 +02:00
parent 46c023f75a
commit 0c052c5a53
58 changed files with 968 additions and 10 deletions

View File

@@ -371,6 +371,7 @@ class ExchangePackageApiTest(APITestCase):
def setUp(self):
self.url = reverse("api_v1:exchange:package-upload")
self.latest_url = reverse("api_v1:exchange:package-latest")
password = get_random_string(16)
self.user = User.objects.create_user(
username="exchange-admin",
@@ -378,6 +379,55 @@ class ExchangePackageApiTest(APITestCase):
password=password,
)
def test_latest_requires_authentication(self):
response = self.client.get(self.latest_url)
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
def test_latest_returns_null_when_no_packages_exist(self):
self.client.force_authenticate(self.user)
response = self.client.get(self.latest_url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(
response.data,
{"success": True, "data": None, "errors": None, "meta": None},
)
def test_latest_returns_newest_package_metadata(self):
older = ExchangePackageImport.objects.create(
package_id="older-package",
package_name="older.zip",
package_hash="a" * 64,
source_system="mostovik",
schema_version=1,
delivery_channel=ExchangeDeliveryChannel.API,
status="failed",
)
latest = ExchangePackageImport.objects.create(
package_id="latest-package",
package_name="latest.zip",
package_hash="b" * 64,
source_system="mostovik",
schema_version=1,
delivery_channel=ExchangeDeliveryChannel.API,
status="success",
)
ExchangePackageImport.objects.filter(pk=older.pk).update(
created_at=older.created_at.replace(year=older.created_at.year - 1)
)
self.client.force_authenticate(self.user)
response = self.client.get(self.latest_url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data["data"]["id"], str(latest.id))
self.assertEqual(response.data["data"]["package_id"], "latest-package")
self.assertEqual(response.data["data"]["package_name"], "latest.zip")
self.assertEqual(response.data["data"]["status"], "success")
self.assertIn("created_at", response.data["data"])
def test_upload_imports_package_and_upserts_models(self):
Organization.objects.create(
inn="7707083893",