diff --git a/desktop/src/features/projects/ui/ProjectChannelRequestDialog.test.mjs b/desktop/src/features/projects/ui/ProjectChannelRequestDialog.test.mjs new file mode 100644 index 0000000000..1e4a30f210 --- /dev/null +++ b/desktop/src/features/projects/ui/ProjectChannelRequestDialog.test.mjs @@ -0,0 +1,41 @@ +import assert from "node:assert/strict"; +import test from "node:test"; + +import React from "react"; +import { renderToStaticMarkup } from "react-dom/server"; + +import { ProjectChannelRequestDetails } from "./ProjectChannelRequestDialog.tsx"; + +function request(overrides = {}) { + return { + homeChannelId: "11111111-1111-4111-8111-111111111111", + name: "release-planning", + visibility: "private", + ...overrides, + }; +} + +test("owner review shows an agent-requested temporary channel lifetime and cleanup consequence", () => { + const html = renderToStaticMarkup( + React.createElement(ProjectChannelRequestDetails, { + request: request({ ttlSeconds: 90_000 }), + }), + ); + + assert.match(html, />Lifetime { + const html = renderToStaticMarkup( + React.createElement(ProjectChannelRequestDetails, { request: request() }), + ); + + assert.doesNotMatch(html, />Lifetime +
+
Name
+
#{request.name}
+
+ {request.description ? ( +
+
Description
+
+ {request.description} +
+
+ ) : null} +
+
Visibility
+
{request.visibility}
+
+ {request.ttlSeconds ? ( +
+
Lifetime
+
+ Temporary · {formatTtlDuration(request.ttlSeconds)}. Cleans up + automatically after that period of inactivity. +
+
+ ) : null} + {request.templateName ? ( +
+
Template
+
+ {request.templateName} +
+
+ ) : null} + + ); +} + /** Global owner-review surface for project-channel requests from managed agents. */ export function ProjectChannelRequestDialog() { const management = useProjectChannelRequests(); @@ -31,42 +80,7 @@ export function ProjectChannelRequestDialog() { before creating it. - {request ? ( -
-
-
Name
-
- #{request.name} -
-
- {request.description ? ( -
-
- Description -
-
- {request.description} -
-
- ) : null} -
-
- Visibility -
-
{request.visibility}
-
- {request.templateName ? ( -
-
- Template -
-
- {request.templateName} -
-
- ) : null} -
- ) : null} + {request ? : null} {management.error ? (

{management.error}

) : null}