import unittest
from pathlib import Path


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


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


class InvoiceFrontendCrudTests(unittest.TestCase):
    def test_invoice_list_exposes_create_update_delete_controls(self) -> None:
        page = source("frontend/src/pages/InvoicesPage.vue")

        self.assertIn("ConfirmDialog", page)
        self.assertIn("function openAdd", page)
        self.assertIn("function openEdit", page)
        self.assertIn("function confirmDelete", page)
        self.assertIn("invoicesApi.create", page)
        self.assertIn("invoicesApi.update", page)
        self.assertIn("invoicesApi.delete", page)
        self.assertIn("customersApi.list", page)
        self.assertIn("customersApi.list({ page: 1, page_size: 100 })", page)
        self.assertIn("productsApi.list", page)

    def test_invoice_detail_uses_backend_customer_shape_and_payment_endpoint(self) -> None:
        detail_page = source("frontend/src/pages/InvoiceDetailPage.vue")
        api = source("frontend/src/api/invoices.js")

        self.assertIn("customerName", detail_page)
        self.assertIn("/payments", api)
        self.assertNotIn("/record-payment", api)


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