import unittest
from pathlib import Path


ROOT = Path(__file__).resolve().parents[1]


def source(path: str) -> str:
    return (ROOT / path).read_text(encoding="utf-8")


class ExpenseReceiptApiTests(unittest.TestCase):
    def test_expense_api_exposes_receipt_upload_and_confirm_endpoints(self) -> None:
        api = source("app/api/expenses.py")
        main = source("app/main.py")
        service = source("app/services/receipt_service.py")

        self.assertIn('prefix="/api/expenses"', api)
        self.assertIn('@router.post("/upload-receipt"', api)
        self.assertIn('@router.post("/{expense_id}/confirm"', api)
        self.assertIn('@router.post("/{expense_id}/void"', api)
        self.assertIn('@router.get("/receipts/{receipt_id}/preview"', api)
        self.assertIn('@router.get("/receipts/{receipt_id}/original"', api)
        self.assertIn("receipt_service", api)
        self.assertIn("save_receipt_images", service)
        self.assertIn("thumbnail((1600, 1600))", service)
        self.assertIn("app.include_router(expenses_router)", main)


if __name__ == "__main__":
    unittest.main()
