From 00a9f229258c8e4b4a70ad792ac3b25100f17a0d Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Fri, 24 Jul 2026 13:51:58 +0000 Subject: [PATCH] =?UTF-8?q?Exclude=20Retrofit=20Design=20Documents=20from?= =?UTF-8?q?=20the=20install-document=20bucket=20=F0=9F=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- .../your-projects/live/docStatus.test.ts | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/docStatus.test.ts b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/docStatus.test.ts index e6a9ebd4..1ddd9c8b 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/docStatus.test.ts +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/docStatus.test.ts @@ -94,6 +94,25 @@ describe("deriveDesignDocDealIds", () => { // Assert expect(designDocDealIds.has("deal-1")).toBe(true); }); + + it("excludes a deal whose documents contain no Retrofit Design Document", () => { + // Arrange — only survey/install docs, no design document + const docsByDealId = new Map([ + [ + "deal-1", + [ + { fileType: "photo_pack", measureName: null }, + { fileType: "pre_photo", measureName: "CWI" }, + ], + ], + ]); + + // Act + const designDocDealIds = deriveDesignDocDealIds(docsByDealId); + + // Assert + expect(designDocDealIds.has("deal-1")).toBe(false); + }); }); describe("computeDocStatusMap", () => { @@ -138,6 +157,19 @@ describe("computeDocStatusMap", () => { expect(measureNames).not.toContain("CWI"); }); + it("does not report install documents for a deal holding only a Retrofit Design Document", () => { + // Arrange — a design document is not an install document + const deal = makeDeal({ dealId: "deal-1", proposedMeasures: "CWI" }); + const docs = new Map([["deal-1", [{ fileType: "retrofit_design_doc", measureName: null }]]]); + + // Act + const result = computeDocStatusMap([deal], docs, {}); + + // Assert + expect(result["deal-1"].hasInstallDocs).toBe(false); + expect(result["deal-1"].installStatus).toBe("none"); + }); + describe("installStatus", () => { // CWI requires only BASE_DOCS — simple to satisfy in tests const cwi = "CWI";