Skip to content

Commit 2cf01dc

Browse files
committed
chore: Some more testing and cleanup
1 parent 6656d91 commit 2cf01dc

File tree

6 files changed

+63
-32
lines changed

6 files changed

+63
-32
lines changed

src/RTKLoader.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,6 @@ export function RTKLoader<T>(
2020
return props.loader ?? <React.Fragment />;
2121
}
2222
if (props.query.isError && props.query.error) {
23-
console.warn(
24-
`RTKLoader error: ${props.query.requestId}`,
25-
props.query.error
26-
);
2723
return (
2824
props.onError?.(props.query.error as SerializedError) ?? (
2925
<React.Fragment />

src/createLoader.ts

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -80,23 +80,3 @@ export const createLoader = <
8080

8181
return loader;
8282
};
83-
84-
/* const getData = <T>(): T | undefined => "" as T;
85-
86-
const l = createLoader({
87-
queries: () =>
88-
[
89-
{
90-
data: getData<{ key: string }>(),
91-
isError: false,
92-
isFetching: false,
93-
isLoading: false,
94-
isSuccess: false,
95-
isUninitialized: true,
96-
refetch: () => {},
97-
},
98-
] as const,
99-
transform: (queries) => ({
100-
test: queries[0].data.key,
101-
}),
102-
}); */

testing-app/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"dependencies": {
66
"@testing-library/jest-dom": "^5.16.5",
77
"@testing-library/react": "^13.4.0",
8-
"@testing-library/user-event": "^13.5.0",
8+
"@testing-library/user-event": "^14.4.3",
99
"@types/jest": "^27.5.2",
1010
"@types/node": "^16.11.68",
1111
"@types/react": "^18.0.21",
@@ -42,6 +42,7 @@
4242
},
4343
"devDependencies": {
4444
"@reduxjs/toolkit": "^1.8.6",
45+
"@testing-library/dom": "^8.19.0",
4546
"msw": "^0.47.4",
4647
"react-redux": "^8.0.4",
4748
"redux": "^4.2.0"

testing-app/src/testComponents.tsx

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/* eslint-disable react-hooks/rules-of-hooks */
2+
import { useRef, useState } from "react";
23
import { aggregateToQuery } from "../../src/aggregateToQuery";
34
import { createLoader } from "../../src/createLoader";
45
import { withLoader } from "../../src/withLoader";
@@ -81,6 +82,43 @@ export const FailTester = withLoader(
8182
})
8283
);
8384

85+
export const FetchTestComponent = () => {
86+
const [name, setName] = useState("charizard");
87+
88+
return <FetchTester name={name} onChange={setName} />;
89+
};
90+
91+
export const FetchTester = withLoader(
92+
(props, loaderData) => {
93+
const inputRef = useRef<HTMLInputElement>(null);
94+
return (
95+
<div>
96+
#{loaderData[0].data.id}
97+
<br />
98+
<form
99+
onSubmit={(e) => {
100+
e.preventDefault();
101+
props.onChange(inputRef.current?.value ?? "");
102+
}}
103+
>
104+
<input type="text" ref={inputRef} />
105+
<button>Go</button>
106+
</form>
107+
</div>
108+
);
109+
},
110+
createLoader({
111+
queries: (name: string) =>
112+
[useGetPokemonByNameQuery(name)] as const,
113+
queriesArg: (props: {
114+
name: string;
115+
onChange: (name: string) => void;
116+
}) => props.name,
117+
onLoading: () => <div>Loading</div>,
118+
onFetching: () => <div>Fetching</div>,
119+
})
120+
);
121+
84122
export const TestAggregateComponent = () => {
85123
const q1 = useGetPokemonByNameQuery("charizard");
86124
const q2 = useGetPokemonsQuery(undefined);

testing-app/src/tests.test.tsx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
/* eslint-disable react-hooks/rules-of-hooks */
2+
import userEvent from "@testing-library/user-event";
23
import {
34
ExtendedLoaderComponent,
45
FailTester,
6+
FetchTestComponent,
57
LoadPokemon,
68
SimpleLoadedComponent,
79
TestAggregateComponent,
@@ -47,6 +49,22 @@ describe("withLoader", () => {
4749
);
4850
});
4951

52+
test("onFetching renders when applicable", async () => {
53+
render(<FetchTestComponent />);
54+
expect(screen.getByText("Loading")).toBeVisible();
55+
await waitFor(() =>
56+
expect(screen.getByRole("textbox")).toBeVisible()
57+
);
58+
const input = screen.getByRole("textbox");
59+
userEvent.type(input, "Abc{Enter}");
60+
await waitFor(() =>
61+
expect(screen.getByText("Fetching")).toBeVisible()
62+
);
63+
await waitFor(() =>
64+
expect(screen.getByText("#3")).toBeVisible()
65+
);
66+
});
67+
5068
describe(".extend()", () => {
5169
test("Can extend onLoading", async () => {
5270
render(<ExtendedLoaderComponent />);

testing-app/yarn.lock

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1783,7 +1783,7 @@
17831783
"@svgr/plugin-svgo" "^5.5.0"
17841784
loader-utils "^2.0.0"
17851785

1786-
"@testing-library/dom@^8.5.0":
1786+
"@testing-library/dom@^8.19.0", "@testing-library/dom@^8.5.0":
17871787
version "8.19.0"
17881788
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.19.0.tgz#bd3f83c217ebac16694329e413d9ad5fdcfd785f"
17891789
integrity sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==
@@ -1821,12 +1821,10 @@
18211821
"@testing-library/dom" "^8.5.0"
18221822
"@types/react-dom" "^18.0.0"
18231823

1824-
"@testing-library/user-event@^13.5.0":
1825-
version "13.5.0"
1826-
resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295"
1827-
integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==
1828-
dependencies:
1829-
"@babel/runtime" "^7.12.5"
1824+
"@testing-library/user-event@^14.4.3":
1825+
version "14.4.3"
1826+
resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.4.3.tgz#af975e367743fa91989cd666666aec31a8f50591"
1827+
integrity sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==
18301828

18311829
"@tootallnate/once@1":
18321830
version "1.1.2"

0 commit comments

Comments
 (0)