fix page isn't updated when switching category in closet

fix #284
This commit is contained in:
Pig Fang 2021-04-03 10:14:21 +08:00
parent 6f638dd9fc
commit 5fb4240a47
No known key found for this signature in database
GPG Key ID: A8198F548DADA9E2
3 changed files with 65 additions and 4 deletions

View File

@ -71,9 +71,19 @@ const Closet: React.FC = () => {
getItems()
}, [category, query, page])
const switchCategoryToSkin = () => setCategory('skin')
const switchCategoryToSkin = () => {
if (category !== 'skin') {
setCategory('skin')
setPage(1)
}
}
const switchCategoryToCape = () => setCategory('cape')
const switchCategoryToCape = () => {
if (category !== 'cape') {
setCategory('cape')
setPage(1)
}
}
const handleSearch = (event: React.ChangeEvent<HTMLInputElement>) => {
const value = event.target.value

View File

@ -4,13 +4,13 @@ export function flushPromises() {
return new Promise((resolve) => setImmediate(resolve))
}
export function createPaginator<T>(data: T[]): Paginator<T> {
export function createPaginator<T>(data: T[], perPage = 6): Paginator<T> {
return {
data,
total: data.length,
from: 1,
to: data.length,
current_page: 1,
last_page: 1,
last_page: Math.ceil(data.length / perPage),
}
}

View File

@ -128,6 +128,57 @@ describe('switch category', () => {
fireEvent.click(getByText(t('general.skin')))
await waitFor(() => expect(fetch.get).toBeCalledTimes(1))
})
it('reset page', async () => {
fetch.get
.mockResolvedValueOnce(
createPaginator(
Array.from({ length: 30 }).map((_, i) => ({
...fixtureSkin,
tid: i + 1,
})),
),
)
.mockResolvedValueOnce(
createPaginator(
Array.from({ length: 30 }).map((_, i) => ({
...fixtureSkin,
tid: i + 1,
})),
),
)
.mockResolvedValueOnce(createPaginator([fixtureCape]))
const { getByText } = render(<Closet />)
await waitFor(() =>
expect(fetch.get).toBeCalledWith(urls.user.closet.list(), {
category: 'skin',
q: '',
page: 1,
perPage: 6,
}),
)
fireEvent.click(getByText('3'))
await waitFor(() =>
expect(fetch.get).toBeCalledWith(urls.user.closet.list(), {
category: 'skin',
q: '',
page: 3,
perPage: 6,
}),
)
fireEvent.click(getByText(t('general.cape')))
await waitFor(() =>
expect(fetch.get).toBeCalledWith(urls.user.closet.list(), {
category: 'cape',
q: '',
page: 1,
perPage: 6,
}),
)
})
})
describe('rename item', () => {