Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
JakeGinnivan committed Oct 23, 2024
1 parent 1d84a46 commit ef53b7e
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 6 deletions.
5 changes: 5 additions & 0 deletions .changeset/grumpy-llamas-leave.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@remix-run/server-runtime": patch
---

Update externally-accessed resource routes warning to cover null usage as well
46 changes: 40 additions & 6 deletions integration/single-fetch-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1687,12 +1687,46 @@ test.describe("single-fetch", () => {
});

expect(warnLogs).toEqual([
"⚠️ REMIX FUTURE CHANGE: Resource routes will no longer be able to return " +
"raw JavaScript objects in v3 when Single Fetch becomes the default. You " +
"can prepare for this change at your convenience by wrapping the data " +
"returned from your `loader` function in the `routes/resource` route with " +
"`json()`. For instructions on making this change see " +
"https://remix.run/docs/en/v2.9.2/guides/single-fetch#resource-routes",
"⚠️ REMIX FUTURE CHANGE: Externally-accessed resource routes will no longer be " +
"able to return raw JavaScript objects or `null` in React Router v7 when " +
"Single Fetch becomes the default. You can prepare for this change at your " +
`convenience by wrapping the data returned from your \`loader\` function in ` +
`the \`routes/resource\` route with \`json()\`. For instructions on making this ` +
"change, see https://remix.run/docs/en/v2.13.1/guides/single-fetch#resource-routes",
]);
console.warn = oldConsoleWarn;
});

test("wraps resource route 'null' returns in json with a deprecation warning", async () => {
let oldConsoleWarn = console.warn;
let warnLogs: unknown[] = [];
console.warn = (...args) => warnLogs.push(...args);

let fixture = await createFixture({
config: {
future: {
v3_singleFetch: true,
},
},
files: {
...files,
"app/routes/resource.tsx": js`
export function loader() {
return null;
}
`,
},
});
let res = await fixture.requestResource("/resource");
expect(await res.json()).toEqual(null);

expect(warnLogs).toEqual([
"⚠️ REMIX FUTURE CHANGE: Externally-accessed resource routes will no longer be " +
"able to return raw JavaScript objects or `null` in React Router v7 when " +
"Single Fetch becomes the default. You can prepare for this change at your " +
`convenience by wrapping the data returned from your \`loader\` function in ` +
`the \`routes/resource\` route with \`json()\`. For instructions on making this ` +
"change, see https://remix.run/docs/en/v2.13.1/guides/single-fetch#resource-routes",
]);
console.warn = oldConsoleWarn;
});
Expand Down

0 comments on commit ef53b7e

Please sign in to comment.