mand-mobile
Version:
A Vue.js 2.0 Mobile UI Toolkit
187 lines (167 loc) • 4.12 kB
JavaScript
import {Selector} from 'mand-mobile'
import sinon from 'sinon'
import {mount} from '@vue/test-utils'
describe('Selector - Operation', () => {
let wrapper
afterEach(() => {
wrapper && wrapper.destroy()
})
test('create a selector as check mode', () => {
wrapper = mount(Selector, {
propsData: {
okText: '确认',
isCheck: true,
},
})
expect(wrapper.vm.isNeedConfirm).toBe(true)
})
test('selector events choose', done => {
wrapper = mount(Selector, {
propsData: {
value: false,
data: [
{
value: '1',
text: '选项一',
},
{
value: '2',
text: '选项二',
},
{
value: '3',
disabled: true,
text: '选项三',
},
{
value: '4',
text: '选项四',
},
],
},
})
const eventStub = sinon.stub(wrapper.vm, '$emit')
wrapper.setProps({value: true})
wrapper.vm.$nextTick(() => {
wrapper.find('.md-radio-item').trigger('click')
expect(wrapper.vm.tmpActiveIndex).toBe(0)
expect(wrapper.vm.activeIndex).toBe(0)
expect(eventStub.calledWith('choose')).toBe(true)
done()
})
})
test('selector events confirm', done => {
wrapper = mount(Selector, {
propsData: {
value: true,
okText: 'ok',
data: [
{
value: '1',
text: '选项一',
},
{
value: '2',
text: '选项二',
},
{
value: '3',
disabled: true,
text: '选项三',
},
{
value: '4',
text: '选项四',
},
],
},
})
const eventStub = sinon.stub(wrapper.vm, '$emit')
wrapper.vm.$nextTick(() => {
const item = wrapper.find('.md-radio-item')
const confirmBtn = wrapper.find('.md-popup-confirm')
item.trigger('click')
expect(wrapper.vm.tmpActiveIndex).toBe(0)
confirmBtn.trigger('click')
expect(wrapper.vm.activeIndex).toBe(0)
expect(eventStub.calledWith('confirm')).toBe(true)
done()
})
})
test('selector events cancel', done => {
wrapper = mount(Selector, {
propsData: {
value: true,
data: [
[
{
value: '1',
text: '选项一',
},
{
value: '2',
text: '选项二',
},
{
value: '3',
text: '选项三',
},
{
value: '4',
text: '选项四',
},
],
],
okText: 'ok',
cancelText: 'cancel',
defaultValue: '3',
},
})
const eventStub = sinon.stub(wrapper.vm, '$emit')
wrapper.vm.$nextTick(() => {
const cancelBtn = wrapper.find('.md-popup-cancel')
cancelBtn.trigger('click')
expect(eventStub.calledWith('cancel')).toBe(true)
done()
})
})
test('selector multi select', done => {
wrapper = mount(Selector, {
propsData: {
value: true,
data: [
{
value: '1',
text: '选项一',
},
{
value: '2',
text: '选项二',
},
{
value: '3',
disabled: true,
text: '选项三',
},
{
value: '4',
text: '选项四',
},
],
multi: true,
okText: 'ok',
cancelText: 'cancel',
},
})
const eventStub = sinon.stub(wrapper.vm, '$emit')
wrapper.vm.$nextTick(() => {
const item = wrapper.find('.md-check-item')
const confirmBtn = wrapper.find('.md-popup-confirm')
item.trigger('click')
confirmBtn.trigger('click')
expect(wrapper.vm.multiDefaultValue).toContain('1')
expect(eventStub.calledWith('confirm')).toBe(true)
done()
})
})
})