blessing-skin-server/resources/assets/tests/components/ApplyToPlayerDialog.test.ts

63 lines
2.0 KiB
TypeScript
Raw Normal View History

import 'bootstrap'
2019-04-01 21:45:59 +08:00
import Vue from 'vue'
import { mount } from '@vue/test-utils'
import { flushPromises } from '../utils'
2020-01-31 15:58:48 +08:00
import { trans } from '@/scripts/i18n'
import { toast } from '@/scripts/notify'
2019-04-01 21:45:59 +08:00
import ApplyToPlayerDialog from '@/components/ApplyToPlayerDialog.vue'
jest.mock('@/scripts/notify')
2019-04-01 21:45:59 +08:00
test('submit applying texture', async () => {
Vue.prototype.$http.get.mockResolvedValue({ data: [{ pid: 1, name: 'a' }] })
2019-04-23 11:47:45 +08:00
Vue.prototype.$http.post.mockResolvedValueOnce({ code: 1 })
.mockResolvedValue({ code: 0, message: 'ok' })
2020-01-13 17:31:10 +08:00
const wrapper = mount<Vue & { fetchList(): Promise<void> }>(ApplyToPlayerDialog)
await wrapper.vm.fetchList()
const button = wrapper.find('.btn-outline-info')
2019-04-01 21:45:59 +08:00
button.trigger('click')
2020-01-31 15:58:48 +08:00
expect(toast.info).toBeCalledWith(trans('user.emptySelectedTexture'))
2019-04-01 21:45:59 +08:00
wrapper.setProps({ skin: 1 })
button.trigger('click')
expect(Vue.prototype.$http.post).toBeCalledWith(
2019-04-24 13:10:03 +08:00
'/user/player/set/1',
2019-04-01 21:45:59 +08:00
{
2019-04-24 13:10:03 +08:00
skin: 1,
cape: undefined,
2019-11-25 23:30:51 +08:00
},
2019-04-01 21:45:59 +08:00
)
wrapper.setProps({ skin: 0, cape: 1 })
button.trigger('click')
expect(Vue.prototype.$http.post).toBeCalledWith(
2019-04-24 13:10:03 +08:00
'/user/player/set/1',
2019-04-01 21:45:59 +08:00
{
2019-04-24 13:10:03 +08:00
skin: undefined,
cape: 1,
2019-11-25 23:30:51 +08:00
},
2019-04-01 21:45:59 +08:00
)
await flushPromises()
expect(toast.success).toBeCalledWith('ok')
2019-04-01 21:45:59 +08:00
})
test('compute avatar URL', () => {
2019-04-23 19:14:41 +08:00
Vue.prototype.$http.get.mockResolvedValue({ data: {} })
2019-04-01 21:45:59 +08:00
// eslint-disable-next-line camelcase
const wrapper = mount<Vue & { avatarUrl(player: { tid_skin: number }): string }>(ApplyToPlayerDialog)
const { avatarUrl } = wrapper.vm
expect(avatarUrl({ tid_skin: 1 })).toBe('/avatar/1?3d&size=45')
})
test('search players', async () => {
Vue.prototype.$http.get.mockResolvedValue({ data: [{ pid: 1, name: 'abc' }] })
2020-01-13 17:31:10 +08:00
const wrapper = mount<Vue & { fetchList(): Promise<void> }>(ApplyToPlayerDialog)
await wrapper.vm.fetchList()
wrapper.find('input').setValue('e')
expect(wrapper.find('.btn-outline-info').exists()).toBeFalse()
wrapper.find('input').setValue('b')
expect(wrapper.find('.btn-outline-info').exists()).toBeTrue()
2019-04-01 21:45:59 +08:00
})