From d285b7cc0f838be2988d715032c4304a14fc3236 Mon Sep 17 00:00:00 2001 From: Theo Browne Date: Mon, 27 Jul 2026 03:33:37 -0700 Subject: [PATCH 1/2] test: account for lazy thread feed details --- .../test/ActivityPayloadProjection.test.ts | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/apps/server/test/ActivityPayloadProjection.test.ts b/apps/server/test/ActivityPayloadProjection.test.ts index f7645a26a6a..f7f3c96f766 100644 --- a/apps/server/test/ActivityPayloadProjection.test.ts +++ b/apps/server/test/ActivityPayloadProjection.test.ts @@ -134,6 +134,23 @@ const fixtures = [ ] satisfies ReadonlyArray; describe("projectActivityPayload", () => { + function comparableThreadFeed(activities: ReadonlyArray) { + return buildThreadFeed(makeThread(activities)).map((entry) => + entry.type === "activity" + ? { + ...entry, + activity: { + ...entry.activity, + fullDetail: entry.activity.getFullDetail(), + copyText: entry.activity.getCopyText(), + getFullDetail: undefined, + getCopyText: undefined, + }, + } + : entry, + ); + } + it("drops unread bulk while retaining command, file, tool, and summary inputs", () => { const projected = projectActivityPayload(fixtures[0]!); expect(projected.payload).toEqual({ @@ -170,9 +187,7 @@ describe("projectActivityPayload", () => { for (const activity of fixtures) { const projected = projectActivityPayload(activity); expect(deriveWorkLogEntries([projected])).toEqual(deriveWorkLogEntries([activity])); - expect(buildThreadFeed(makeThread([projected]))).toEqual( - buildThreadFeed(makeThread([activity])), - ); + expect(comparableThreadFeed([projected])).toEqual(comparableThreadFeed([activity])); } }); From b91ad3c4f83975af77dd3951effc0a3d78b98e0c Mon Sep 17 00:00:00 2001 From: Theo Browne Date: Mon, 27 Jul 2026 03:35:25 -0700 Subject: [PATCH 2/2] test: compare grouped lazy activity details --- .../test/ActivityPayloadProjection.test.ts | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/apps/server/test/ActivityPayloadProjection.test.ts b/apps/server/test/ActivityPayloadProjection.test.ts index f7f3c96f766..6552dfb140c 100644 --- a/apps/server/test/ActivityPayloadProjection.test.ts +++ b/apps/server/test/ActivityPayloadProjection.test.ts @@ -10,7 +10,7 @@ import { } from "@t3tools/contracts"; import { describe, expect, it } from "vite-plus/test"; -import { buildThreadFeed } from "../../mobile/src/lib/threadActivity.ts"; +import { buildThreadFeed, type ThreadFeedActivity } from "../../mobile/src/lib/threadActivity.ts"; import { deriveWorkLogEntries } from "../../web/src/session-logic.ts"; import { projectActivityEvent, @@ -134,18 +134,22 @@ const fixtures = [ ] satisfies ReadonlyArray; describe("projectActivityPayload", () => { + function comparableActivity(activity: ThreadFeedActivity) { + return { + ...activity, + fullDetail: activity.getFullDetail(), + copyText: activity.getCopyText(), + getFullDetail: undefined, + getCopyText: undefined, + }; + } + function comparableThreadFeed(activities: ReadonlyArray) { return buildThreadFeed(makeThread(activities)).map((entry) => - entry.type === "activity" + entry.type === "activity-group" ? { ...entry, - activity: { - ...entry.activity, - fullDetail: entry.activity.getFullDetail(), - copyText: entry.activity.getCopyText(), - getFullDetail: undefined, - getCopyText: undefined, - }, + activities: entry.activities.map(comparableActivity), } : entry, );