Skip to content

Commit ec25df2

Browse files
committed
test: 입력한 새로운 일정 정보에 맞춰 모든 필드가 이벤트 리스트에 정확히 저장된다.
1 parent af31375 commit ec25df2

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

src/__mocks__/handlers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const serverState = { events };
1010

1111
export const handlers = [
1212
http.get('/api/events', () => {
13-
return HttpResponse.json(serverState.events);
13+
return HttpResponse.json({ events: serverState.events });
1414
}),
1515

1616
http.post('/api/events', async ({ request }) => {

src/__tests__/medium.integration.spec.tsx

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import CssBaseline from '@mui/material/CssBaseline';
22
import { ThemeProvider, createTheme } from '@mui/material/styles';
3-
import { render, screen, within, act } from '@testing-library/react';
3+
import { render, screen, within, act, fireEvent, RenderResult, waitFor } from '@testing-library/react';
44
import { UserEvent, userEvent } from '@testing-library/user-event';
55
import { http, HttpResponse } from 'msw';
66
import { SnackbarProvider } from 'notistack';
@@ -10,8 +10,41 @@ import App from '../App';
1010
import { server } from '../setupTests';
1111
import { Event } from '../types';
1212

13+
const renderApp = () => {
14+
const theme = createTheme();
15+
return render(
16+
<ThemeProvider theme={theme}>
17+
<CssBaseline />
18+
<SnackbarProvider>
19+
<App />
20+
</SnackbarProvider>
21+
</ThemeProvider>
22+
);
23+
};
24+
1325
describe('일정 CRUD 및 기본 기능', () => {
14-
it('입력한 새로운 일정 정보에 맞춰 모든 필드가 이벤트 리스트에 정확히 저장된다.', async () => {
26+
it.only('입력한 새로운 일정 정보에 맞춰 모든 필드가 이벤트 리스트에 정확히 저장된다.', async () => {
27+
renderApp();
28+
29+
fireEvent.change(screen.getByLabelText('제목'), { target: { value : '테스트 - 새 회의'}});
30+
fireEvent.change(screen.getByLabelText('날짜'), { target: { value : '2025-08-01'}});
31+
fireEvent.change(screen.getByLabelText('설명'), { target: { value : '테스트 - 설명'}});
32+
fireEvent.change(screen.getByLabelText('시작 시간'), { target: { value : '17:00'}});
33+
fireEvent.change(screen.getByLabelText('종료 시간'), { target: { value : '18:00'}});
34+
35+
await fireEvent.click(
36+
screen.getByTestId('event-submit-button')
37+
);
38+
39+
await waitFor(() => {
40+
screen.getByTestId('event-list');
41+
})
42+
43+
const eventList = within(screen.getByTestId('event-list'));
44+
expect(eventList.getByText('테스트 - 새 회의')).toBeInTheDocument();
45+
expect(eventList.getByText('2025-08-01')).toBeInTheDocument();
46+
expect(eventList.getByText('테스트 - 설명')).toBeInTheDocument();
47+
1548
// ! HINT. event를 추가 제거하고 저장하는 로직을 잘 살펴보고, 만약 그대로 구현한다면 어떤 문제가 있을 지 고민해보세요.
1649
});
1750

0 commit comments

Comments
 (0)