Skip to content

Commit

Permalink
test: fix failed test
Browse files Browse the repository at this point in the history
  • Loading branch information
miracles1919 committed Jun 26, 2023
1 parent dd78ba3 commit fc60355
Show file tree
Hide file tree
Showing 8 changed files with 79 additions and 51 deletions.
2 changes: 1 addition & 1 deletion jest.config.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module.exports = {
preset: 'ts-jest',
testEnvironment: 'jsdom',
maxConcurrency: 1,
// maxConcurrency: 1,
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
modulePathIgnorePatterns: ['<rootDir>/lib/', '<rootDir>/dist/'],
moduleDirectories: ['node_modules', 'src/tests'],
Expand Down
40 changes: 22 additions & 18 deletions src/components/image-viewer/tests/image-viewer.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,6 @@ describe('ImageViewer.Multi', () => {
expect(renderer.getByText('3 / 4')).not.toBeNull()
expect(renderer.container).toMatchSnapshot()
})

test('rendering with footer', () => {
function App() {
return (
Expand All @@ -180,7 +179,6 @@ describe('ImageViewer.Multi', () => {
render(<App />)
expect(screen.getByText('查看原图')).toBeInTheDocument()
})

test('`ImageViewer.Multi.show` should be work', async () => {
render(
<>
Expand All @@ -196,16 +194,16 @@ describe('ImageViewer.Multi', () => {
fireEvent.click(screen.getByText('show'))
const imgs = await screen.findAllByRole('img')
expect(imgs[0]).toBeVisible()
await userEvent.click(imgs[0])
await act(async () => {
await userEvent.click(imgs[0])
})
await waitFor(() => expect(imgs[0]).not.toBeVisible())
})

test('slide should be work', async () => {
Object.defineProperty(window, 'innerWidth', {
value: 300,
})
const onIndexChange = jest.fn()

render(
<button
onClick={() => {
Expand All @@ -215,24 +213,30 @@ describe('ImageViewer.Multi', () => {
show
</button>
)

fireEvent.click(screen.getByText('show'))
await screen.findAllByRole('img')
const slides = document.querySelectorAll(`.${classPrefix}-slides`)[0]
expect(screen.getByText('1 / 4')).toBeInTheDocument()

mockDrag(slides, [
{
clientX: 300,
},
{
clientX: 200,
},
{
clientX: 100,
},
])
await waitFor(() => expect(onIndexChange).toBeCalledWith(1))
await act(async () => {
await mockDrag(
slides,
[
{
clientX: 300,
},
{
clientX: 200,
},
{
clientX: 100,
},
],
5
)
})

expect(onIndexChange).toBeCalledWith(1)
expect(screen.getByText('2 / 4')).toBeInTheDocument()
})
})
8 changes: 6 additions & 2 deletions src/components/passcode-input/tests/passcode-input.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,9 @@ describe('PasscodeInput', () => {
render(<PasscodeInput plain />)
const input = screen.getByRole('button', { name: '密码输入框' })
fireEvent.focus(input)
await userEvent.keyboard('abc')
await act(async () => {
await userEvent.keyboard('abc')
})
expect(input).toHaveTextContent('abc')
})

Expand All @@ -91,7 +93,9 @@ describe('PasscodeInput', () => {
const input = screen.getByRole('button', { name: '密码输入框' })
fireEvent.focus(input)
expect(onFocus).toBeCalled()
await userEvent.keyboard('abcde')
await act(async () => {
await userEvent.keyboard('abcde')
})
expect(onFill).toBeCalled()
expect(onChange).toBeCalledTimes(4)
fireEvent.blur(input)
Expand Down
22 changes: 11 additions & 11 deletions src/components/popup/tests/popup.test.tsx
Original file line number Diff line number Diff line change
@@ -1,45 +1,45 @@
import * as React from 'react'
import { render, mockDrag } from 'testing'
import { render, mockDrag, act, waitFor } from 'testing'
import Popup from '..'

describe('Popup', () => {
test('top swipe should be closed', () => {
test('top swipe should be closed', async () => {
const onClose = jest.fn()
render(
<Popup visible onClose={onClose} position='top' closeOnSwipe>
<div style={{ height: '400px', width: '400px' }}></div>
</Popup>
)

mockDrag(
await mockDrag(
document.querySelector('.adm-popup') as Element,
new Array(8).fill(0).map((_, i) => {
new Array(4).fill(0).map((_, i) => {
return {
clientY: 400 - 50 * i,
}
})
}),
5
)

expect(onClose).toBeCalledTimes(1)
})

test('bottom swipe should be closed', () => {
test('bottom swipe should be closed', async () => {
const onClose = jest.fn()
render(
<Popup visible onClose={onClose} position='bottom' closeOnSwipe>
<div style={{ height: '400px', width: '400px' }}></div>
</Popup>
)

mockDrag(
await mockDrag(
document.querySelector('.adm-popup') as Element,
new Array(8).fill(0).map((_, i) => {
new Array(6).fill(0).map((_, i) => {
return {
clientY: 50 * i,
}
})
}),
5
)

expect(onClose).toBeCalledTimes(1)
})
})
11 changes: 8 additions & 3 deletions src/components/radio/tests/radio.test.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react'
import { fireEvent, render, testA11y, userEvent, screen } from 'testing'
import { fireEvent, render, testA11y, userEvent, screen, act } from 'testing'
import Radio from '../'
import { RadioGroupProps } from '../group'

Expand Down Expand Up @@ -30,7 +30,10 @@ describe('Radio', () => {
1
</Radio>
)
await userEvent.tripleClick(screen.getByRole('radio'))

await act(async () => {
await userEvent.tripleClick(screen.getByRole('radio'))
})
expect(onChange).toBeCalledTimes(1)
})
})
Expand Down Expand Up @@ -125,7 +128,9 @@ describe('Radio.Group', () => {
<Radio value='2'>2</Radio>
</Radio.Group>
)
await userEvent.tripleClick(screen.getByRole('radio', { name: '1' }))
await act(async () => {
await userEvent.tripleClick(screen.getByRole('radio', { name: '1' }))
})
expect(onChange).toBeCalledTimes(1)
})
})
13 changes: 10 additions & 3 deletions src/components/search-bar/tests/search-bar.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,9 @@ describe('adm-search-bar', () => {
render(<SearchBar showCancelButton />)
const input = screen.getByRole('searchbox')
fireEvent.focus(input)
await userEvent.type(input, '12')
await act(async () => {
await userEvent.type(input, '12')
})
fireEvent.click(screen.getByText('取消'))
expect(input).toHaveValue('')
})
Expand All @@ -62,7 +64,9 @@ describe('adm-search-bar', () => {
const onSearch = jest.fn()
render(<SearchBar onSearch={onSearch} />)
const input = screen.getByRole('searchbox')
await userEvent.type(input, '12{enter}')
await act(async () => {
await userEvent.type(input, '12{enter}')
})
expect(onSearch).toBeCalledWith('12')
})

Expand All @@ -80,7 +84,10 @@ describe('adm-search-bar', () => {
expect(input).toHaveFocus()
expect(onFocus).toBeCalled()

await userEvent.type(input, '12')
await act(async () => {
await userEvent.type(input, '12')
})

act(() => {
ref.current?.clear()
})
Expand Down
26 changes: 15 additions & 11 deletions src/components/swiper/tests/swiper.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -237,17 +237,21 @@ describe('Swiper', () => {
)

const el = $$(`.${classPrefix}-track`)[0]
mockDrag(el, [
{ clientX: 50, clientY: 300 },
{
clientX: 50,
clientY: 200,
},
{
clientX: 60,
clientY: 50,
},
])
await mockDrag(
el,
[
{ clientX: 50, clientY: 300 },
{
clientX: 50,
clientY: 200,
},
{
clientX: 60,
clientY: 50,
},
],
5
)

expect($$(`.${classPrefix}-track-inner`)[0]).toHaveStyle(
'transform: translate3d(0,-100%,0)'
Expand Down
8 changes: 6 additions & 2 deletions src/tests/testing.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ export { customRender as render }
export const testA11y = async (ui: UI | Element) => {
const container = React.isValidElement(ui) ? customRender(ui).container : ui

const results = await axe(container)
const results = await axe(container as Element)

expect(results).toHaveNoViolations()
}
Expand All @@ -116,7 +116,7 @@ export const actSleep = (time: number) => {
return act(() => sleep(time))
}

export const mockDrag = (el: Element, options: any[]) => {
export const mockDrag = async (el: Element, options: any[], time?: number) => {
const [downOptions, ...moveOptions] = options
fireEvent.mouseDown(el, {
buttons: 1,
Expand All @@ -127,6 +127,10 @@ export const mockDrag = (el: Element, options: any[]) => {
buttons: 1,
...item,
})

if (time) {
await sleep(time)
}
}
fireEvent.mouseUp(el)
}

0 comments on commit fc60355

Please sign in to comment.