import unittest from pathlib import Path from tempfile import TemporaryDirectory from ai_daily_report.cli import build_parser, main class CliTests(unittest.TestCase): def test_run_command_parses_date_and_mode(self): parser = build_parser() args = parser.parse_args(["run", "--date", "2026-06-04", "--mode", "dry-run", "--source-mode", "live", "--llm-mode", "live", "--sources-path", "config/sources.json"]) self.assertEqual(args.command, "run") self.assertEqual(args.date, "2026-06-04") self.assertEqual(args.mode, "dry-run") self.assertEqual(args.source_mode, "live") self.assertEqual(args.llm_mode, "live") self.assertEqual(args.sources_path, "config/sources.json") def test_main_returns_zero_for_parseable_command(self): self.assertEqual(main(["run", "--date", "2026-06-04", "--mode", "dry-run"]), 0) def test_main_mock_run_writes_outputs(self): with TemporaryDirectory() as temp_dir: exit_code = main( [ "run", "--date", "2026-06-04", "--mode", "dry-run", "--source-mode", "mock", "--llm-mode", "mock", "--out-dir", temp_dir, ] ) self.assertEqual(exit_code, 0) self.assertTrue((Path(temp_dir) / "2026-06-04" / "blog_markdown.md").exists()) if __name__ == "__main__": unittest.main()