Add test case for user, room hooks

This commit is contained in:
2023-11-23 17:45:26 +07:00
parent bc6f8675ff
commit e3db60b2dd
4 changed files with 128 additions and 105 deletions
@@ -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();
});
});
});