feat: add us-cpa question engine

This commit is contained in:
Stefano Fiorini
2026-03-15 01:17:14 -05:00
parent faff555757
commit 8f797b3a51
6 changed files with 360 additions and 2 deletions

View File

@@ -53,13 +53,40 @@ class UsCpaCliSmokeTests(unittest.TestCase):
self.assertIn(command, result.stdout)
def test_question_command_emits_json_by_default(self) -> None:
result = self.run_cli("question", "--question", "What is the standard deduction?")
with tempfile.TemporaryDirectory() as temp_dir:
env = os.environ.copy()
env["PYTHONPATH"] = str(SRC_DIR)
env["US_CPA_CACHE_DIR"] = temp_dir
subprocess.run(
[sys.executable, "-m", "us_cpa.cli", "fetch-year", "--tax-year", "2025"],
text=True,
capture_output=True,
env=env,
check=True,
)
result = subprocess.run(
[
sys.executable,
"-m",
"us_cpa.cli",
"question",
"--tax-year",
"2025",
"--question",
"What is the standard deduction?",
],
text=True,
capture_output=True,
env=env,
)
self.assertEqual(result.returncode, 0, result.stderr)
payload = json.loads(result.stdout)
self.assertEqual(payload["command"], "question")
self.assertEqual(payload["format"], "json")
self.assertEqual(payload["question"], "What is the standard deduction?")
self.assertEqual(payload["status"], "answered")
self.assertIn("analysis", payload)
def test_prepare_requires_case_dir(self) -> None:
result = self.run_cli("prepare", "--tax-year", "2025")
@@ -128,6 +155,42 @@ class UsCpaCliSmokeTests(unittest.TestCase):
self.assertEqual(payload["status"], "needs_resolution")
self.assertEqual(payload["issueType"], "fact_conflict")
def test_question_markdown_memo_mode_renders_tax_memo(self) -> None:
with tempfile.TemporaryDirectory() as temp_dir:
env = os.environ.copy()
env["PYTHONPATH"] = str(SRC_DIR)
env["US_CPA_CACHE_DIR"] = temp_dir
subprocess.run(
[sys.executable, "-m", "us_cpa.cli", "fetch-year", "--tax-year", "2025"],
text=True,
capture_output=True,
env=env,
check=True,
)
result = subprocess.run(
[
sys.executable,
"-m",
"us_cpa.cli",
"question",
"--tax-year",
"2025",
"--format",
"markdown",
"--style",
"memo",
"--question",
"What is the standard deduction?",
],
text=True,
capture_output=True,
env=env,
)
self.assertEqual(result.returncode, 0, result.stderr)
self.assertIn("# Tax Memo", result.stdout)
self.assertIn("## Conclusion", result.stdout)
if __name__ == "__main__":
unittest.main()