Skip to content

Commit 6608193

Browse files
committed
Few more tests
1 parent b18c5c1 commit 6608193

File tree

2 files changed

+75
-3
lines changed

2 files changed

+75
-3
lines changed

packages/react-router-dom/__tests__/data-browser-router-test.tsx

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3188,12 +3188,84 @@ function testDomRouter(
31883188
}
31893189

31903190
fireEvent.click(screen.getByText("Submit"));
3191-
let formData = await actionSpy.mock.calls[0][0].request.formData();
3191+
let request = actionSpy.mock.calls[0][0].request;
3192+
expect(request.headers.get("Content-Type")).toBe(
3193+
"application/x-www-form-urlencoded;charset=UTF-8"
3194+
);
3195+
let formData = await request.formData();
31923196
expect(formData.get("a")).toBe("1");
31933197
expect(formData.get("b")).toBe("2");
31943198
expect(actionSpy.mock.calls[0][0].payload).toBe(undefined);
31953199
});
31963200

3201+
it("serializes JSON on submit(object)/encType:application/json submissions", async () => {
3202+
let actionSpy = jest.fn();
3203+
let router = createTestRouter(
3204+
createRoutesFromElements(
3205+
<Route path="/" action={actionSpy} element={<FormPage />} />
3206+
),
3207+
{ window: getWindow("/") }
3208+
);
3209+
render(<RouterProvider router={router} />);
3210+
3211+
let payload = { a: "1", b: "2" };
3212+
function FormPage() {
3213+
let submit = useSubmit();
3214+
return (
3215+
<button
3216+
onClick={() =>
3217+
submit(payload, {
3218+
method: "post",
3219+
encType: "application/json",
3220+
})
3221+
}
3222+
>
3223+
Submit
3224+
</button>
3225+
);
3226+
}
3227+
3228+
fireEvent.click(screen.getByText("Submit"));
3229+
let request = actionSpy.mock.calls[0][0].request;
3230+
expect(request.headers.get("Content-Type")).toBe("application/json");
3231+
expect(await request.json()).toEqual({ a: "1", b: "2" });
3232+
expect(actionSpy.mock.calls[0][0].payload).toBe(payload);
3233+
});
3234+
3235+
it("serializes text on submit(object)/encType:text/plain submissions", async () => {
3236+
let actionSpy = jest.fn();
3237+
let router = createTestRouter(
3238+
createRoutesFromElements(
3239+
<Route path="/" action={actionSpy} element={<FormPage />} />
3240+
),
3241+
{ window: getWindow("/") }
3242+
);
3243+
render(<RouterProvider router={router} />);
3244+
3245+
let payload = "look ma, no formData!";
3246+
function FormPage() {
3247+
let submit = useSubmit();
3248+
return (
3249+
<button
3250+
onClick={() =>
3251+
submit(payload, {
3252+
method: "post",
3253+
encType: "text/plain",
3254+
})
3255+
}
3256+
>
3257+
Submit
3258+
</button>
3259+
);
3260+
}
3261+
3262+
fireEvent.click(screen.getByText("Submit"));
3263+
let request = actionSpy.mock.calls[0][0].request;
3264+
expect(request.headers.get("Content-Type")).toBe("text/plain");
3265+
expect(await request.text()).toEqual(payload);
3266+
expect(actionSpy.mock.calls[0][0].payload).toBe(payload);
3267+
});
3268+
31973269
it("does not serialize formData on submit(object)/encType:null submissions", async () => {
31983270
let actionSpy = jest.fn();
31993271
let payload;

packages/router/__tests__/router-test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6059,7 +6059,7 @@ describe("a router", () => {
60596059
expect(request.method).toBe("POST");
60606060
expect(request.url).toBe("http://localhost/");
60616061
expect(request.headers.get("Content-Type")).toBe("application/json");
6062-
expect(JSON.parse(await request.text())).toEqual(payload);
6062+
expect(await request.json()).toEqual(payload);
60636063
});
60646064

60656065
it("serializes payload as application/json if specified (array)", async () => {
@@ -6085,7 +6085,7 @@ describe("a router", () => {
60856085
expect(request.method).toBe("POST");
60866086
expect(request.url).toBe("http://localhost/");
60876087
expect(request.headers.get("Content-Type")).toBe("application/json");
6088-
expect(JSON.parse(await request.text())).toEqual(payload);
6088+
expect(await request.json()).toEqual(payload);
60896089
});
60906090

60916091
it("serializes payload as text/plain if specified", async () => {

0 commit comments

Comments
 (0)