72 lines
2.3 KiB
Python
72 lines
2.3 KiB
Python
from __future__ import annotations
|
|
|
|
import json
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
SKILL_DIR = Path(__file__).resolve().parents[1]
|
|
SRC_DIR = SKILL_DIR / "src"
|
|
|
|
|
|
class UsCpaCliSmokeTests(unittest.TestCase):
|
|
def test_skill_scaffold_files_exist(self) -> None:
|
|
self.assertTrue((SKILL_DIR / "SKILL.md").exists())
|
|
self.assertTrue((SKILL_DIR / "pyproject.toml").exists())
|
|
self.assertTrue((SKILL_DIR / "scripts" / "us-cpa").exists())
|
|
self.assertTrue(
|
|
(SKILL_DIR.parent.parent / "docs" / "us-cpa.md").exists()
|
|
)
|
|
|
|
def test_fixture_directories_exist(self) -> None:
|
|
fixtures_dir = SKILL_DIR / "tests" / "fixtures"
|
|
for name in ("irs", "facts", "documents", "returns"):
|
|
self.assertTrue((fixtures_dir / name).exists())
|
|
|
|
def run_cli(self, *args: str) -> subprocess.CompletedProcess[str]:
|
|
env = os.environ.copy()
|
|
env["PYTHONPATH"] = str(SRC_DIR)
|
|
return subprocess.run(
|
|
[sys.executable, "-m", "us_cpa.cli", *args],
|
|
text=True,
|
|
capture_output=True,
|
|
env=env,
|
|
)
|
|
|
|
def test_help_lists_all_commands(self) -> None:
|
|
result = self.run_cli("--help")
|
|
|
|
self.assertEqual(result.returncode, 0, result.stderr)
|
|
for command in (
|
|
"question",
|
|
"prepare",
|
|
"review",
|
|
"fetch-year",
|
|
"extract-docs",
|
|
"render-forms",
|
|
"export-efile-ready",
|
|
):
|
|
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?")
|
|
|
|
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?")
|
|
|
|
def test_prepare_requires_case_dir(self) -> None:
|
|
result = self.run_cli("prepare", "--tax-year", "2025")
|
|
|
|
self.assertNotEqual(result.returncode, 0)
|
|
self.assertIn("case directory", result.stderr.lower())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|