Skip to content

Commit 4b667f5

Browse files
authored
๐Ÿ›fix: ์—๋Ÿฌํ•ธ๋“ค๋ง ์ถ”๊ฐ€
๐Ÿ›fix: ์—๋Ÿฌํ•ธ๋“ค๋ง ์ถ”๊ฐ€
2 parents 3de7e51 + 2259ee5 commit 4b667f5

File tree

4 files changed

+64
-27
lines changed

4 files changed

+64
-27
lines changed

โ€Žsrc/__test__/api/postEval.test.tsโ€Ž

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,22 +47,28 @@ describe("PostEval", () => {
4747
withCredentials: true
4848
})
4949
);
50-
expect(result).toEqual(mockResponseData);
50+
expect(result.data).toEqual(mockResponseData);
5151
});
5252

5353
it("์—๋Ÿฌ ์‘๋‹ต์ด ์˜ค๋ฉด throw ํ•œ๋‹ค (response ์žˆ์Œ)", async () => {
54-
const error = {
55-
response: {
56-
status: 400,
57-
data: { message: "Bad Request" }
54+
const error = {
55+
response: {
56+
status: 400,
57+
data: {
58+
code: "EvaluationMethod-003",
59+
fieldErrors: [],
60+
message: "ํ•ด๋‹น ๊ณผ๋ชฉ์˜ ๋ฐ˜์˜ ๋น„์œจ ์ดํ•ฉ์ด 100์„ ์ดˆ๊ณผํ•ฉ๋‹ˆ๋‹ค",
61+
status: 400
5862
}
59-
};
60-
mockedAxios.post.mockRejectedValueOnce(error);
63+
}
64+
};
65+
mockedAxios.post.mockRejectedValueOnce(error);
66+
67+
await expect(
68+
PostEval(subject, year, semester, grade, examType, title, weight, fullScore)
69+
).rejects.toEqual(error);
70+
});
6171

62-
await expect(
63-
PostEval(subject, year, semester, grade, examType, title, weight, fullScore)
64-
).rejects.toEqual(error);
65-
});
6672

