Skip to content

Commit 4f6fc98

Browse files
Issue #22 Backfill tests for Hooks/onPageErrors
Add usePagError hook tests
2 parents b12574c + 93fc851 commit 4f6fc98

3 files changed

Lines changed: 125 additions & 9 deletions

File tree

.editorconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ root = true
33

44
[*]
55
indent_style = space
6-
indent_size = 2
6+
indent_size = 4
77
charset = utf-8
88
trim_trailing_whitespace = true
99
insert_final_newline = true

src/hooks/use-page-errors.test.tsx

Lines changed: 114 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,116 @@
1+
import { renderHook, act } from "@testing-library/react-hooks";
2+
import { usePageErrors } from "./use-page-errors";
3+
import {
4+
ResultRecord,
5+
ResultErrorRecord,
6+
} from "andculturecode-javascript-core";
7+
18
describe("usePageErrors", () => {
2-
test.skip("TODO - https://github.com/AndcultureCode/AndcultureCode.JavaScript.React/issues/22", () => {});
9+
// -----------------------------------------------------------------------------------------
10+
// #region initialization
11+
// -----------------------------------------------------------------------------------------
12+
13+
describe("initialization", () => {
14+
test("returns empty array", () => {
15+
// Arrange & Act
16+
const { result } = renderHook(() => usePageErrors());
17+
18+
// Assert
19+
expect(result.current.pageErrors).toBeEmpty();
20+
});
21+
});
22+
23+
// #endregion
24+
25+
// -----------------------------------------------------------------------------------------
26+
// #region setPageErrors
27+
// -----------------------------------------------------------------------------------------
28+
29+
describe("setPageErrors", () => {
30+
test("when set with string array, pageErrors returns array", () => {
31+
// Arrange
32+
const errorMessage = "Error Message";
33+
const { result } = renderHook(() => usePageErrors());
34+
35+
// Act
36+
act(() => {
37+
result.current.setPageErrors([errorMessage]);
38+
});
39+
40+
// Assert
41+
expect(result.current.pageErrors).toHaveLength(1);
42+
expect(result.current.pageErrors[0]).toBe(errorMessage);
43+
});
44+
});
45+
46+
// #endregion setPageErrors
47+
48+
// -----------------------------------------------------------------------------------------
49+
// #region handlePageLoadError
50+
// -----------------------------------------------------------------------------------------
51+
52+
describe("handlePageLoadError", () => {
53+
test("when error is string, pageErrors returns array", () => {
54+
// Arrange
55+
const errorMessage = "Error Message";
56+
const { result } = renderHook(() => usePageErrors());
57+
58+
// Act
59+
act(() => {
60+
result.current.handlePageLoadError(errorMessage);
61+
});
62+
63+
// Assert
64+
expect(result.current.pageErrors).toHaveLength(1);
65+
expect(result.current.pageErrors[0]).toBe(errorMessage);
66+
});
67+
68+
test("when error is ResultRecord, pageErrors returns array", () => {
69+
// Arrange
70+
const errorMessage = "Error Message";
71+
const erroredResultRecord = new ResultRecord<any>().with({
72+
errors: [
73+
new ResultErrorRecord().with({
74+
message: errorMessage,
75+
}),
76+
],
77+
});
78+
const { result } = renderHook(() => usePageErrors());
79+
80+
// Act
81+
act(() => {
82+
result.current.handlePageLoadError(erroredResultRecord);
83+
});
84+
85+
// Assert
86+
expect(result.current.pageErrors).toHaveLength(1);
87+
expect(result.current.pageErrors[0]).toBe(errorMessage);
88+
});
89+
});
90+
91+
// #endregion handlePageLoadError
92+
93+
// -----------------------------------------------------------------------------------------
94+
// #region resetPageErrors
95+
// -----------------------------------------------------------------------------------------
96+
97+
describe("resetPageErrors", () => {
98+
test("when executed, pageErrors returns empty array", () => {
99+
// Arrange
100+
const { result } = renderHook(() => usePageErrors());
101+
act(() => {
102+
result.current.handlePageLoadError("Error Message");
103+
});
104+
105+
// Act
106+
act(() => {
107+
result.current.resetPageErrors();
108+
});
109+
110+
// Assert
111+
expect(result.current.pageErrors).toBeEmpty();
112+
});
113+
});
114+
115+
// #endregion resetPageErrors
3116
});

src/hooks/use-page-errors.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@ import { ResultRecord } from "andculturecode-javascript-core";
77
export function usePageErrors() {
88
const [pageErrors, setPageErrors] = useState<Array<string>>([]);
99

10-
const handlePageLoadError = useCallback((result: any) => {
11-
if (result instanceof ResultRecord) {
12-
setPageErrors((e) => [...e, ...result.listErrorMessages()]);
13-
return;
14-
}
10+
const handlePageLoadError = useCallback(
11+
(result: string | ResultRecord<any>) => {
12+
if (typeof result === "string") {
13+
setPageErrors((e) => [...e, result]);
14+
return;
15+
}
1516

16-
setPageErrors((e) => [...e, result]);
17-
}, []);
17+
setPageErrors((e) => [...e, ...result.listErrorMessages()]);
18+
},
19+
[]
20+
);
1821

1922
const resetPageErrors = useCallback(() => {
2023
setPageErrors([]);

0 commit comments

Comments
 (0)