Files
wyndham-ARR/tests/test_monthly_oss_artifact_migration.py
2026-08-04 12:37:26 +08:00

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()