diff --git a/ui/src/common/MultiLineTextField.test.js b/ui/src/common/MultiLineTextField.test.js index c8833705..44dede43 100644 --- a/ui/src/common/MultiLineTextField.test.js +++ b/ui/src/common/MultiLineTextField.test.js @@ -1,5 +1,5 @@ import * as React from 'react' -import { render, cleanup } from '@testing-library/react' +import { render, cleanup, screen } from '@testing-library/react' import { MultiLineTextField } from './MultiLineTextField' describe('', () => { @@ -7,24 +7,22 @@ describe('', () => { it('should render each line in a separated div', () => { const record = { comment: 'line1\nline2' } - const { queryByTestId } = render( - - ) - expect(queryByTestId('comment.0').textContent).toBe('line1') - expect(queryByTestId('comment.1').textContent).toBe('line2') + render() + expect(screen.queryByTestId('comment.0').textContent).toBe('line1') + expect(screen.queryByTestId('comment.1').textContent).toBe('line2') }) it.each([null, undefined])( 'should render the emptyText when value is %s', (body) => { - const { queryByText } = render( + render( ) - expect(queryByText('NA')).not.toBeNull() + expect(screen.getByText('NA')).toBeInTheDocument() } ) }) diff --git a/ui/src/common/QualityInfo.test.js b/ui/src/common/QualityInfo.test.js index aec3a3bc..735fe70b 100644 --- a/ui/src/common/QualityInfo.test.js +++ b/ui/src/common/QualityInfo.test.js @@ -1,5 +1,5 @@ import * as React from 'react' -import { cleanup, render } from '@testing-library/react' +import { cleanup, render, screen } from '@testing-library/react' import { QualityInfo } from './QualityInfo' describe('', () => { @@ -7,21 +7,21 @@ describe('', () => { it('only render suffix for lossless formats', () => { const info = { suffix: 'FLAC', bitRate: 1008 } - const { queryByText } = render() - expect(queryByText('FLAC')).not.toBeNull() + render() + expect(screen.getByText('FLAC')).toBeInTheDocument() }) it('only render suffix and bitrate for lossy formats', () => { const info = { suffix: 'MP3', bitRate: 320 } - const { queryByText } = render() - expect(queryByText('MP3 320')).not.toBeNull() + render() + expect(screen.getByText('MP3 320')).toBeInTheDocument() }) it('renders placeholder if suffix is missing', () => { const info = {} - const { queryByText } = render() - expect(queryByText('N/A')).not.toBeNull() + render() + expect(screen.getByText('N/A')).toBeInTheDocument() }) it('does not break if record is null', () => { - const { queryByText } = render() - expect(queryByText('N/A')).not.toBeNull() + render() + expect(screen.getByText('N/A')).toBeInTheDocument() }) }) diff --git a/ui/src/common/QuickFilter.test.js b/ui/src/common/QuickFilter.test.js index aad70311..56426af9 100644 --- a/ui/src/common/QuickFilter.test.js +++ b/ui/src/common/QuickFilter.test.js @@ -1,5 +1,5 @@ import * as React from 'react' -import { cleanup, render } from '@testing-library/react' +import { cleanup, render, screen } from '@testing-library/react' import { QuickFilter } from './QuickFilter' import StarIcon from '@material-ui/icons/Star' @@ -7,27 +7,23 @@ describe('QuickFilter', () => { afterEach(cleanup) it('renders label if provided', () => { - const { getByText } = render( - - ) - expect(getByText('MyLabel')).not.toBeNull() + render() + expect(screen.getByText('MyLabel')).not.toBeNull() }) it('renders resource translation if label is not provided', () => { - const { getByText } = render( - - ) - expect(getByText('resources.song.fields.name')).not.toBeNull() + render() + expect(screen.getByText('resources.song.fields.name')).not.toBeNull() }) it('renders a component label', () => { - const { getByTestId } = render( + render( } /> ) - expect(getByTestId('label-icon-test')).not.toBeNull() + expect(screen.getByTestId('label-icon-test')).not.toBeNull() }) }) diff --git a/ui/src/dialogs/AboutDialog.test.js b/ui/src/dialogs/AboutDialog.test.js index e3f8d3a8..389034fe 100644 --- a/ui/src/dialogs/AboutDialog.test.js +++ b/ui/src/dialogs/AboutDialog.test.js @@ -1,5 +1,5 @@ import * as React from 'react' -import { cleanup, render } from '@testing-library/react' +import { cleanup, render, screen } from '@testing-library/react' import { LinkToVersion } from './AboutDialog' import TableBody from '@material-ui/core/TableBody' import TableRow from '@material-ui/core/TableRow' @@ -20,35 +20,35 @@ describe('', () => { it('should not render any link for "dev" version', () => { const version = 'dev' - const { queryByRole } = render() - expect(queryByRole('link')).toBeNull() + render() + expect(screen.queryByRole('link')).toBeNull() }) it('should render link to GH tag page for full releases', () => { const version = '0.40.0 (300a0292)' - const { queryByRole } = render() + render() - const link = queryByRole('link') + const link = screen.queryByRole('link') expect(link.href).toBe( 'https://github.com/navidrome/navidrome/releases/tag/v0.40.0' ) expect(link.textContent).toBe('0.40.0') - const cell = queryByRole('cell') + const cell = screen.queryByRole('cell') expect(cell.textContent).toBe('0.40.0 (300a0292)') }) it('should render link to GH comparison page for snapshot releases', () => { const version = '0.40.0-SNAPSHOT (300a0292)' - const { queryByRole } = render() + render() - const link = queryByRole('link') + const link = screen.queryByRole('link') expect(link.href).toBe( 'https://github.com/navidrome/navidrome/compare/v0.40.0...300a0292' ) expect(link.textContent).toBe('0.40.0-SNAPSHOT') - const cell = queryByRole('cell') + const cell = screen.queryByRole('cell') expect(cell.textContent).toBe('0.40.0-SNAPSHOT (300a0292)') }) }) diff --git a/ui/src/dialogs/AddToPlaylistDialog.test.js b/ui/src/dialogs/AddToPlaylistDialog.test.js index 7a1fe515..5f433dfc 100644 --- a/ui/src/dialogs/AddToPlaylistDialog.test.js +++ b/ui/src/dialogs/AddToPlaylistDialog.test.js @@ -1,7 +1,13 @@ import * as React from 'react' import { TestContext } from 'ra-test' import { DataProviderContext } from 'react-admin' -import { cleanup, fireEvent, render, waitFor } from '@testing-library/react' +import { + cleanup, + fireEvent, + render, + waitFor, + screen, +} from '@testing-library/react' import { AddToPlaylistDialog } from './AddToPlaylistDialog' const mockData = [ @@ -71,17 +77,18 @@ describe('AddToPlaylistDialog', () => { }), } - const testUtils = createTestUtils(mockDataProvider) + createTestUtils(mockDataProvider) - fireEvent.change(document.activeElement, { target: { value: 'sample' } }) - fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) - fireEvent.keyDown(document.activeElement, { key: 'Enter' }) - fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) - fireEvent.keyDown(document.activeElement, { key: 'Enter' }) + let textBox = screen.getByRole('textbox') + fireEvent.change(textBox, { target: { value: 'sample' } }) + fireEvent.keyDown(textBox, { key: 'ArrowDown' }) + fireEvent.keyDown(textBox, { key: 'Enter' }) + fireEvent.keyDown(textBox, { key: 'ArrowDown' }) + fireEvent.keyDown(textBox, { key: 'Enter' }) await waitFor(() => { - expect(testUtils.getByTestId('playlist-add')).not.toBeDisabled() + expect(screen.getByTestId('playlist-add')).not.toBeDisabled() }) - fireEvent.click(testUtils.getByTestId('playlist-add')) + fireEvent.click(screen.getByTestId('playlist-add')) await waitFor(() => { expect(mockDataProvider.create).toHaveBeenNthCalledWith( 1, @@ -115,30 +122,31 @@ describe('AddToPlaylistDialog', () => { }), } - const testUtils = createTestUtils(mockDataProvider) + createTestUtils(mockDataProvider) - fireEvent.change(document.activeElement, { target: { value: 'sample' } }) - fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) - fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) - fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) - fireEvent.keyDown(document.activeElement, { key: 'Enter' }) + let textBox = screen.getByRole('textbox') + fireEvent.change(textBox, { target: { value: 'sample' } }) + fireEvent.keyDown(textBox, { key: 'ArrowDown' }) + fireEvent.keyDown(textBox, { key: 'ArrowDown' }) + fireEvent.keyDown(textBox, { key: 'ArrowDown' }) + fireEvent.keyDown(textBox, { key: 'Enter' }) await waitFor(() => { - expect(testUtils.getByTestId('playlist-add')).not.toBeDisabled() + expect(screen.getByTestId('playlist-add')).not.toBeDisabled() }) - fireEvent.click(testUtils.getByTestId('playlist-add')) + fireEvent.click(screen.getByTestId('playlist-add')) await waitFor(() => { expect(mockDataProvider.create).toHaveBeenNthCalledWith(1, 'playlist', { data: { name: 'sample' }, }) - expect(mockDataProvider.create).toHaveBeenNthCalledWith( - 2, - 'playlistTrack', - { - data: { ids: selectedIds }, - filter: { playlist_id: 'created-id1' }, - } - ) }) + expect(mockDataProvider.create).toHaveBeenNthCalledWith( + 2, + 'playlistTrack', + { + data: { ids: selectedIds }, + filter: { playlist_id: 'created-id1' }, + } + ) }) it('adds distinct songs to multiple new playlists', async () => { @@ -152,21 +160,20 @@ describe('AddToPlaylistDialog', () => { }), } - const testUtils = createTestUtils(mockDataProvider) + createTestUtils(mockDataProvider) - fireEvent.change(document.activeElement, { target: { value: 'sample' } }) - fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) - fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) - fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) - fireEvent.keyDown(document.activeElement, { key: 'Enter' }) - fireEvent.change(document.activeElement, { - target: { value: 'new playlist' }, - }) - fireEvent.keyDown(document.activeElement, { key: 'Enter' }) + let textBox = screen.getByRole('textbox') + fireEvent.change(textBox, { target: { value: 'sample' } }) + fireEvent.keyDown(textBox, { key: 'ArrowDown' }) + fireEvent.keyDown(textBox, { key: 'ArrowDown' }) + fireEvent.keyDown(textBox, { key: 'ArrowDown' }) + fireEvent.keyDown(textBox, { key: 'Enter' }) + fireEvent.change(textBox, { target: { value: 'new playlist' } }) + fireEvent.keyDown(textBox, { key: 'Enter' }) await waitFor(() => { - expect(testUtils.getByTestId('playlist-add')).not.toBeDisabled() + expect(screen.getByTestId('playlist-add')).not.toBeDisabled() }) - fireEvent.click(testUtils.getByTestId('playlist-add')) + fireEvent.click(screen.getByTestId('playlist-add')) await waitFor(() => { expect(mockDataProvider.create).toHaveBeenCalledTimes(4) }) diff --git a/ui/src/dialogs/SelectPlaylistInput.test.js b/ui/src/dialogs/SelectPlaylistInput.test.js index f3485594..544e0260 100644 --- a/ui/src/dialogs/SelectPlaylistInput.test.js +++ b/ui/src/dialogs/SelectPlaylistInput.test.js @@ -1,7 +1,13 @@ import * as React from 'react' import { TestContext } from 'ra-test' import { DataProviderContext } from 'react-admin' -import { cleanup, fireEvent, render, waitFor } from '@testing-library/react' +import { + cleanup, + fireEvent, + render, + screen, + waitFor, +} from '@testing-library/react' import { SelectPlaylistInput } from './SelectPlaylistInput' describe('SelectPlaylistInput', () => { @@ -70,17 +76,18 @@ describe('SelectPlaylistInput', () => { }) }) - fireEvent.change(document.activeElement, { target: { value: 'sample' } }) - fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) - fireEvent.keyDown(document.activeElement, { key: 'Enter' }) + let textBox = screen.getByRole('textbox') + fireEvent.change(textBox, { target: { value: 'sample' } }) + fireEvent.keyDown(textBox, { key: 'ArrowDown' }) + fireEvent.keyDown(textBox, { key: 'Enter' }) await waitFor(() => { expect(onChangeHandler).toHaveBeenCalledWith([ { id: 'sample-id1', name: 'sample playlist 1', ownerId: 'admin' }, ]) }) - fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) - fireEvent.keyDown(document.activeElement, { key: 'Enter' }) + fireEvent.keyDown(textBox, { key: 'ArrowDown' }) + fireEvent.keyDown(textBox, { key: 'Enter' }) await waitFor(() => { expect(onChangeHandler).toHaveBeenCalledWith([ { id: 'sample-id1', name: 'sample playlist 1', ownerId: 'admin' }, @@ -88,11 +95,11 @@ describe('SelectPlaylistInput', () => { ]) }) - fireEvent.change(document.activeElement, { + fireEvent.change(textBox, { target: { value: 'new playlist' }, }) - fireEvent.keyDown(document.activeElement, { key: 'ArrowDown' }) - fireEvent.keyDown(document.activeElement, { key: 'Enter' }) + fireEvent.keyDown(textBox, { key: 'ArrowDown' }) + fireEvent.keyDown(textBox, { key: 'Enter' }) await waitFor(() => { expect(onChangeHandler).toHaveBeenCalledWith([ { id: 'sample-id1', name: 'sample playlist 1', ownerId: 'admin' }, @@ -101,10 +108,10 @@ describe('SelectPlaylistInput', () => { ]) }) - fireEvent.change(document.activeElement, { + fireEvent.change(textBox, { target: { value: 'another new playlist' }, }) - fireEvent.keyDown(document.activeElement, { key: 'Enter' }) + fireEvent.keyDown(textBox, { key: 'Enter' }) await waitFor(() => { expect(onChangeHandler).toHaveBeenCalledWith([ { id: 'sample-id1', name: 'sample playlist 1', ownerId: 'admin' }, diff --git a/ui/src/layout/DynamicMenuIcon.test.js b/ui/src/layout/DynamicMenuIcon.test.js index d134120f..3d8e238f 100644 --- a/ui/src/layout/DynamicMenuIcon.test.js +++ b/ui/src/layout/DynamicMenuIcon.test.js @@ -1,5 +1,5 @@ import * as React from 'react' -import { cleanup, render } from '@testing-library/react' +import { cleanup, render, screen } from '@testing-library/react' import { createMemoryHistory } from 'history' import { Router } from 'react-router-dom' import StarIcon from '@material-ui/icons/Star' @@ -14,12 +14,12 @@ describe('', () => { const route = '/test' history.push(route) - const { getByTestId } = render( + render( ) - expect(getByTestId('icon')).not.toBeNull() + expect(screen.getByTestId('icon')).not.toBeNull() }) it('renders icon if path does not match the URL', () => { @@ -27,7 +27,7 @@ describe('', () => { const route = '/path' history.push(route) - const { getByTestId } = render( + render( ', () => { /> ) - expect(getByTestId('icon')).not.toBeNull() + expect(screen.getByTestId('icon')).not.toBeNull() }) it('renders activeIcon if path matches the URL', () => { @@ -44,7 +44,7 @@ describe('', () => { const route = '/path' history.push(route) - const { getByTestId } = render( + render( ', () => { /> ) - expect(getByTestId('activeIcon')).not.toBeNull() + expect(screen.getByTestId('activeIcon')).not.toBeNull() }) })