diff --git a/src/components/Form.spec.jsx b/src/components/Form.spec.jsx index 14ffe3e1a..867264a66 100644 --- a/src/components/Form.spec.jsx +++ b/src/components/Form.spec.jsx @@ -1,8 +1,8 @@ -import {render, screen, waitFor, waitForElementToBeRemoved} from '@testing-library/react'; +import {act, render, screen, waitFor, waitForElementToBeRemoved} from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import messagesEN from 'i18n/compiled/en.json'; import {IntlProvider} from 'react-intl'; -import {RouterProvider, createMemoryRouter} from 'react-router-dom'; +import {RouterProvider, createMemoryRouter, useNavigate} from 'react-router-dom'; import {ConfigContext, FormContext} from 'Context'; import {BASE_URL, buildForm, mockAnalyticsToolConfigGet} from 'api-mocks'; @@ -10,6 +10,7 @@ import mswServer from 'api-mocks/msw-server'; import {mockSubmissionPost, mockSubmissionStepGet} from 'api-mocks/submissions'; import {routes} from 'components/App'; +import Form from './Form'; import {START_FORM_QUERY_PARAM} from './constants'; window.scrollTo = vi.fn(); @@ -114,3 +115,38 @@ test('Start form with object reference query param', async () => { const requestBody = await startSubmissionRequest.json(); expect(requestBody.initialDataReference).toBe('foo'); }); + +// Regression test for https://github.com/open-formulieren/open-forms/issues/4918 +test.each([ + { + introductionPageContent: '', + buttonText: 'Login with DigiD', + expectedUrl: + 'http://mock-digid.nl/login?next=http%3A%2F%2Flocalhost%2F%3F_start%3D1%26initial_data_reference%3Dfoo', + }, + { + introductionPageContent: 'foo', + buttonText: 'Continue', + expectedUrl: '/startpagina?initial_data_reference=foo', + }, +])( + 'Redirect to start page or introduction page should preserve initial_data_reference param', + async ({introductionPageContent, buttonText, expectedUrl}) => { + mswServer.use(mockAnalyticsToolConfigGet(), mockSubmissionPost(), mockSubmissionStepGet()); + + render( + + ); + + await waitFor(() => { + const loginLink = screen.getByRole('link', {name: buttonText}); + expect(loginLink).toHaveAttribute('href', expectedUrl); + }); + } +);