From fe27efa7bc5f7fccf69ed416478f5e265b50f62a Mon Sep 17 00:00:00 2001 From: Yvonne Yao Date: Sun, 30 Aug 2026 22:06:55 +1000 Subject: [PATCH] fix: preserve supporter choice intake UI --- frontend/src/App.test.tsx | 25 +++++++++++++++++++++++++ frontend/src/App.tsx | 9 +++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/frontend/src/App.test.tsx b/frontend/src/App.test.tsx index d780616..13391b1 100644 --- a/frontend/src/App.test.tsx +++ b/frontend/src/App.test.tsx @@ -250,6 +250,31 @@ describe('StayLong Continuous Home Path', () => { expect(screen.getByRole('radio', { name: 'I’m not sure who to involve yet' })).toBeVisible() }) + it('keeps a consent field aligned with the accepted supporter-choice UI', async () => { + const user = userEvent.setup() + const consentQuestion = { + key: 'information_sharing_consent', + question: 'Do you give consent for us to share these details with your nominated support contacts or assessors?', + reason: 'Consent is required before sending household information to external supporters or care teams.', + } + vi.stubGlobal('fetch', vi.fn().mockResolvedValue({ + ok: true, + json: async () => workflow('intake', { questions: [...questions.slice(0, 2), consentQuestion] }), + })) + render() + + fireEvent.change(screen.getByRole('textbox', { name: 'Describe what is becoming difficult' }), { target: { value: concern } }) + await user.click(screen.getByRole('button', { name: 'Start my plan' })) + await screen.findByRole('heading', { name: 'A few details will help prepare your plan' }) + + expect(screen.getByRole('group', { name: 'Would you like to involve anyone now?' })).toBeVisible() + expect(screen.getByRole('radio', { name: 'Not right now' })).toBeVisible() + expect(screen.getByRole('radio', { name: 'I’d like to involve someone' })).toBeVisible() + expect(screen.getByRole('radio', { name: 'I’m not sure who to involve yet' })).toBeVisible() + expect(screen.getByText('StayLong only shares information when invited.')).toBeVisible() + expect(screen.queryByRole('textbox', { name: /consent/i })).not.toBeInTheDocument() + }) + it('explains that the plan is being prepared while the start request is pending', async () => { const user = userEvent.setup() let resolveRequest: ((value: unknown) => void) | undefined diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index dd490f9..94acdcd 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -28,9 +28,13 @@ const assessmentStatusOptions = [ 'No, not yet', 'I’m not sure', ] +const supporterQuestion = 'Would you like to involve anyone now?' +const supporterReason = 'StayLong only shares information when invited.' +const supporterOptions = ['Not right now', 'I’d like to involve someone', 'I’m not sure who to involve yet'] const quickAnswerOptions: Record = { housing_tenure: ['I own my home', 'I rent my home', 'I’m not sure about the home yet'], - support_contacts: ['Not right now', 'I’d like to involve someone', 'I’m not sure who to involve yet'], + support_contacts: supporterOptions, + information_sharing_consent: supporterOptions, } const timelineLabels: Record = { @@ -154,7 +158,8 @@ function IntakeQuestion({ question, value, onChange }: { question: Fact; value: } const options = quickAnswerOptions[question.key] if (options) { - return
{question.question}
{options.map((option) => )}

{question.reason}

+ const isSupporterQuestion = question.key === 'support_contacts' || question.key === 'information_sharing_consent' + return
{isSupporterQuestion ? supporterQuestion : question.question}
{options.map((option) => )}

{isSupporterQuestion ? supporterReason : question.reason}

} return
onChange(event.target.value)} required value={value} />

{question.reason}

}