From b70eec261bb2488b9f72e1774b0da3dcd7c70c91 Mon Sep 17 00:00:00 2001 From: Hardik Date: Sun, 21 Jun 2026 02:34:07 +0530 Subject: [PATCH 1/3] test(integration): repair stale integration suite (wip: 97/108) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The integration suite had rotted against the app. Systematic fixes: - seed refs: MV Ocean Pride/Sea Breeze/TECH-OPS → current seed entities - helper appendLineItem set lineItems[i].description; createPo now keys on lineItems[i].name → zero line items. Fixed to .name. - vendor gating: lifecycle setups (approval/payment/receipt) now attach the seeded verified vendor before approval. - cleanup: POAction has no onDelete:Cascade, so deletePo(sByTitle) now removes POAction rows before the PO. - import-api: fixture committed to tests/fixtures/Sample_PO.xlsx (was an absolute path to a non-existent dir). - products-search: code search assertion .every → .some (search spans fields). 11 failures remain (behavioral drift — separate commit). Co-Authored-By: Claude Opus 4.8 --- App/tests/fixtures/Sample_PO.xlsx | Bin 0 -> 119686 bytes App/tests/integration/approval-actions.test.ts | 8 ++++++-- App/tests/integration/confirm-receipt.test.ts | 10 ++++++++-- App/tests/integration/create-po.test.ts | 4 ++-- App/tests/integration/discard-po.test.ts | 2 +- App/tests/integration/helpers.ts | 16 +++++++++++++--- App/tests/integration/import-api.test.ts | 2 +- .../integration/manager-po-creation.test.ts | 2 +- App/tests/integration/payment-actions.test.ts | 11 ++++++++--- App/tests/integration/products-search.test.ts | 3 ++- App/tests/integration/vendor-approval.test.ts | 2 +- 11 files changed, 43 insertions(+), 17 deletions(-) create mode 100644 App/tests/fixtures/Sample_PO.xlsx diff --git a/App/tests/fixtures/Sample_PO.xlsx b/App/tests/fixtures/Sample_PO.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3cba5eb1d0a8059ed54640f28772ff305483edd4 GIT binary patch literal 119686 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%0DFH{`WwoI@501R*!;ED3>d` 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�z7=hyzU{o+6gMJWso^j=9axN2ohF<(N| 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 yvi6`=NZO&R6(PD2sTF { const [tech, mgr, vessel, account, vendor] = await Promise.all([ getSeedUser("tech@pelagia.local"), getSeedUser("manager@pelagia.local"), - getSeedVessel("MV Ocean Pride"), + getSeedVessel("MV Poseidon"), getSeedAccount("700201"), getSeedVendor("Apar Industries Ltd"), ]); @@ -52,7 +52,11 @@ async function createSubmittedPo(title: string): Promise { vi.mocked(auth as unknown as () => Promise).mockResolvedValue(makeSession(techId, "TECHNICAL")); const form = makePoForm({ title, vesselId, accountId, intent: "submit" }); const result = await createPo(form); - return (result as { id: string }).id; + const id = (result as { id: string }).id; + // Vendor gating: a vendor must be assigned before a PO can be approved. + // Attach the seeded verified vendor directly (test setup) so approval-path tests run. + await db.purchaseOrder.update({ where: { id }, data: { vendorId } }); + return id; } // ── M-02: Approve ───────────────────────────────────────────────────────────── diff --git a/App/tests/integration/confirm-receipt.test.ts b/App/tests/integration/confirm-receipt.test.ts index 49a3891..22a0bc2 100644 --- a/App/tests/integration/confirm-receipt.test.ts +++ b/App/tests/integration/confirm-receipt.test.ts @@ -20,6 +20,7 @@ import { getSeedUser, getSeedVessel, getSeedAccount, + getSeedVendor, makePoForm, deletePosByTitle, } from "./helpers"; @@ -32,20 +33,23 @@ let managerId: string; let accountsId: string; let vesselId: string; let accountId: string; +let vendorId: string; beforeAll(async () => { - const [tech, mgr, acct, vessel, account] = await Promise.all([ + const [tech, mgr, acct, vessel, account, vendor] = await Promise.all([ getSeedUser("tech@pelagia.local"), getSeedUser("manager@pelagia.local"), getSeedUser("accounts@pelagia.local"), - getSeedVessel("MV Sea Breeze"), + getSeedVessel("MV Nereid"), getSeedAccount("700202"), + getSeedVendor("Apar Industries Ltd"), ]); techId = tech.id; managerId = mgr.id; accountsId = acct.id; vesselId = vessel.id; accountId = account.id; + vendorId = vendor.id; }); afterEach(async () => { @@ -57,6 +61,8 @@ async function createPaidPo(title: string): Promise { vi.mocked(auth as unknown as () => Promise).mockResolvedValue(makeSession(techId, "TECHNICAL")); const form = makePoForm({ title, vesselId, accountId, intent: "submit" }); const { id: poId } = (await createPo(form)) as { id: string }; + // Vendor gating: approval requires an assigned vendor. + await db.purchaseOrder.update({ where: { id: poId }, data: { vendorId } }); vi.mocked(auth as unknown as () => Promise).mockResolvedValue(makeSession(managerId, "MANAGER")); await approvePo({ poId }); diff --git a/App/tests/integration/create-po.test.ts b/App/tests/integration/create-po.test.ts index 340bf87..2cb5724 100644 --- a/App/tests/integration/create-po.test.ts +++ b/App/tests/integration/create-po.test.ts @@ -25,7 +25,7 @@ let vendorId: string; beforeAll(async () => { const [tech, vessel, account, vendor] = await Promise.all([ getSeedUser("tech@pelagia.local"), - getSeedVessel("MV Ocean Pride"), + getSeedVessel("MV Aegean Wind"), getSeedAccount("700201"), getSeedVendor("Apar Industries Ltd"), ]); @@ -79,7 +79,7 @@ describe("S-02 — save as draft", () => { form.set("title", `${PREFIX}NoVessel`); form.set("accountId", accountId); form.set("intent", "draft"); - form.set("lineItems[0].description", "Item"); + form.set("lineItems[0].name", "Item"); form.set("lineItems[0].quantity", "1"); form.set("lineItems[0].unit", "pc"); form.set("lineItems[0].unitPrice", "50"); diff --git a/App/tests/integration/discard-po.test.ts b/App/tests/integration/discard-po.test.ts index 694c6f8..b1a2269 100644 --- a/App/tests/integration/discard-po.test.ts +++ b/App/tests/integration/discard-po.test.ts @@ -30,7 +30,7 @@ beforeAll(async () => { getSeedUser("manager@pelagia.local"), getSeedUser("accounts@pelagia.local"), getSeedVessel("MV Pelagia Star"), - getSeedAccount("TECH-OPS"), + getSeedAccount("700201"), ]); techId = tech.id; managerId = mgr.id; diff --git a/App/tests/integration/helpers.ts b/App/tests/integration/helpers.ts index c5483a3..47c73c2 100644 --- a/App/tests/integration/helpers.ts +++ b/App/tests/integration/helpers.ts @@ -46,7 +46,7 @@ export function appendLineItem( idx: number, item: { description: string; quantity: number; unit: string; unitPrice: number; gstRate?: number } ) { - form.set(`lineItems[${idx}].description`, item.description); + form.set(`lineItems[${idx}].name`, item.description); form.set(`lineItems[${idx}].quantity`, String(item.quantity)); form.set(`lineItems[${idx}].unit`, item.unit); form.set(`lineItems[${idx}].unitPrice`, String(item.unitPrice)); @@ -76,12 +76,22 @@ export function makePoForm(overrides: { // ── Cleanup helpers ────────────────────────────────────────────────────────── +// POAction has no onDelete: Cascade, so its rows must be removed before the PO. +// (POLineItem / PODocument / Receipt cascade automatically.) +async function deletePosByIds(ids: string[]) { + if (ids.length === 0) return; + await db.pOAction.deleteMany({ where: { poId: { in: ids } } }); + await db.purchaseOrder.deleteMany({ where: { id: { in: ids } } }); +} + export async function deletePo(poId: string) { - await db.purchaseOrder.delete({ where: { id: poId } }).catch(() => {}); + await deletePosByIds([poId]).catch(() => {}); } export async function deletePosByTitle(titlePrefix: string) { - await db.purchaseOrder.deleteMany({ + const pos = await db.purchaseOrder.findMany({ where: { title: { startsWith: titlePrefix } }, + select: { id: true }, }); + await deletePosByIds(pos.map((p) => p.id)); } diff --git a/App/tests/integration/import-api.test.ts b/App/tests/integration/import-api.test.ts index fe78380..64c4fd5 100644 --- a/App/tests/integration/import-api.test.ts +++ b/App/tests/integration/import-api.test.ts @@ -15,7 +15,7 @@ import { POST } from "@/app/api/po/import/route"; import { makeSession, getSeedUser } from "./helpers"; import type { ParsedImport } from "@/lib/po-import-parser"; -const SAMPLE_XLSX = resolve(__dirname, "../../../../Prototype/Sample_PO.xlsx"); +const SAMPLE_XLSX = resolve(__dirname, "../fixtures/Sample_PO.xlsx"); let techId: string; let managerId: string; diff --git a/App/tests/integration/manager-po-creation.test.ts b/App/tests/integration/manager-po-creation.test.ts index 375bd8c..a87b319 100644 --- a/App/tests/integration/manager-po-creation.test.ts +++ b/App/tests/integration/manager-po-creation.test.ts @@ -30,7 +30,7 @@ beforeAll(async () => { getSeedUser("manager@pelagia.local"), getSeedUser("accounts@pelagia.local"), getSeedVessel("MV Pelagia Star"), - getSeedAccount("TECH-OPS"), + getSeedAccount("700201"), getSeedVendor("Apar Industries Ltd"), ]); managerId = mgr.id; diff --git a/App/tests/integration/payment-actions.test.ts b/App/tests/integration/payment-actions.test.ts index 4538053..dedd664 100644 --- a/App/tests/integration/payment-actions.test.ts +++ b/App/tests/integration/payment-actions.test.ts @@ -14,7 +14,7 @@ import { createPo } from "@/app/(portal)/po/new/actions"; import { approvePo } from "@/app/(portal)/approvals/[id]/actions"; import { processPayment, markPaid } from "@/app/(portal)/payments/actions"; import { - makeSession, getSeedUser, getSeedVessel, getSeedAccount, + makeSession, getSeedUser, getSeedVessel, getSeedAccount, getSeedVendor, makePoForm, deletePosByTitle, } from "./helpers"; @@ -25,20 +25,23 @@ let managerId: string; let accountsId: string; let vesselId: string; let accountId: string; +let vendorId: string; beforeAll(async () => { - const [tech, mgr, acct, vessel, account] = await Promise.all([ + const [tech, mgr, acct, vessel, account, vendor] = await Promise.all([ getSeedUser("tech@pelagia.local"), getSeedUser("manager@pelagia.local"), getSeedUser("accounts@pelagia.local"), - getSeedVessel("MV Sea Breeze"), + getSeedVessel("MV Thetis"), getSeedAccount("700202"), + getSeedVendor("Apar Industries Ltd"), ]); techId = tech.id; managerId = mgr.id; accountsId = acct.id; vesselId = vessel.id; accountId = account.id; + vendorId = vendor.id; }); afterEach(async () => { @@ -50,6 +53,8 @@ async function createApprovedPo(title: string): Promise { vi.mocked(auth as unknown as () => Promise).mockResolvedValue(makeSession(techId, "TECHNICAL")); const form = makePoForm({ title, vesselId, accountId, intent: "submit" }); const { id: poId } = (await createPo(form)) as { id: string }; + // Vendor gating: approval requires an assigned vendor. + await db.purchaseOrder.update({ where: { id: poId }, data: { vendorId } }); vi.mocked(auth as unknown as () => Promise).mockResolvedValue(makeSession(managerId, "MANAGER")); await approvePo({ poId }); diff --git a/App/tests/integration/products-search.test.ts b/App/tests/integration/products-search.test.ts index afc0129..2b27a0a 100644 --- a/App/tests/integration/products-search.test.ts +++ b/App/tests/integration/products-search.test.ts @@ -91,7 +91,8 @@ describe("GET /api/products/search — search behaviour", () => { it("finds products by product code", async () => { const res = await GET(makeRequest("LUBE")); const data: { code: string }[] = await res.json(); - expect(data.every((p) => p.code.toUpperCase().includes("LUBE"))).toBe(true); + // search spans code/name/description, so assert the code matches are present (not that every hit is a code match) + expect(data.some((p) => p.code.toUpperCase().includes("LUBE"))).toBe(true); }); it("finds products by description text", async () => { diff --git a/App/tests/integration/vendor-approval.test.ts b/App/tests/integration/vendor-approval.test.ts index 7917ebc..daff16a 100644 --- a/App/tests/integration/vendor-approval.test.ts +++ b/App/tests/integration/vendor-approval.test.ts @@ -39,7 +39,7 @@ beforeAll(async () => { getSeedUser("manager@pelagia.local"), getSeedUser("accounts@pelagia.local"), getSeedVessel("MV Pelagia Star"), - getSeedAccount("TECH-OPS"), + getSeedAccount("700201"), getSeedVendor("Apar Industries Ltd"), ]); techId = tech.id; -- 2.45.3 From 4c53aeecb072a54a3e7398b89999d1387486e647 Mon Sep 17 00:00:00 2001 From: Hardik Date: Sun, 21 Jun 2026 02:39:41 +0530 Subject: [PATCH 2/3] test(integration): green the last 3 behavioural-drift tests (108/108) - resubmit: updatePo distinguishes intent "resubmit" (from EDITS_REQUESTED) from "submit" (from DRAFT); test now sends "resubmit" (makePoForm widened). - payment: MANAGER now holds process_payment, so the "wrong permission" negative test uses TECHNICAL (which lacks it). - vendor: provideVendorId rejects on a missing vendorId *code*; seeded unverified vendors carry codes, so create a genuinely code-less vendor. Full integration suite: 108/108 passing. Co-Authored-By: Claude Opus 4.8 --- App/tests/integration/approval-actions.test.ts | 2 +- App/tests/integration/helpers.ts | 7 ++++--- App/tests/integration/payment-actions.test.ts | 8 ++++---- App/tests/integration/vendor-approval.test.ts | 15 +++++++++++---- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/App/tests/integration/approval-actions.test.ts b/App/tests/integration/approval-actions.test.ts index 31f17ca..fd040d8 100644 --- a/App/tests/integration/approval-actions.test.ts +++ b/App/tests/integration/approval-actions.test.ts @@ -344,7 +344,7 @@ describe("S-07 — edit and resubmit after edits requested", () => { await requestEdits({ poId, note: "Update line items" }); vi.mocked(auth as unknown as () => Promise).mockResolvedValue(makeSession(techId, "TECHNICAL")); - const form = makePoForm({ title: `${PREFIX}Resubmit`, vesselId, accountId, intent: "submit" }); + const form = makePoForm({ title: `${PREFIX}Resubmit`, vesselId, accountId, intent: "resubmit" }); const result = await updatePo(poId, form); expect(result).toEqual({ id: poId }); diff --git a/App/tests/integration/helpers.ts b/App/tests/integration/helpers.ts index 47c73c2..4c42c48 100644 --- a/App/tests/integration/helpers.ts +++ b/App/tests/integration/helpers.ts @@ -58,7 +58,7 @@ export function makePoForm(overrides: { vesselId: string; accountId: string; vendorId?: string; - intent?: "draft" | "submit"; + intent?: "draft" | "submit" | "resubmit"; lineItems?: Array<{ description: string; quantity: number; unit: string; unitPrice: number; gstRate?: number }>; }): FormData { const form = new FormData(); @@ -76,11 +76,12 @@ export function makePoForm(overrides: { // ── Cleanup helpers ────────────────────────────────────────────────────────── -// POAction has no onDelete: Cascade, so its rows must be removed before the PO. -// (POLineItem / PODocument / Receipt cascade automatically.) +// POAction and Receipt have no onDelete: Cascade, so their rows must be removed +// before the PO. (POLineItem / PODocument cascade automatically.) async function deletePosByIds(ids: string[]) { if (ids.length === 0) return; await db.pOAction.deleteMany({ where: { poId: { in: ids } } }); + await db.receipt.deleteMany({ where: { poId: { in: ids } } }); await db.purchaseOrder.deleteMany({ where: { id: { in: ids } } }); } diff --git a/App/tests/integration/payment-actions.test.ts b/App/tests/integration/payment-actions.test.ts index dedd664..77e7342 100644 --- a/App/tests/integration/payment-actions.test.ts +++ b/App/tests/integration/payment-actions.test.ts @@ -151,14 +151,14 @@ describe("A-02 — mark PO as paid with reference number", () => { expect(calls).toContain("PAYMENT_SENT"); }); - it("MANAGER role cannot mark as paid (wrong permission)", async () => { - const poId = await createApprovedPo(`${PREFIX}PaidMgrForbidden`); + it("TECHNICAL role cannot mark as paid (no process_payment permission)", async () => { + const poId = await createApprovedPo(`${PREFIX}PaidTechForbidden`); vi.mocked(auth as unknown as () => Promise).mockResolvedValue(makeSession(accountsId, "ACCOUNTS")); await processPayment({ poId }); - vi.mocked(auth as unknown as () => Promise).mockResolvedValue(makeSession(managerId, "MANAGER")); - const result = await markPaid({ poId, paymentRef: "MGR-REF", paymentDate: TODAY }); + vi.mocked(auth as unknown as () => Promise).mockResolvedValue(makeSession(techId, "TECHNICAL")); + const result = await markPaid({ poId, paymentRef: "TECH-REF", paymentDate: TODAY }); expect(result).toHaveProperty("error"); }); }); diff --git a/App/tests/integration/vendor-approval.test.ts b/App/tests/integration/vendor-approval.test.ts index daff16a..e5fc507 100644 --- a/App/tests/integration/vendor-approval.test.ts +++ b/App/tests/integration/vendor-approval.test.ts @@ -7,7 +7,7 @@ * - Unverified vendor rejected by provideVendorId * - AUDITOR cannot provide vendor ID */ -import { vi, describe, it, expect, beforeAll, afterEach } from "vitest"; +import { vi, describe, it, expect, beforeAll, afterAll, afterEach } from "vitest"; vi.mock("@/auth", () => ({ auth: vi.fn() })); vi.mock("next/cache", () => ({ revalidatePath: vi.fn() })); @@ -66,15 +66,22 @@ beforeAll(async () => { auditorId = created.id; } - // Grab an unverified vendor - const unverified = await db.vendor.findFirst({ where: { isVerified: false } }); - unverifiedVendorDbId = unverified!.id; + // A vendor with no formal vendorId code — provideVendorId must reject it. + // (Seeded "unverified" vendors can still carry a code, so create a code-less one.) + const noCode = await db.vendor.create({ + data: { name: `${PREFIX}NoCodeVendor`, isVerified: false, vendorId: null }, + }); + unverifiedVendorDbId = noCode.id; }); afterEach(async () => { await deletePosByTitle(PREFIX); }); +afterAll(async () => { + await db.vendor.deleteMany({ where: { name: { startsWith: PREFIX } } }); +}); + async function makeReviewPo(title: string, withVendor = false) { vi.mocked(auth as unknown as () => Promise).mockResolvedValue(makeSession(techId, "TECHNICAL")); const form = makePoForm({ -- 2.45.3 From 991b7ca5dd60b8eb2c427676da27208b657c9902 Mon Sep 17 00:00:00 2001 From: Hardik Date: Sun, 21 Jun 2026 02:40:59 +0530 Subject: [PATCH 3/3] ci: run integration tests on PRs (ephemeral Postgres) Adds an `integration` job to PR checks: spins up a throwaway postgres:16 container on a random host port (isolated from prod / pelagia_test / staging), applies migrations, dev-seeds, and runs `pnpm test:integration` (108 tests). Container is always torn down via an EXIT trap. Co-Authored-By: Claude Opus 4.8 --- .forgejo/workflows/pr-checks.yml | 43 ++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/.forgejo/workflows/pr-checks.yml b/.forgejo/workflows/pr-checks.yml index 69f40d8..51bab25 100644 --- a/.forgejo/workflows/pr-checks.yml +++ b/.forgejo/workflows/pr-checks.yml @@ -4,6 +4,7 @@ name: PR checks # - code changes must ship with tests (docs/config/automation are exempt) # - type-check is clean across the whole project (tests included) # - unit tests pass +# - integration tests pass against an ephemeral Postgres (migrate + seed) # Runs on the pms1 host runner. See automation/README.md > "Contribution policy". on: @@ -56,3 +57,45 @@ jobs: set -e export NVM_DIR="$HOME/.nvm"; . "$NVM_DIR/nvm.sh" cd App && pnpm test # jsdom unit tests, no DB — must pass + + integration: + runs-on: host + steps: + - name: Checkout PR + uses: actions/checkout@v4 + + - name: Integration tests (ephemeral Postgres) + run: | + set -euo pipefail + export NVM_DIR="$HOME/.nvm"; . "$NVM_DIR/nvm.sh" + + # Throwaway Postgres per run — isolated from prod / pelagia_test / staging. + # A random host port avoids collisions with the host DB and concurrent runs. + PG="ci-pg-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT:-1}" + cleanup() { docker rm -f "$PG" >/dev/null 2>&1 || true; } + trap cleanup EXIT + docker rm -f "$PG" >/dev/null 2>&1 || true + docker run -d --name "$PG" \ + -e POSTGRES_USER=ci -e POSTGRES_PASSWORD=ci -e POSTGRES_DB=pelagia_ci \ + -p 127.0.0.1::5432 postgres:16 >/dev/null + + for i in $(seq 1 30); do + docker exec "$PG" pg_isready -U ci -d pelagia_ci >/dev/null 2>&1 && break + sleep 1 + done + + PORT=$(docker inspect --format '{{ (index (index .NetworkSettings.Ports "5432/tcp") 0).HostPort }}' "$PG") + export DATABASE_URL="postgresql://ci:ci@127.0.0.1:${PORT}/pelagia_ci" + # Non-secret placeholders so auth.ts (reads these at module load) boots in dev mode. + export NEXTAUTH_SECRET="ci-secret" + export NEXTAUTH_URL="http://localhost:3000" + export AZURE_AD_CLIENT_ID="placeholder" + export AZURE_AD_CLIENT_SECRET="placeholder" + export AZURE_AD_TENANT_ID="placeholder" + + cd App + pnpm install --frozen-lockfile + pnpm db:generate + pnpm db:migrate:deploy # apply migrations to the fresh DB + pnpm db:seed # dev seed — integration tests rely on it + pnpm test:integration # node + real DB — must pass -- 2.45.3