feat: prepare ARR for controlled public deployment
This commit is contained in:
38
tests/test_monthly_reports_migration.py
Normal file
38
tests/test_monthly_reports_migration.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
PROJECT_ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
class MonthlyReportMigrationTests(unittest.TestCase):
|
||||
def test_forward_migration_has_manifest_guards_and_verified_backfill(self):
|
||||
sql = (PROJECT_ROOT / "database" / "006_report_channel_manifest.sql").read_text(
|
||||
encoding="utf-8"
|
||||
)
|
||||
for required in (
|
||||
"CREATE TABLE finance.report_channel_manifest",
|
||||
"report_channel_manifest_order_unique",
|
||||
"validate_report_channel_manifest_parent",
|
||||
"protect_published_report_channel_manifest",
|
||||
"validate_monthly_report_channel_manifest",
|
||||
"active monthly report requires a continuous channel manifest",
|
||||
"592fee9b1e3e8290ed1e115d7eb213f09e780fa2bda08f6e270a34e7eaedd09f",
|
||||
"('T- HANATOUR TD CO., L', 6, 24)",
|
||||
):
|
||||
with self.subTest(required=required):
|
||||
self.assertIn(required, sql)
|
||||
self.assertEqual(sql.count("INSERT INTO finance.report_channel_manifest"), 1)
|
||||
|
||||
def test_down_migration_refuses_when_manifest_data_exists(self):
|
||||
sql = (
|
||||
PROJECT_ROOT / "database" / "006_report_channel_manifest.down.sql"
|
||||
).read_text(encoding="utf-8")
|
||||
self.assertIn("refusing rollback: migration 006 data exists", sql)
|
||||
self.assertIn("DROP TABLE finance.report_channel_manifest", sql)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main(verbosity=2)
|
||||
Reference in New Issue
Block a user