From c81fcd9a96204d0df4136bd38dcad1942c966495 Mon Sep 17 00:00:00 2001 From: Gustav Hansen Date: Wed, 4 May 2022 13:49:41 +0200 Subject: [PATCH] useFolderStructure: Add unit test --- .../hooks/tests/useFolderStructure.test.js | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 packages/core/upload/admin/src/hooks/tests/useFolderStructure.test.js diff --git a/packages/core/upload/admin/src/hooks/tests/useFolderStructure.test.js b/packages/core/upload/admin/src/hooks/tests/useFolderStructure.test.js new file mode 100644 index 0000000000..3775698c60 --- /dev/null +++ b/packages/core/upload/admin/src/hooks/tests/useFolderStructure.test.js @@ -0,0 +1,94 @@ +import React from 'react'; +import { QueryClientProvider, QueryClient } from 'react-query'; +import { renderHook, act } from '@testing-library/react-hooks'; + +import { axiosInstance } from '../../utils'; +import { useFolderStructure } from '../useFolderStructure'; + +jest.mock('../../utils', () => ({ + ...jest.requireActual('../../utils'), + axiosInstance: { + get: jest.fn().mockResolvedValue({ + data: { + data: [ + { + id: 1, + name: '1', + children: [], + }, + + { + id: 2, + name: '2', + children: [ + { + id: 21, + name: '21', + children: [], + }, + ], + }, + ], + }, + }), + }, +})); + +const client = new QueryClient({ + defaultOptions: { + queries: { + retry: false, + }, + }, +}); + +// eslint-disable-next-line react/prop-types +function ComponentFixture({ children }) { + return {children}; +} + +function setup(...args) { + return new Promise(resolve => { + act(() => { + resolve(renderHook(() => useFolderStructure(...args), { wrapper: ComponentFixture })); + }); + }); +} + +describe('useFolderStructure', () => { + afterEach(() => { + jest.clearAllMocks(); + }); + + test('fetches data from the right URL', async () => { + await setup(); + + expect(axiosInstance.get).toBeCalledWith('/upload/folder-structure'); + }); + + test('transforms the required object keys', async () => { + const { result, waitFor } = await setup({}); + + await waitFor(() => result.current.isSuccess); + + expect(result.current.data).toStrictEqual([ + { + value: 1, + label: '1', + children: [], + }, + + { + value: 2, + label: '2', + children: [ + { + value: 21, + label: '21', + children: [], + }, + ], + }, + ]); + }); +});