feat: complete production workflow migration

This commit is contained in:
2026-08-06 14:29:57 +08:00
parent 7f215e79c4
commit 8df5266abb
448 changed files with 56937 additions and 14619 deletions
@@ -0,0 +1,57 @@
import unittest
from datetime import date
from pathlib import Path
import collect_dy_persona_to_bitable as dy_worker
import collect_jd_persona_to_bitable as jd_worker
import collect_persona_to_bitable as tm_worker
import run_daily_persona
class PersonaLauncherTests(unittest.TestCase):
def test_any_platform_failure_makes_launcher_fail(self):
self.assertEqual(run_daily_persona.combined_exit_code({"tm": 0, "dy": 2, "jd": 0}), 2)
def test_all_platforms_success_makes_launcher_success(self):
self.assertEqual(run_daily_persona.combined_exit_code({"tm": 0, "dy": 0, "jd": 0}), 0)
def test_launcher_passes_business_date_to_each_worker(self):
command = run_daily_persona.build_child_command(
Path("collect_persona_to_bitable.py"),
date(2026, 8, 4),
)
self.assertEqual(command[-2:], ["--date", "2026-08-04"])
def test_workers_fail_when_permission_is_skipped(self):
results = [{"status": "ok"}, {"status": "permission_skipped"}]
for worker in (tm_worker, dy_worker, jd_worker):
with self.subTest(worker=worker.__name__):
self.assertEqual(worker.combined_result_exit_code(results), 2)
def test_workers_fail_when_no_styles_were_processed(self):
for worker in (tm_worker, dy_worker, jd_worker):
with self.subTest(worker=worker.__name__):
self.assertEqual(worker.combined_result_exit_code([]), 2)
def test_workers_succeed_only_when_all_styles_are_successful(self):
results = [{"status": "ok"}, {"status": "dry-run"}]
for worker in (tm_worker, dy_worker, jd_worker):
with self.subTest(worker=worker.__name__):
self.assertEqual(worker.combined_result_exit_code(results), 0)
def test_workers_fail_when_collector_itself_failed(self):
results = [{"status": "ok"}]
for worker in (tm_worker, dy_worker, jd_worker):
with self.subTest(worker=worker.__name__):
self.assertEqual(
worker.combined_result_exit_code(results, collection_ok=False),
2,
)
if __name__ == "__main__":
unittest.main()