6773
it("๋„คํŠธ์›Œํฌ ์—๋Ÿฌ ๋“ฑ response๊ฐ€ ์—†์œผ๋ฉด throw ํ•œ๋‹ค", async () => {
6874
const error = {

โ€Žsrc/__test__/grade/GradesPage.test.tsxโ€Ž

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -136,20 +136,44 @@ describe("<GradesPage /> ์‹ค์ œ EvalAddModal/EvalAddForm ํ…Œ์ŠคํŠธ", () => {
136136
});
137137

138138

139-
it("handleAddEval์—์„œ PostEval ์‹คํŒจ ์‹œ alert๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค", async () => {
140-
(PostEval as jest.Mock).mockRejectedValueOnce(new Error("fail"));
141-
window.alert = jest.fn();
139+
it("handleAddEval์—์„œ PostEval ์‹คํŒจ ์‹œ ์„œ๋ฒ„ ๋ฉ”์‹œ์ง€ alert๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค", async () => {
140+
// ์„œ๋ฒ„์—์„œ ๋‚ด๋ ค์ฃผ๋Š” ์—๋Ÿฌ ๊ฐ์ฒด ๊ตฌ์กฐ์— ๋งž๊ฒŒ mock
141+
(PostEval as jest.Mock).mockRejectedValueOnce({
142+
response: {
143+
data: {
144+
message: "ํ•ด๋‹น ๊ณผ๋ชฉ์˜ ๋ฐ˜์˜ ๋น„์œจ ์ดํ•ฉ์ด 100์„ ์ดˆ๊ณผํ•ฉ๋‹ˆ๋‹ค",
145+
},
146+
},
147+
});
148+
window.alert = jest.fn();
142149

143-
render(<GradesPage />);
144-
fireEvent.click(screen.getByText("+ ํ‰๊ฐ€๋ฐฉ์‹"));
145-
const titleInput = await screen.findByPlaceholderText("(์˜ˆ: ์ค‘๊ฐ„๊ณ ์‚ฌ)");
146-
fireEvent.change(titleInput, { target: { value: "๊ธฐ๋ง๊ณ ์‚ฌ" } });
147-
fireEvent.click(screen.getByText("์ถ”๊ฐ€"));
148-
await waitFor(() => {
149-
expect(PostEval).toHaveBeenCalled();
150-
expect(window.alert).toHaveBeenCalledWith("ํ‰๊ฐ€๋ฐฉ์‹ ์ถ”๊ฐ€์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.");
151-
});
150+
render(<GradesPage />);
151+
fireEvent.click(screen.getByText("+ ํ‰๊ฐ€๋ฐฉ์‹"));
152+
const titleInput = await screen.findByPlaceholderText("(์˜ˆ: ์ค‘๊ฐ„๊ณ ์‚ฌ)");
153+
fireEvent.change(titleInput, { target: { value: "๊ธฐ๋ง๊ณ ์‚ฌ" } });
154+
fireEvent.click(screen.getByText("์ถ”๊ฐ€"));
155+
await waitFor(() => {
156+
expect(PostEval).toHaveBeenCalled();
157+
expect(window.alert).toHaveBeenCalledWith("ํ•ด๋‹น ๊ณผ๋ชฉ์˜ ๋ฐ˜์˜ ๋น„์œจ ์ดํ•ฉ์ด 100์„ ์ดˆ๊ณผํ•ฉ๋‹ˆ๋‹ค");
152158
});
159+
});
160+
161+
162+
it("handleAddEval์—์„œ PostEval ์‹คํŒจ ์‹œ ์ผ๋ฐ˜ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ alert๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค", async () => {
163+
(PostEval as jest.Mock).mockRejectedValueOnce(new Error("fail"));
164+
window.alert = jest.fn();
165+
166+
render(<GradesPage />);
167+
fireEvent.click(screen.getByText("+ ํ‰๊ฐ€๋ฐฉ์‹"));
168+
const titleInput = await screen.findByPlaceholderText("(์˜ˆ: ์ค‘๊ฐ„๊ณ ์‚ฌ)");
169+
fireEvent.change(titleInput, { target: { value: "๊ธฐ๋ง๊ณ ์‚ฌ" } });
170+
fireEvent.click(screen.getByText("์ถ”๊ฐ€"));
171+
await waitFor(() => {
172+
expect(PostEval).toHaveBeenCalled();
173+
expect(window.alert).toHaveBeenCalledWith("fail");
174+
});
175+
});
176+
153177

154178
it("handleAddEval์—์„œ ์ •์ƒ์ ์œผ๋กœ ํ‰๊ฐ€๋ฐฉ์‹์ด ์ถ”๊ฐ€๋˜๊ณ  ์ƒํƒœ๊ฐ€ ์ดˆ๊ธฐํ™”๋œ๋‹ค", async () => {
155179
(PostEval as jest.Mock).mockResolvedValueOnce({});

โ€Žsrc/api/postEval.tsxโ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ export const PostEval = async (
3535
}
3636
);
3737

38-
console.log(response.data);
39-
return response.data;
38+
console.log(response);
39+
return response;
4040
} catch (error: any) {
4141
if (error.response) {
4242
const { status, data } = error.response;

โ€Žsrc/pages/grade/index.tsxโ€Ž

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,15 @@ export default function GradesPage() {
130130
]);
131131
setShowEvalInput(false);
132132
setEvalInput({ title: "", examType: "WRITTEN", weight: 20, fullScore: 100 });
133-
} catch {
134-
alert("ํ‰๊ฐ€๋ฐฉ์‹ ์ถ”๊ฐ€์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.");
133+
} catch(error:any){
134+
console.error(error)
135+
if (error.response && error.response.data && error.response.data.message) {
136+
alert(error.response.data.message);
137+
} else if (error.message) {
138+
alert(error.message);
139+
} else {
140+
alert("์•Œ ์ˆ˜ ์—†๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.");
141+
}
135142
}
136143
};
137144

0 commit comments

Comments
ย (0)