import importlib.util import sys from pathlib import Path MODULE_DIR = ( Path(__file__).resolve().parents[2] / "cronjobs" / "team-workflow" / "weekly-ticket-report" ) def load_module(module_name: str, filename: str): sys.path.insert(0, str(MODULE_DIR)) try: sys.modules.pop(module_name, None) spec = importlib.util.spec_from_file_location(module_name, MODULE_DIR / filename) module = importlib.util.module_from_spec(spec) assert spec.loader is not None spec.loader.exec_module(module) return module finally: sys.path.pop(0) def test_resolve_repo_root_prefers_valid_env_repo(monkeypatch): repo_root = Path(__file__).resolve().parents[2] monkeypatch.setenv("AI_CONFIG_REPO", str(repo_root)) monkeypatch.setenv("CRONJOB_TEAM_WORKFLOW_APP_ID", "test-app-id") monkeypatch.setenv("CRONJOB_TEAM_WORKFLOW_APP_SECRET", "test-app-secret") weekly_ticket_report = load_module("weekly_ticket_report_test_env_repo", "main.py") assert weekly_ticket_report.AI_CONFIG_REPO == str(repo_root) assert Path(weekly_ticket_report.MD2FEISHU_SCRIPT).exists() def test_resolve_repo_root_falls_back_when_env_repo_is_invalid(monkeypatch): repo_root = Path(__file__).resolve().parents[2] monkeypatch.setenv("AI_CONFIG_REPO", "/tmp/not-a-real-repo") monkeypatch.setenv("CRONJOB_TEAM_WORKFLOW_APP_ID", "test-app-id") monkeypatch.setenv("CRONJOB_TEAM_WORKFLOW_APP_SECRET", "test-app-secret") weekly_ticket_report = load_module("weekly_ticket_report_test_default_repo", "main.py") assert weekly_ticket_report.AI_CONFIG_REPO == str(repo_root) assert weekly_ticket_report.MD2FEISHU_SCRIPT == str( repo_root / "skills" / "team-common" / "md2feishu" / "scripts" / "md2feishu.py" ) def test_normalize_scope_name_maps_known_values(monkeypatch): monkeypatch.setenv("CRONJOB_TEAM_WORKFLOW_APP_ID", "test-app-id") monkeypatch.setenv("CRONJOB_TEAM_WORKFLOW_APP_SECRET", "test-app-secret") weekly_ticket_report = load_module("weekly_ticket_report_test_scope_name", "main.py") assert weekly_ticket_report.normalize_scope_name("lightning") == "Import" assert weekly_ticket_report.normalize_scope_name("IMPORT") == "Import" assert weekly_ticket_report.normalize_scope_name("cdc") == "CDC" assert weekly_ticket_report.normalize_scope_name("") == "Unknown" def test_default_notify_chat_id_matches_daily_wip_tasks(monkeypatch): monkeypatch.setenv("CRONJOB_TEAM_WORKFLOW_APP_ID", "test-app-id") monkeypatch.setenv("CRONJOB_TEAM_WORKFLOW_APP_SECRET", "test-app-secret") monkeypatch.delenv("CRONJOB_TEAM_WORKFLOW_NOTIFY_CHAT_ID", raising=False) weekly_ticket_report = load_module("weekly_ticket_report_test_notify_chat", "main.py") assert weekly_ticket_report.NOTIFY_CHAT_ID == "oc_2c586abb5204eca2ddf6ddf5de338bf6" def test_failed_tasks_details_only_links_dm_dashboard(monkeypatch): monkeypatch.setenv("CRONJOB_TEAM_WORKFLOW_APP_ID", "test-app-id") monkeypatch.setenv("CRONJOB_TEAM_WORKFLOW_APP_SECRET", "test-app-secret") weekly_ticket_report = load_module("weekly_ticket_report_test_failed_tasks_dashboard", "main.py") monkeypatch.setattr(weekly_ticket_report, "get_import_stats", lambda _days: {}) monkeypatch.setattr(weekly_ticket_report, "get_br_stats", lambda _days: {}) monkeypatch.setattr(weekly_ticket_report, "get_cdc_stats", lambda _days: {}) monkeypatch.setattr(weekly_ticket_report, "get_dm_stats", lambda _days: {}) monkeypatch.setattr( weekly_ticket_report, "query_failed_jobs_from_grafana", lambda _days: [ { "job_id": "job-1", "component": "dm", "cluster": "cluster-1", "failed_reason": "failed", } ], ) monkeypatch.setattr( weekly_ticket_report, "generate_summary_section", lambda _records, _import_stats, _br_stats, _cdc_stats, _dm_stats: ("", ""), ) monkeypatch.setattr( weekly_ticket_report, "build_grafana_dashboard_links", lambda _days: ( "https://grafana.oauth.prod.aws.tidbcloud.com/d-sources/import-management", "https://grafana.oauth.prod.aws.tidbcloud.com/d/9sVoewCIz/global-control-user-metrics", ), ) report, *_ = weekly_ticket_report.generate_report([]) assert "[Dashboard - This Week]" in report assert "global-control-user-metrics" in report assert "Import Dashboard - This Week" not in report assert "DM Dashboard - This Week" not in report