diff --git a/resources/assets/tests/components/AddPlayerDialog.test.ts b/resources/assets/tests/components/AddPlayerDialog.test.ts
index b387c20f..cde85147 100644
--- a/resources/assets/tests/components/AddPlayerDialog.test.ts
+++ b/resources/assets/tests/components/AddPlayerDialog.test.ts
@@ -24,7 +24,7 @@ test('add player', async () => {
{ name: 'the-new' }
)
await flushPromises()
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.text()).not.toContain('the-new')
expect(Vue.prototype.$message.warning).toBeCalledWith('fail')
diff --git a/resources/assets/tests/components/ApplyToPlayerDialog.test.ts b/resources/assets/tests/components/ApplyToPlayerDialog.test.ts
index 698d58ef..443fbbda 100644
--- a/resources/assets/tests/components/ApplyToPlayerDialog.test.ts
+++ b/resources/assets/tests/components/ApplyToPlayerDialog.test.ts
@@ -1,5 +1,6 @@
import Vue from 'vue'
import { mount } from '@vue/test-utils'
+import { flushPromises } from '../utils'
import ApplyToPlayerDialog from '@/components/ApplyToPlayerDialog.vue'
test('submit applying texture', async () => {
@@ -35,7 +36,7 @@ test('submit applying texture', async () => {
cape: 1,
}
)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$message.success).toBeCalledWith('ok')
})
diff --git a/resources/assets/tests/components/ClosetItem.test.ts b/resources/assets/tests/components/ClosetItem.test.ts
index 57b0f9dc..1469e3b4 100644
--- a/resources/assets/tests/components/ClosetItem.test.ts
+++ b/resources/assets/tests/components/ClosetItem.test.ts
@@ -51,11 +51,11 @@ test('rename texture', async () => {
.find('a')
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).not.toBeCalled()
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
button.trigger('click')
await flushPromises()
@@ -79,11 +79,11 @@ test('remove texture', async () => {
.find('a')
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).not.toBeCalled()
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
button.trigger('click')
await flushPromises()
@@ -105,15 +105,15 @@ test('set as avatar', async () => {
document.body.innerHTML += '
'
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).not.toBeCalled()
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
button.trigger('click')
await flushPromises()
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith('/user/profile/avatar', { tid: 1 })
expect(document.querySelector('img')!.src).toMatch(/\d+$/)
})
diff --git a/resources/assets/tests/components/EmailVerification.test.ts b/resources/assets/tests/components/EmailVerification.test.ts
index e8d9104d..f0b36025 100644
--- a/resources/assets/tests/components/EmailVerification.test.ts
+++ b/resources/assets/tests/components/EmailVerification.test.ts
@@ -1,5 +1,6 @@
import Vue from 'vue'
import { mount } from '@vue/test-utils'
+import { flushPromises } from '../utils'
import EmailVerification from '@/components/EmailVerification.vue'
test('message box should not be render if verified', () => {
@@ -17,10 +18,10 @@ test('resend email', async () => {
const button = wrapper.find('a')
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$message.error).toBeCalledWith('1')
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$message.success).toBeCalledWith('0')
})
diff --git a/resources/assets/tests/views/admin/Market.test.ts b/resources/assets/tests/views/admin/Market.test.ts
index 10d8f86f..64721fcb 100644
--- a/resources/assets/tests/views/admin/Market.test.ts
+++ b/resources/assets/tests/views/admin/Market.test.ts
@@ -66,7 +66,7 @@ test('install plugin', async () => {
{ name: 'd' }
)
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.text()).toContain('admin.enablePlugin')
})
diff --git a/resources/assets/tests/views/admin/Players.test.ts b/resources/assets/tests/views/admin/Players.test.ts
index f3a71b2c..1fcc722c 100644
--- a/resources/assets/tests/views/admin/Players.test.ts
+++ b/resources/assets/tests/views/admin/Players.test.ts
@@ -28,7 +28,7 @@ test('change texture', async () => {
.mockResolvedValueOnce({ code: 0, message: '0' })
const wrapper = mount(Players)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.find('[data-test=changeTexture]')
wrapper
.findAll(Button)
@@ -39,7 +39,7 @@ test('change texture', async () => {
.setValue('5')
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/admin/players?action=texture',
{
@@ -71,14 +71,14 @@ test('change player name', async () => {
return Promise.resolve({ value: 'new' } as MessageBoxData)
})
const wrapper = mount(Players)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.find('[data-test="name"]')
button.trigger('click')
expect(Vue.prototype.$http.post).not.toBeCalled()
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/admin/players?action=name',
{ pid: 1, name: 'new' }
@@ -102,14 +102,14 @@ test('change owner', async () => {
.mockResolvedValue({ value: '3' } as MessageBoxData)
const wrapper = mount(Players)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.find('[data-test="owner"]')
button.trigger('click')
expect(Vue.prototype.$http.post).not.toBeCalled()
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/admin/players?action=owner',
{ pid: 1, uid: '3' }
@@ -133,14 +133,14 @@ test('delete player', async () => {
.mockResolvedValue('confirm')
const wrapper = mount(Players)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.findAll(Button).at(1)
button.trigger('click')
expect(Vue.prototype.$http.post).not.toBeCalled()
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/admin/players?action=delete',
{ pid: 1 }
diff --git a/resources/assets/tests/views/admin/Reports.test.ts b/resources/assets/tests/views/admin/Reports.test.ts
index 9fe97608..386ef5af 100644
--- a/resources/assets/tests/views/admin/Reports.test.ts
+++ b/resources/assets/tests/views/admin/Reports.test.ts
@@ -16,7 +16,7 @@ test('basic render', async () => {
}],
})
const wrapper = mount(Reports)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const text = wrapper.text()
expect(text).toContain('a (UID: 1)')
expect(text).toContain('b (UID: 2)')
@@ -29,7 +29,7 @@ test('link to skin library', async () => {
data: [{ id: 1, tid: 1 }],
})
const wrapper = mount(Reports)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('a').attributes('href')).toBe('/skinlib/show/1')
})
@@ -41,7 +41,7 @@ test('delete texture', async () => {
code: 0, message: 'ok', data: { status: 1 },
})
const wrapper = mount(Reports)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.findAll('a').at(1)
button.trigger('click')
@@ -65,7 +65,7 @@ test('ban uploader', async () => {
code: 0, message: 'ok', data: { status: 1 },
})
const wrapper = mount(Reports)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.findAll('a').at(2)
button.trigger('click')
@@ -85,7 +85,7 @@ test('reject', async () => {
code: 0, message: 'ok', data: { status: 2 },
})
const wrapper = mount(Reports)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.find('button')
button.trigger('click')
diff --git a/resources/assets/tests/views/admin/Users.test.ts b/resources/assets/tests/views/admin/Users.test.ts
index fb6e00ef..48744297 100644
--- a/resources/assets/tests/views/admin/Users.test.ts
+++ b/resources/assets/tests/views/admin/Users.test.ts
@@ -31,7 +31,7 @@ test('humanize permission', async () => {
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const text = wrapper.find('.vgt-table').text()
expect(text).toContain('admin.banned')
expect(text).toContain('admin.normal')
@@ -46,7 +46,7 @@ test('generate players page link', async () => {
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-toggle="tooltip"]').attributes('href')).toBe('/admin/players?uid=1')
})
@@ -57,7 +57,7 @@ test('permission option should not be displayed for super admins', async () => {
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test=permission]').exists()).toBeFalse()
})
@@ -70,7 +70,7 @@ test('permission option should be displayed for admin as super admin', async ()
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test=permission]').exists()).toBeTrue()
})
@@ -83,7 +83,7 @@ test('permission option should be displayed for normal users as super admin', as
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test=permission]').exists()).toBeTrue()
})
@@ -96,7 +96,7 @@ test('permission option should be displayed for banned users as super admin', as
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test=permission]').exists()).toBeTrue()
})
@@ -109,7 +109,7 @@ test('permission option should not be displayed for other admins as admin', asyn
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test=permission]').exists()).toBeFalse()
})
@@ -122,7 +122,7 @@ test('permission option should be displayed for normal users as admin', async ()
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test=permission]').exists()).toBeTrue()
})
@@ -135,7 +135,7 @@ test('permission option should be displayed for banned users as admin', async ()
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test=permission]').exists()).toBeTrue()
})
@@ -146,7 +146,7 @@ test('deletion button should not be displayed for super admins', async () => {
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test="deleteUser"]').attributes('disabled')).toBe('disabled')
})
@@ -159,7 +159,7 @@ test('deletion button should be displayed for admins as super admin', async () =
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test="deleteUser"]').attributes('disabled')).toBeNil()
})
@@ -172,7 +172,7 @@ test('deletion button should be displayed for normal users as super admin', asyn
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test="deleteUser"]').attributes('disabled')).toBeNil()
})
@@ -185,7 +185,7 @@ test('deletion button should be displayed for banned users as super admin', asyn
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test="deleteUser"]').attributes('disabled')).toBeNil()
})
@@ -198,7 +198,7 @@ test('deletion button should not be displayed for other admins as admin', async
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test="deleteUser"]').attributes('disabled')).toBe('disabled')
})
@@ -211,7 +211,7 @@ test('deletion button should be displayed for normal users as admin', async () =
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test="deleteUser"]').attributes('disabled')).toBeNil()
})
@@ -224,7 +224,7 @@ test('deletion button should be displayed for banned users as admin', async () =
],
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test="deleteUser"]').attributes('disabled')).toBeNil()
})
@@ -247,14 +247,14 @@ test('change email', async () => {
return Promise.resolve({ value: 'd@e.f' } as MessageBoxData)
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.find('[data-test="email"]')
button.trigger('click')
expect(Vue.prototype.$http.post).not.toBeCalled()
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/admin/users?action=email',
{ uid: 1, email: 'd@e.f' }
@@ -277,11 +277,11 @@ test('toggle verification', async () => {
.mockResolvedValueOnce({ code: 0, message: '0' })
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.find('[data-test="verification"')
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/admin/users?action=verification',
{ uid: 1 }
@@ -310,14 +310,14 @@ test('change nickname', async () => {
return Promise.resolve({ value: 'new' } as MessageBoxData)
})
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.find('[data-test="nickname"]')
button.trigger('click')
expect(Vue.prototype.$http.post).not.toBeCalled()
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/admin/users?action=nickname',
{ uid: 1, nickname: 'new' }
@@ -343,14 +343,14 @@ test('change password', async () => {
.mockResolvedValue({ value: 'password' }as MessageBoxData)
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.findAll(Button).at(0)
button.trigger('click')
expect(Vue.prototype.$http.post).not.toBeCalled()
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/admin/users?action=password',
{ uid: 1, password: 'password' }
@@ -378,14 +378,14 @@ test('change score', async () => {
.mockResolvedValue({ value: '45' }as MessageBoxData)
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.find('[data-test="score"]')
button.trigger('click')
expect(Vue.prototype.$http.post).not.toBeCalled()
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/admin/users?action=score',
{ uid: 1, score: 45 }
@@ -443,14 +443,14 @@ test('change permission', async () => {
})
let wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
let button = wrapper.find('[data-test=permission]')
button.trigger('click')
expect(Vue.prototype.$http.post).not.toBeCalled()
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/admin/users?action=permission',
{ uid: 1, permission: 1 }
@@ -458,7 +458,7 @@ test('change permission', async () => {
expect(wrapper.text()).toContain('admin.normal')
wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
button = wrapper.find('[data-test=permission]')
button.trigger('click')
@@ -480,14 +480,14 @@ test('delete user', async () => {
.mockResolvedValue('confirm')
const wrapper = mount(Users)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.findAll(Button).at(1)
button.trigger('click')
expect(Vue.prototype.$http.post).not.toBeCalled()
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/admin/users?action=delete',
{ uid: 1 }
diff --git a/resources/assets/tests/views/auth/Login.test.ts b/resources/assets/tests/views/auth/Login.test.ts
index 763641a9..eff94653 100644
--- a/resources/assets/tests/views/auth/Login.test.ts
+++ b/resources/assets/tests/views/auth/Login.test.ts
@@ -1,5 +1,6 @@
import Vue from 'vue'
import { mount } from '@vue/test-utils'
+import { flushPromises } from '../../utils'
import Login from '@/views/auth/Login.vue'
const Captcha = Vue.extend({
@@ -35,7 +36,7 @@ test('login', async () => {
wrapper.find('input').setValue('a@b.c')
wrapper.find('[type="password"]').setValue('123')
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/auth/login',
{
@@ -45,7 +46,7 @@ test('login', async () => {
expect(warning.text()).toBe('fail')
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$alert).toBeCalledWith('auth.tooManyFails.captcha', { type: 'error' })
expect(wrapper.find('img').exists()).toBeTrue()
@@ -53,25 +54,25 @@ test('login', async () => {
recaptcha: 'sitekey', invisible: true, tooManyFails: false,
})
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
wrapper.setData({
recaptcha: 'sitekey', invisible: false, tooManyFails: false,
})
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$alert).toBeCalledWith('auth.tooManyFails.recaptcha', { type: 'error' })
wrapper.find('[type="checkbox"]').setChecked()
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/auth/login',
{
identification: 'a@b.c', password: '123', keep: true, captcha: 'a',
}
)
- await wrapper.vm.$nextTick()
+ await flushPromises()
jest.runAllTimers()
expect(Vue.prototype.$message.success).toBeCalledWith('ok')
})
diff --git a/resources/assets/tests/views/auth/Register.test.ts b/resources/assets/tests/views/auth/Register.test.ts
index 2004f19d..54b25344 100644
--- a/resources/assets/tests/views/auth/Register.test.ts
+++ b/resources/assets/tests/views/auth/Register.test.ts
@@ -48,7 +48,7 @@ test('register', async () => {
wrapper.findAll('[type="text"]').at(0)
.setValue('abc')
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/auth/register',
{
@@ -58,7 +58,7 @@ test('register', async () => {
captcha: 'captcha',
}
)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(warning.text()).toBe('fail')
form.trigger('submit')
@@ -80,7 +80,7 @@ test('register with player name', async () => {
wrapper.findAll('[type="text"]').at(0)
.setValue('abc')
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/auth/register',
{
diff --git a/resources/assets/tests/views/auth/Reset.test.ts b/resources/assets/tests/views/auth/Reset.test.ts
index 7ab4d5e6..bd3593f5 100644
--- a/resources/assets/tests/views/auth/Reset.test.ts
+++ b/resources/assets/tests/views/auth/Reset.test.ts
@@ -1,5 +1,6 @@
import Vue from 'vue'
import { mount } from '@vue/test-utils'
+import { flushPromises } from '../../utils'
import Reset from '@/views/auth/Reset.vue'
test('reset password', async () => {
@@ -30,10 +31,10 @@ test('reset password', async () => {
'/auth/reset/1', // Ignore `location.search`
{ password: '12345678' }
)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(warning.text()).toBe('fail')
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$message.success).toBeCalledWith('ok')
})
diff --git a/resources/assets/tests/views/skinlib/List.test.ts b/resources/assets/tests/views/skinlib/List.test.ts
index 45fd44de..2d41dcb9 100644
--- a/resources/assets/tests/views/skinlib/List.test.ts
+++ b/resources/assets/tests/views/skinlib/List.test.ts
@@ -2,6 +2,7 @@ import Vue from 'vue'
import { mount } from '@vue/test-utils'
// @ts-ignore
import Button from 'element-ui/lib/button'
+import { flushPromises } from '../../utils'
import { queryString } from '@/scripts/utils'
import List from '@/views/skinlib/List.vue'
@@ -135,7 +136,7 @@ test('check specified uploader', async () => {
},
})
const wrapper = mount(List)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const breadcrumb = wrapper.find('.breadcrumb')
const button = wrapper
.find('.advanced-filter')
@@ -274,7 +275,7 @@ test('on like toggled', async () => {
onLikeToggled(tid: number, like: boolean): void,
items: Array<{ liked: boolean, likes: number }>
}>(List)
- await wrapper.vm.$nextTick()
+ await flushPromises()
wrapper.vm.onLikeToggled(0, true)
expect(wrapper.vm.items[0].liked).toBeTrue()
expect(wrapper.vm.items[0].likes).toBe(1)
diff --git a/resources/assets/tests/views/skinlib/Show.test.ts b/resources/assets/tests/views/skinlib/Show.test.ts
index b676718d..5b060a85 100644
--- a/resources/assets/tests/views/skinlib/Show.test.ts
+++ b/resources/assets/tests/views/skinlib/Show.test.ts
@@ -58,7 +58,7 @@ test('likes count indicator', async () => {
},
stubs: { previewer },
})
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('.likes').attributes('style')).toContain('color: rgb(224, 53, 59)')
expect(wrapper.find('.likes').text()).toContain('2')
})
@@ -78,7 +78,7 @@ test('render basic information', async () => {
$route: ['/skinlib/show/1', '1'],
},
})
- await wrapper.vm.$nextTick()
+ await flushPromises()
const text = wrapper.find('.box-primary').text()
expect(text).toContain('my-texture')
expect(text).toContain('alex')
@@ -97,7 +97,7 @@ test('render action text of editing texture name', async () => {
$route: ['/skinlib/show/1', '1'],
},
})
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.contains('small')).toBeTrue()
Object.assign(window.blessing.extra, { currentUid: 2, admin: false })
@@ -106,7 +106,7 @@ test('render action text of editing texture name', async () => {
$route: ['/skinlib/show/1', '1'],
},
})
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.contains('small')).toBeFalse()
})
@@ -129,7 +129,7 @@ test('operation panel should not be rendered if user is anonymous', async () =>
$route: ['/skinlib/show/1', '1'],
},
})
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('.box-warning').exists()).toBeFalse()
})
@@ -141,7 +141,7 @@ test('operation panel should not be rendered if not privileged', async () => {
$route: ['/skinlib/show/1', '1'],
},
})
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('.box-warning').exists()).toBeFalse()
})
@@ -153,7 +153,7 @@ test('operation panel should be rendered if privileged', async () => {
$route: ['/skinlib/show/1', '1'],
},
})
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('.box-warning').exists()).toBeTrue()
})
@@ -165,7 +165,7 @@ test('download texture', async () => {
$route: ['/skinlib/show/1', '1'],
},
})
- await wrapper.vm.$nextTick()
+ await flushPromises()
wrapper.find('[data-test="download"]').trigger('click')
})
@@ -177,7 +177,7 @@ test('link to downloading texture', async () => {
$route: ['/skinlib/show/1', '1'],
},
})
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('span[title="123"]').exists()).toBeTrue()
})
@@ -190,7 +190,7 @@ test('set as avatar', async () => {
},
stubs: { previewer },
})
- await wrapper.vm.$nextTick()
+ await flushPromises()
wrapper.find('[data-test="setAsAvatar"]').trigger('click')
expect(Vue.prototype.$confirm).toBeCalled()
})
@@ -203,7 +203,7 @@ test('hide "set avatar" button when texture is cape', async () => {
},
stubs: { previewer },
})
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('[data-test="setAsAvatar"]').exists()).toBeFalse()
})
@@ -471,6 +471,6 @@ test('truncate too long texture name', async () => {
$route: ['/skinlib/show/1', '1'],
},
})
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('.box-primary').text()).toContain('very-very-long-...')
})
diff --git a/resources/assets/tests/views/user/Bind.test.ts b/resources/assets/tests/views/user/Bind.test.ts
index 5047af82..dee2a8f9 100644
--- a/resources/assets/tests/views/user/Bind.test.ts
+++ b/resources/assets/tests/views/user/Bind.test.ts
@@ -1,12 +1,13 @@
import Vue from 'vue'
import { mount } from '@vue/test-utils'
+import { flushPromises } from '../../utils'
import Bind from '@/views/user/Bind.vue'
test('list existed players', async () => {
Vue.prototype.$http.get
.mockResolvedValue({ data: [{ name: 'a' }, { name: 'b' }] })
const wrapper = mount(Bind)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const options = wrapper.findAll('option')
expect(options).toHaveLength(2)
})
@@ -14,7 +15,7 @@ test('list existed players', async () => {
test('show input box', async () => {
Vue.prototype.$http.get.mockResolvedValue({ data: [] })
const wrapper = mount(Bind)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const input = wrapper.find('input')
expect(input.exists()).toBeTrue()
})
@@ -30,10 +31,10 @@ test('submit', async () => {
wrapper.find('input').setValue('abc')
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('.callout').text()).toBe('fail')
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$alert).toBeCalledWith('ok')
})
diff --git a/resources/assets/tests/views/user/Closet.test.ts b/resources/assets/tests/views/user/Closet.test.ts
index 6c3fdd84..b6ba9cd2 100644
--- a/resources/assets/tests/views/user/Closet.test.ts
+++ b/resources/assets/tests/views/user/Closet.test.ts
@@ -1,5 +1,6 @@
import Vue from 'vue'
import { mount } from '@vue/test-utils'
+import { flushPromises } from '../../utils'
import Closet from '@/views/user/Closet.vue'
import ClosetItem from '@/components/ClosetItem.vue'
import Previewer from '@/components/Previewer.vue'
@@ -123,7 +124,7 @@ test('render items', async () => {
},
})
const wrapper = mount(Closet)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.findAll(ClosetItem)).toHaveLength(2)
})
@@ -160,7 +161,7 @@ test('select texture', async () => {
const wrapper = mount(Closet)
wrapper.setData({ skinItems: [{ tid: 1 }] })
wrapper.find(ClosetItem).vm.$emit('select')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.get).toBeCalledWith('/skinlib/info/1')
expect(wrapper.vm.skinUrl).toBe('/textures/a')
@@ -168,7 +169,7 @@ test('select texture', async () => {
skinItems: [], capeItems: [{ tid: 2 }], category: 'cape',
})
wrapper.find(ClosetItem).vm.$emit('select')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.get).toBeCalledWith('/skinlib/info/2')
expect(wrapper.vm.capeUrl).toBe('/textures/b')
})
@@ -193,7 +194,7 @@ test('apply texture', async () => {
expect(wrapper.find('.modal-body').text()).toContain('user.closet.use-as.empty')
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('input[type="radio"]').attributes('value')).toBe('1')
expect(wrapper.find('.model-label > img').attributes('src')).toBe('/avatar/35/10')
expect(wrapper.find('.modal-body').text()).toContain('name')
@@ -233,8 +234,8 @@ test('select specified texture initially', async () => {
})
.mockResolvedValueOnce({ data: { type: 'cape', hash: '' } })
.mockResolvedValueOnce([])
- const wrapper = mount(Closet)
+ mount(Closet)
jest.runAllTimers()
- await wrapper.vm.$nextTick()
+ await flushPromises()
jest.unmock('@/scripts/utils')
})
diff --git a/resources/assets/tests/views/user/Dashboard.test.ts b/resources/assets/tests/views/user/Dashboard.test.ts
index 27e53d30..2ad2a89a 100644
--- a/resources/assets/tests/views/user/Dashboard.test.ts
+++ b/resources/assets/tests/views/user/Dashboard.test.ts
@@ -2,6 +2,7 @@
import Vue from 'vue'
import { mount } from '@vue/test-utils'
import { Button } from 'element-ui'
+import { flushPromises } from '../../utils'
import Dashboard from '@/views/user/Dashboard.vue'
jest.mock('@tweenjs/tween.js', () => ({
@@ -52,7 +53,7 @@ test('fetch score info', () => {
test('players usage', async () => {
Vue.prototype.$http.get.mockResolvedValue(scoreInfo())
const wrapper = mount(Dashboard)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.text()).toContain('3 / 15')
})
@@ -70,18 +71,18 @@ test('storage usage', async () => {
},
}))
let wrapper = mount(Dashboard)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.text()).toContain('5 / 20 KB')
wrapper = mount(Dashboard)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.text()).toContain('2 / 4 MB')
})
test('display score', async () => {
Vue.prototype.$http.get.mockResolvedValue(scoreInfo())
const wrapper = mount(Dashboard)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('#score').text()).toContain('835')
})
@@ -96,19 +97,19 @@ test('button `sign` state', async () => {
.mockResolvedValueOnce(scoreInfo({ user: { lastSignAt: Date.now() } }))
let wrapper = mount(Dashboard)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find(Button).attributes('disabled')).toBeNil()
wrapper = mount(Dashboard)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find(Button).attributes('disabled')).toBe('disabled')
wrapper = mount(Dashboard)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find(Button).attributes('disabled')).toBeNil()
wrapper = mount(Dashboard)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find(Button).attributes('disabled')).toBe('disabled')
})
@@ -125,12 +126,12 @@ test('remaining time', async () => {
}))
let wrapper = mount(Dashboard)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find(Button).text()).toMatch(/(29)|(30)/)
expect(wrapper.find(Button).text()).toContain('min')
wrapper = mount(Dashboard)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find(Button).text()).toContain('23')
expect(wrapper.find(Button).text()).toContain('hour')
@@ -154,15 +155,15 @@ test('sign', async () => {
})
const wrapper = mount(Dashboard)
const button = wrapper.find(Button)
- await wrapper.vm.$nextTick()
+ await flushPromises()
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith('/user/sign')
expect(Vue.prototype.$message.warning).toBeCalledWith('1')
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(button.attributes('disabled')).toBe('disabled')
expect(wrapper.text()).toContain('3 / 4 KB')
})
diff --git a/resources/assets/tests/views/user/OAuth.test.ts b/resources/assets/tests/views/user/OAuth.test.ts
index 22be1d67..6d7da7fa 100644
--- a/resources/assets/tests/views/user/OAuth.test.ts
+++ b/resources/assets/tests/views/user/OAuth.test.ts
@@ -15,7 +15,7 @@ test('basic render', async () => {
{ id: 1 },
])
const wrapper = mount(OAuth)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.findAll('[data-test=remove]')).toHaveLength(1)
})
@@ -26,7 +26,7 @@ test('create app', async () => {
.mockResolvedValueOnce({ message: 'fail' })
.mockResolvedValueOnce({ id: 1, name: 'name' })
const wrapper = mount(OAuth)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.find('[data-test=create]')
const inputs = wrapper.findAll('.value')
@@ -36,7 +36,7 @@ test('create app', async () => {
.setValue('https://example.com/')
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/oauth/clients',
{ name: 'name', redirect: 'https://example.com/' }
@@ -44,7 +44,7 @@ test('create app', async () => {
expect(Vue.prototype.$message.warning).toBeCalledWith('fail')
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.text()).toContain('name')
})
@@ -59,11 +59,11 @@ test('modify name', async () => {
.mockRejectedValueOnce('')
.mockResolvedValue({ value: 'new-name' } as MessageBoxData)
const wrapper = mount(OAuth)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.find('[data-test=name]')
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(walkFetch).not.toBeCalled()
button.trigger('click')
@@ -93,11 +93,11 @@ test('modify redirect', async () => {
.mockRejectedValueOnce('')
.mockResolvedValue({ value: 'https://example.net/' } as MessageBoxData)
const wrapper = mount(OAuth)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.find('[data-test=callback]')
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(walkFetch).not.toBeCalled()
button.trigger('click')
@@ -125,7 +125,7 @@ test('remove app', async () => {
.mockResolvedValue('confirm')
const wrapper = mount(OAuth)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.find('[data-test=remove]')
button.trigger('click')
diff --git a/resources/assets/tests/views/user/Players.test.ts b/resources/assets/tests/views/user/Players.test.ts
index d17440be..e45fad63 100644
--- a/resources/assets/tests/views/user/Players.test.ts
+++ b/resources/assets/tests/views/user/Players.test.ts
@@ -58,7 +58,7 @@ test('click to preview player', async () => {
.mockResolvedValueOnce({ data: { hash: 'c' } })
.mockResolvedValueOnce({ data: { hash: 'd' } })
const wrapper = mount(Players)
- await wrapper.vm.$nextTick()
+ await flushPromises()
wrapper.find('tbody > tr:nth-child(1)').trigger('click')
await flushPromises()
@@ -100,7 +100,7 @@ test('change player name', async () => {
return Promise.resolve({ value: 'new-name' } as MessageBoxData)
})
const wrapper = mount(Players)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.findAll(Button).at(0)
button.trigger('click')
@@ -131,7 +131,7 @@ test('delete player', async () => {
.mockRejectedValueOnce({})
.mockResolvedValue('confirm')
const wrapper = mount(Players)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.findAll(Button).at(2)
button.trigger('click')
@@ -183,7 +183,7 @@ test('clear texture', async () => {
.mockResolvedValueOnce({ code: 1 })
.mockResolvedValue({ code: 0, message: 'ok' })
const wrapper = mount(Players)
- await wrapper.vm.$nextTick()
+ await flushPromises()
const button = wrapper.find('[data-test=clearTexture]')
wrapper.find('.player').trigger('click')
diff --git a/resources/assets/tests/views/user/Profile.test.ts b/resources/assets/tests/views/user/Profile.test.ts
index d9c40b39..a35bd47c 100644
--- a/resources/assets/tests/views/user/Profile.test.ts
+++ b/resources/assets/tests/views/user/Profile.test.ts
@@ -32,7 +32,7 @@ test('reset avatar', async () => {
expect(Vue.prototype.$http.post).not.toBeCalled()
button.trigger('click')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/user/profile/avatar',
{ tid: 0 }
@@ -58,7 +58,7 @@ test('change password', async () => {
wrapper.setData({ confirmPassword: '1' })
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/user/profile?action=password',
{ current_password: '1', new_password: '1' }
@@ -66,7 +66,7 @@ test('change password', async () => {
expect(Vue.prototype.$alert).toBeCalledWith('w', { type: 'warning' })
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$alert).toBeCalledWith('o')
})
@@ -87,12 +87,12 @@ test('change nickname', async () => {
expect(Vue.prototype.$confirm).toBeCalledWith('user.changeNickName')
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/user/profile?action=nickname',
{ new_nickname: 'nickname' }
)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$alert).toBeCalledWith('w', { type: 'warning' })
form.trigger('submit')
@@ -117,12 +117,12 @@ test('change email', async () => {
expect(Vue.prototype.$http.post).not.toBeCalled()
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$http.post).toBeCalledWith(
'/user/profile?action=email',
{ new_email: 'a@b.c', password: 'abc' }
)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$alert).toBeCalledWith('w', { type: 'warning' })
form.trigger('submit')
@@ -144,10 +144,10 @@ test('delete account', async () => {
'/user/profile?action=delete',
{ password: 'abc' }
)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$alert).toBeCalledWith('w', { type: 'warning' })
form.trigger('submit')
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(Vue.prototype.$alert).toBeCalledWith('o', { type: 'success' })
})
diff --git a/resources/assets/tests/views/user/Report.test.ts b/resources/assets/tests/views/user/Report.test.ts
index 40c20658..a12dedf7 100644
--- a/resources/assets/tests/views/user/Report.test.ts
+++ b/resources/assets/tests/views/user/Report.test.ts
@@ -1,5 +1,6 @@
import Vue from 'vue'
import { mount } from '@vue/test-utils'
+import { flushPromises } from '../../utils'
import Report from '@/views/user/Report.vue'
test('basic render', async () => {
@@ -9,7 +10,7 @@ test('basic render', async () => {
},
])
const wrapper = mount(Report)
- await wrapper.vm.$nextTick()
+ await flushPromises()
expect(wrapper.find('a').attributes('href')).toBe('/skinlib/show/1')
expect(wrapper.text()).toContain('report.status.1')