diff --git a/packages/react-router-dom/__tests__/data-browser-router-test.tsx b/packages/react-router-dom/__tests__/data-browser-router-test.tsx index 6375b79954..74fb30c8bc 100644 --- a/packages/react-router-dom/__tests__/data-browser-router-test.tsx +++ b/packages/react-router-dom/__tests__/data-browser-router-test.tsx @@ -1266,7 +1266,7 @@ function testDomRouter( `); }); - it('defaults useSubmit({ method: "post" }) to be a REPLACE navigation', async () => { + it('defaults useSubmit({ method: "post" }) to a new location to be a PUSH navigation', async () => { let { container } = render( }> @@ -1342,6 +1342,100 @@ function testDomRouter( " `); + fireEvent.click(screen.getByText("Go back")); + await waitFor(() => screen.getByText("Page 1")); + expect(getHtml(container.querySelector(".output"))) + .toMatchInlineSnapshot(` + "
+

+ Page 1 +

+
" + `); + }); + + it('defaults useSubmit({ method: "post" }) to the same location to be a REPLACE navigation', async () => { + let { container } = render( + + }> + "index"} element={

index

} /> + "action"} + loader={() => "1"} + element={

Page 1

} + /> +
+
+ ); + + function Layout() { + let navigate = useNavigate(); + let submit = useSubmit(); + let actionData = useActionData(); + let formData = new FormData(); + formData.append("test", "value"); + return ( + <> + Go to 1 + + +
+ {actionData ?

{actionData}

: null} + +
+ + ); + } + + expect(getHtml(container.querySelector(".output"))) + .toMatchInlineSnapshot(` + "
+

+ index +

+
" + `); + + fireEvent.click(screen.getByText("Go to 1")); + await waitFor(() => screen.getByText("Page 1")); + expect(getHtml(container.querySelector(".output"))) + .toMatchInlineSnapshot(` + "
+

+ Page 1 +

+
" + `); + + fireEvent.click(screen.getByText("Submit")); + await waitFor(() => screen.getByText("action")); + expect(getHtml(container.querySelector(".output"))) + .toMatchInlineSnapshot(` + "
+

+ action +

+

+ Page 1 +

+
" + `); + fireEvent.click(screen.getByText("Go back")); await waitFor(() => screen.getByText("index")); expect(getHtml(container.querySelector(".output")))