mirror of
https://github.com/Nezumi-2711/react-training.git
synced 2026-09-22 20:01:59 +00:00
Add test case for user, room hooks
This commit is contained in:
@@ -1,70 +1,101 @@
|
||||
// import { useCreateUser } from '@hook/users/useCreateUser';
|
||||
// import { useUpdateUser } from '@hook/users/useUpdateUser';
|
||||
// import { useUsers } from '@hook/users/useUsers';
|
||||
// import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
||||
// import { renderHook, waitFor } from '@testing-library/react';
|
||||
// import { IUser } from '@type/users';
|
||||
// import { ReactNode } from 'react';
|
||||
// import { MemoryRouter } from 'react-router-dom';
|
||||
// import { act } from 'react-test-renderer';
|
||||
import { useCreateUser } from '@hook/users/useCreateUser';
|
||||
import { useUpdateUser } from '@hook/users/useUpdateUser';
|
||||
import { useUsers } from '@hook/users/useUsers';
|
||||
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
||||
import { renderHook, waitFor } from '@testing-library/react';
|
||||
import { IUser } from '@type/users';
|
||||
import { ReactNode } from 'react';
|
||||
import { MemoryRouter } from 'react-router-dom';
|
||||
import { act } from 'react-test-renderer';
|
||||
|
||||
// interface IWrapper {
|
||||
// children: ReactNode;
|
||||
// }
|
||||
const mockUseUsers = jest.fn(useUsers);
|
||||
const mockUseCreateUser = jest.fn(useCreateUser);
|
||||
const mockUseUpdateUser = jest.fn(useUpdateUser);
|
||||
|
||||
// const sampleData: IUser = {
|
||||
// id: 999,
|
||||
// name: 'User name test',
|
||||
// phone: '123456789',
|
||||
// isBooked: true,
|
||||
// };
|
||||
// const queryClient = new QueryClient({
|
||||
// defaultOptions: {
|
||||
// queries: {
|
||||
// retry: false,
|
||||
// },
|
||||
// },
|
||||
// });
|
||||
// const wrapper = ({ children }: IWrapper) => {
|
||||
// return (
|
||||
// <QueryClientProvider client={queryClient}>
|
||||
// <MemoryRouter>{children}</MemoryRouter>
|
||||
// </QueryClientProvider>
|
||||
// );
|
||||
// };
|
||||
interface IWrapper {
|
||||
children: ReactNode;
|
||||
}
|
||||
|
||||
// describe('CRUD User testing', () => {
|
||||
// test('Fetch user data', async () => {
|
||||
// const { result } = renderHook(() => useUsers(), { wrapper });
|
||||
const sampleData: IUser = {
|
||||
id: 999,
|
||||
name: 'User name test',
|
||||
phone: '123456789',
|
||||
isBooked: true,
|
||||
};
|
||||
const queryClient = new QueryClient({
|
||||
defaultOptions: {
|
||||
queries: {
|
||||
retry: false,
|
||||
},
|
||||
},
|
||||
});
|
||||
const wrapper = ({ children }: IWrapper) => {
|
||||
return (
|
||||
<QueryClientProvider client={queryClient}>
|
||||
<MemoryRouter>{children}</MemoryRouter>
|
||||
</QueryClientProvider>
|
||||
);
|
||||
};
|
||||
|
||||
// await waitFor(() =>
|
||||
// expect(result.current.users?.length).toBeGreaterThan(0)
|
||||
// );
|
||||
// });
|
||||
describe('CRUD User testing', () => {
|
||||
test('Fetch user data', async () => {
|
||||
mockUseUsers.mockImplementation(() => ({
|
||||
users: [
|
||||
{
|
||||
id: 1,
|
||||
name: 'Nezumi',
|
||||
phone: '0123456678',
|
||||
isBooked: true,
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: 'Loi Phan',
|
||||
phone: '0123456678',
|
||||
isBooked: false,
|
||||
},
|
||||
],
|
||||
isLoading: false,
|
||||
}))
|
||||
const { result } = renderHook(() => mockUseUsers(), { wrapper });
|
||||
|
||||
// test('Create user', async () => {
|
||||
// const { result } = renderHook(() => useCreateUser(), { wrapper });
|
||||
await waitFor(() =>
|
||||
expect(result.current.users?.length).toEqual(2)
|
||||
);
|
||||
});
|
||||
|
||||
// act(() => {
|
||||
// const testMethod = async () => {
|
||||
// result.current.createUser(sampleData);
|
||||
// await waitFor(() => expect(result.current.isSuccess).toBeTruthy());
|
||||
// };
|
||||
test('Create user', async () => {
|
||||
mockUseCreateUser.mockImplementation(() => ({
|
||||
createUser: () => {sampleData},
|
||||
isCreating: false,
|
||||
isSuccess: true,
|
||||
}));
|
||||
const { result } = renderHook(() => mockUseCreateUser(), { wrapper });
|
||||
|
||||
// testMethod();
|
||||
// });
|
||||
// });
|
||||
act(() => {
|
||||
const testMethod = async () => {
|
||||
result.current.createUser(sampleData);
|
||||
await waitFor(() => expect(result.current.isSuccess).toBeTruthy());
|
||||
};
|
||||
|
||||
// test('Update user', async () => {
|
||||
// const { result } = renderHook(() => useUpdateUser(), { wrapper });
|
||||
testMethod();
|
||||
});
|
||||
});
|
||||
|
||||
// act(() => {
|
||||
// const testMethod = async () => {
|
||||
// result.current.updateUser(sampleData);
|
||||
// await waitFor(() => expect(result.current.isSuccess).toBeTruthy());
|
||||
// };
|
||||
test('Update user', async () => {
|
||||
mockUseUpdateUser.mockImplementation(() => ({
|
||||
updateUser: () => {sampleData},
|
||||
isUpdating: false,
|
||||
isSuccess: true,
|
||||
}));
|
||||
const { result } = renderHook(() => mockUseUpdateUser(), { wrapper });
|
||||
|
||||
// testMethod();
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
act(() => {
|
||||
const testMethod = async () => {
|
||||
result.current.updateUser(sampleData);
|
||||
await waitFor(() => expect(result.current.isSuccess).toBeTruthy());
|
||||
};
|
||||
|
||||
testMethod();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user