From 508a78768520627ed868f8d45ff55353abfaca46 Mon Sep 17 00:00:00 2001 From: Loi Phan Date: Wed, 29 Nov 2023 14:08:08 +0700 Subject: [PATCH] Update test case --- .../pages/User/__tests__/UserForm.test.tsx | 52 ++++++++++++++----- .../services/__tests__/roomService.test.ts | 3 +- 2 files changed, 40 insertions(+), 15 deletions(-) diff --git a/hotel-management/src/pages/User/__tests__/UserForm.test.tsx b/hotel-management/src/pages/User/__tests__/UserForm.test.tsx index 5be12ff..fa30246 100644 --- a/hotel-management/src/pages/User/__tests__/UserForm.test.tsx +++ b/hotel-management/src/pages/User/__tests__/UserForm.test.tsx @@ -1,18 +1,31 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { BrowserRouter } from 'react-router-dom'; +// Components +import UserForm from '../UserForm'; +import { + RenderResult, + fireEvent, + render, + waitFor, +} from '@testing-library/react'; + +const createUser = jest.fn(); jest.mock('@hook/users/useCreateUser.ts', () => ({ ...jest.requireActual('@hook/users/useCreateUser.ts'), - useCreateUser: () => ({ - isCreating: true, - createUser: jest.fn(), - }), + useCreateUser: jest.fn(() => ({ + isCreating: false, + createUser, + })), })); -// Components -import UserForm from '../UserForm'; -import { RenderResult, fireEvent, render } from '@testing-library/react'; -import { act } from 'react-test-renderer'; +jest.mock('@hook/users/useUpdateUser', () => ({ + ...jest.requireActual('@hook/users/useUpdateUser'), + useUpdateUser: () => ({ + isUpdating: false, + updateUser: jest.fn(), + }), +})); describe('UserForm', () => { const queryClient = new QueryClient(); @@ -36,14 +49,25 @@ describe('UserForm', () => { test('Should submit correctly', async () => { const nameField = wrapper!.container.querySelector('#name'); const phoneField = wrapper!.container.querySelector('#phone'); - const submitBtn = wrapper!.getByText('Add'); + const submitBtn = wrapper!.getByText('Add').closest('button'); + let result: { + name: string; + phone: string; + }; - await act(async () => { - fireEvent.input(nameField!, { target: { value: 'Phan Huu Loi' } }); - fireEvent.input(phoneField!, { target: { value: '0324432321' } }); - fireEvent.click(submitBtn); + createUser.mockImplementationOnce((newUser, { onSuccess }) => { + result = newUser; + onSuccess(); }); - wrapper?.debug(); + fireEvent.input(nameField!, { target: { value: 'Nezumi' } }); + fireEvent.input(phoneField!, { target: { value: '0327764321' } }); + + fireEvent.submit(submitBtn!); + + await waitFor(() => { + expect(createUser).toHaveBeenCalled(); + expect(result).toEqual({ name: 'Nezumi', phone: '0327764321' }); + }); }); }); diff --git a/hotel-management/src/services/__tests__/roomService.test.ts b/hotel-management/src/services/__tests__/roomService.test.ts index a348130..fcd4cc8 100644 --- a/hotel-management/src/services/__tests__/roomService.test.ts +++ b/hotel-management/src/services/__tests__/roomService.test.ts @@ -1,4 +1,5 @@ import { waitFor } from '@testing-library/react'; +import supabase from '@service/supabaseService'; // Services import { @@ -10,8 +11,8 @@ import { // Types import { IRoom } from '@type/rooms'; -import supabase from '@service/supabaseService'; +jest.mock('@service/supabaseService'); const mockGetAllRooms = jest.fn(getAllRooms); const mockUpdateRoom = jest.fn(updateRoom); const mockCreateRoom = jest.fn(createRoom);