From ad4e1ed7de2a568d58a980d337ba3e614f07c124 Mon Sep 17 00:00:00 2001 From: fengmk2 Date: Tue, 25 Mar 2025 12:58:43 +0000 Subject: [PATCH] fix(server): set default doc title to Untitled on email (#11152) close CLOUD-181 --- .../__tests__/__snapshots__/mails.spec.ts.md | 89 ++++++++++++++++++ .../__snapshots__/mails.spec.ts.snap | Bin 4320 -> 4415 bytes .../server/src/__tests__/mails.spec.ts | 12 +++ .../server/src/mails/components/doc.tsx | 2 +- 4 files changed, 102 insertions(+), 1 deletion(-) diff --git a/packages/backend/server/src/__tests__/__snapshots__/mails.spec.ts.md b/packages/backend/server/src/__tests__/__snapshots__/mails.spec.ts.md index 6625f1e49c..96c52d35ab 100644 --- a/packages/backend/server/src/__tests__/__snapshots__/mails.spec.ts.md +++ b/packages/backend/server/src/__tests__/__snapshots__/mails.spec.ts.md @@ -2273,3 +2273,92 @@ Generated by [AVA](https://avajs.dev). ␊ ␊ ` + +## should render mention email with empty doc title + +> test@test.com mentioned you in + + `␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ␊ + You are mentioned!␊ +

␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ␊ + test@test.com mentioned you␊ + in␊ + Untitled.␊ +

␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ␊ + Open Doc␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ` diff --git a/packages/backend/server/src/__tests__/__snapshots__/mails.spec.ts.snap b/packages/backend/server/src/__tests__/__snapshots__/mails.spec.ts.snap index 5c5209286a9ef1f70ad58a991264feec418893b4..26be3d2f1a85b8cec106d32efdc512484d5f6d3f 100644 GIT binary patch literal 4415 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 O^#1{ { for (const render of Object.values(Renderers)) { @@ -9,3 +10,14 @@ test('should render emails', async t => { t.snapshot(content.html, content.subject); } }); + +test('should render mention email with empty doc title', async t => { + const content = await Renderers.Mention({ + user: TEST_USER, + doc: { + ...TEST_DOC, + title: '', + }, + }); + t.snapshot(content.html, content.subject); +}); diff --git a/packages/backend/server/src/mails/components/doc.tsx b/packages/backend/server/src/mails/components/doc.tsx index 04c5557fd2..d694a9c871 100644 --- a/packages/backend/server/src/mails/components/doc.tsx +++ b/packages/backend/server/src/mails/components/doc.tsx @@ -10,7 +10,7 @@ export interface DocProps { export const Doc = (props: DocProps) => { return ( - {props.title} + {props.title || 'Untitled'} ); };