32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
PROJECT_ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
class MonthlyOssArtifactMigrationTests(unittest.TestCase):
|
|
def test_forward_migration_allows_oss_and_keeps_local_compatibility(self):
|
|
sql = (PROJECT_ROOT / "database" / "016_monthly_report_oss_artifacts.sql").read_text(
|
|
encoding="utf-8"
|
|
)
|
|
self.assertIn("current_database() <> 'booking_test'", sql)
|
|
self.assertIn("COALESCE(workbook_provider, '') NOT IN ('oss', 's3', 'local')", sql)
|
|
self.assertIn("COALESCE(result_provider, '') NOT IN ('oss', 's3', 'local')", sql)
|
|
self.assertIn("CREATE OR REPLACE FUNCTION reporting.validate_monthly_run_publication()", sql)
|
|
self.assertIn("existing private OSS", sql)
|
|
|
|
def test_down_migration_refuses_published_nonlocal_artifacts(self):
|
|
sql = (
|
|
PROJECT_ROOT / "database" / "016_monthly_report_oss_artifacts.down.sql"
|
|
).read_text(encoding="utf-8")
|
|
self.assertIn("artifact.storage_provider <> 'local'", sql)
|
|
self.assertIn("rollback refused", sql)
|
|
self.assertIn("workbook_provider IS DISTINCT FROM 'local'", sql)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|