Remove some duplicated code

This commit is contained in:
Deluan
2021-10-31 14:23:41 -04:00
committed by Deluan Quintão
parent 765557d739
commit a4d3bf42a7
+29 -86
View File
@@ -4,10 +4,6 @@ import { DataProviderContext } from 'react-admin'
import { cleanup, fireEvent, render, waitFor } from '@testing-library/react' import { cleanup, fireEvent, render, waitFor } from '@testing-library/react'
import { AddToPlaylistDialog } from './AddToPlaylistDialog' import { AddToPlaylistDialog } from './AddToPlaylistDialog'
describe('AddToPlaylistDialog', () => {
beforeAll(() => localStorage.setItem('userId', 'admin'))
afterEach(cleanup)
const mockData = [ const mockData = [
{ id: 'sample-id1', name: 'sample playlist 1', ownerId: 'admin' }, { id: 'sample-id1', name: 'sample playlist 1', ownerId: 'admin' },
{ id: 'sample-id2', name: 'sample playlist 2', ownerId: 'admin' }, { id: 'sample-id2', name: 'sample playlist 2', ownerId: 'admin' },
@@ -26,18 +22,8 @@ describe('AddToPlaylistDialog', () => {
} }
const selectedIds = ['song-1', 'song-2'] const selectedIds = ['song-1', 'song-2']
it('adds distinct songs to already existing playlists', async () => { const createTestUtils = (mockDataProvider) =>
const mockDataProvider = { render(
getList: jest
.fn()
.mockResolvedValue({ data: mockData, total: mockData.length }),
getOne: jest.fn().mockResolvedValue({ data: { id: 'song-3' }, total: 1 }),
create: jest.fn().mockResolvedValue({
data: { id: 'created-id', name: 'created-name' },
}),
}
const testutils = render(
<DataProviderContext.Provider value={mockDataProvider}> <DataProviderContext.Provider value={mockDataProvider}>
<TestContext <TestContext
initialState={{ initialState={{
@@ -70,15 +56,32 @@ describe('AddToPlaylistDialog', () => {
</DataProviderContext.Provider> </DataProviderContext.Provider>
) )
describe('AddToPlaylistDialog', () => {
beforeAll(() => localStorage.setItem('userId', 'admin'))
afterEach(cleanup)
it('adds distinct songs to already existing playlists', async () => {
const mockDataProvider = {
getList: jest
.fn()
.mockResolvedValue({ data: mockData, total: mockData.length }),
getOne: jest.fn().mockResolvedValue({ data: { id: 'song-3' }, total: 1 }),
create: jest.fn().mockResolvedValue({
data: { id: 'created-id', name: 'created-name' },
}),
}
const testUtils = createTestUtils(mockDataProvider)
fireEvent.change(document.activeElement, { target: { value: 'sample' } }) fireEvent.change(document.activeElement, { target: { value: 'sample' } })
fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' })
fireEvent.keyDown(document.activeElement, { key: 'Enter' }) fireEvent.keyDown(document.activeElement, { key: 'Enter' })
fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' })
fireEvent.keyDown(document.activeElement, { key: 'Enter' }) fireEvent.keyDown(document.activeElement, { key: 'Enter' })
await waitFor(() => { await waitFor(() => {
expect(testutils.getByTestId('playlist-add')).not.toBeDisabled() expect(testUtils.getByTestId('playlist-add')).not.toBeDisabled()
}) })
fireEvent.click(testutils.getByTestId('playlist-add')) fireEvent.click(testUtils.getByTestId('playlist-add'))
await waitFor(() => { await waitFor(() => {
expect(mockDataProvider.create).toHaveBeenNthCalledWith( expect(mockDataProvider.create).toHaveBeenNthCalledWith(
1, 1,
@@ -111,38 +114,8 @@ describe('AddToPlaylistDialog', () => {
data: { id: 'created-id1', name: 'created-name' }, data: { id: 'created-id1', name: 'created-name' },
}), }),
} }
const testutils = render(
<DataProviderContext.Provider value={mockDataProvider}> const testUtils = createTestUtils(mockDataProvider)
<TestContext
initialState={{
addToPlaylistDialog: {
open: true,
duplicateSong: false,
selectedIds: selectedIds,
},
admin: {
ui: { optimistic: false },
resources: {
playlist: {
data: mockIndexedData,
list: {
cachedRequests: {
'{"pagination":{"page":1,"perPage":-1},"sort":{"field":"name","order":"ASC"},"filter":{}}':
{
ids: ['sample-id1', 'sample-id2'],
total: 2,
},
},
},
},
},
},
}}
>
<AddToPlaylistDialog />
</TestContext>
</DataProviderContext.Provider>
)
fireEvent.change(document.activeElement, { target: { value: 'sample' } }) fireEvent.change(document.activeElement, { target: { value: 'sample' } })
fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' })
@@ -150,9 +123,9 @@ describe('AddToPlaylistDialog', () => {
fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' })
fireEvent.keyDown(document.activeElement, { key: 'Enter' }) fireEvent.keyDown(document.activeElement, { key: 'Enter' })
await waitFor(() => { await waitFor(() => {
expect(testutils.getByTestId('playlist-add')).not.toBeDisabled() expect(testUtils.getByTestId('playlist-add')).not.toBeDisabled()
}) })
fireEvent.click(testutils.getByTestId('playlist-add')) fireEvent.click(testUtils.getByTestId('playlist-add'))
await waitFor(() => { await waitFor(() => {
expect(mockDataProvider.create).toHaveBeenNthCalledWith(1, 'playlist', { expect(mockDataProvider.create).toHaveBeenNthCalledWith(1, 'playlist', {
data: { name: 'sample' }, data: { name: 'sample' },
@@ -178,38 +151,8 @@ describe('AddToPlaylistDialog', () => {
data: { id: 'created-id1', name: 'created-name' }, data: { id: 'created-id1', name: 'created-name' },
}), }),
} }
const testutils = render(
<DataProviderContext.Provider value={mockDataProvider}> const testUtils = createTestUtils(mockDataProvider)
<TestContext
initialState={{
addToPlaylistDialog: {
open: true,
duplicateSong: false,
selectedIds: selectedIds,
},
admin: {
ui: { optimistic: false },
resources: {
playlist: {
data: mockIndexedData,
list: {
cachedRequests: {
'{"pagination":{"page":1,"perPage":-1},"sort":{"field":"name","order":"ASC"},"filter":{}}':
{
ids: ['sample-id1', 'sample-id2'],
total: 2,
},
},
},
},
},
},
}}
>
<AddToPlaylistDialog />
</TestContext>
</DataProviderContext.Provider>
)
fireEvent.change(document.activeElement, { target: { value: 'sample' } }) fireEvent.change(document.activeElement, { target: { value: 'sample' } })
fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' })
@@ -221,9 +164,9 @@ describe('AddToPlaylistDialog', () => {
}) })
fireEvent.keyDown(document.activeElement, { key: 'Enter' }) fireEvent.keyDown(document.activeElement, { key: 'Enter' })
await waitFor(() => { await waitFor(() => {
expect(testutils.getByTestId('playlist-add')).not.toBeDisabled() expect(testUtils.getByTestId('playlist-add')).not.toBeDisabled()
}) })
fireEvent.click(testutils.getByTestId('playlist-add')) fireEvent.click(testUtils.getByTestId('playlist-add'))
await waitFor(() => { await waitFor(() => {
expect(mockDataProvider.create).toHaveBeenCalledTimes(4) expect(mockDataProvider.create).toHaveBeenCalledTimes(4)
}) })