138 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| import {Codebox} from 'mand-mobile'
 | |
| import sinon from 'sinon'
 | |
| import {mount} from '@vue/test-utils'
 | |
| import triggerEvent from '../../popup/test/touch-trigger'
 | |
| 
 | |
| describe('Codebox - Operation', () => {
 | |
|   let wrapper
 | |
|   afterEach(() => {
 | |
|     wrapper && wrapper.destroy()
 | |
|   })
 | |
| 
 | |
|   it('create a simple codebox', () => {
 | |
|     wrapper = mount(Codebox)
 | |
| 
 | |
|     expect(wrapper.classes('md-codebox-wrapper')).toBe(true)
 | |
|   })
 | |
| 
 | |
|   it('create a codebox with input', () => {
 | |
|     wrapper = mount(Codebox, {
 | |
|       propsData: {
 | |
|         maxlength: -1,
 | |
|       },
 | |
|     })
 | |
|     expect(wrapper.contains('.md-codebox-holder')).toBe(true)
 | |
|   })
 | |
| 
 | |
|   it('create a codebox with custom keyboard', () => {
 | |
|     wrapper = mount(Codebox, {
 | |
|       propsData: {
 | |
|         system: false,
 | |
|         isView: true,
 | |
|       },
 | |
|     })
 | |
| 
 | |
|     expect(wrapper.contains('.md-number-keyboard')).toBe(true)
 | |
|   })
 | |
| 
 | |
|   it('emit input/submit events', done => {
 | |
|     wrapper = mount(Codebox, {
 | |
|       propsData: {
 | |
|         isView: true,
 | |
|       },
 | |
|     })
 | |
| 
 | |
|     const eventSpy = sinon.spy(wrapper.vm, '$emit')
 | |
|     wrapper.setData({
 | |
|       code: '123',
 | |
|     })
 | |
|     wrapper
 | |
|       .findAll('.keyboard-number-item')
 | |
|       .at(0)
 | |
|       .trigger('click')
 | |
|     setTimeout(() => {
 | |
|       expect(eventSpy.calledWith('input')).toBe(true)
 | |
|       expect(eventSpy.calledWith('submit', '1231')).toBe(true)
 | |
|       done()
 | |
|     }, 0)
 | |
|   })
 | |
| 
 | |
|   it('click codebox to focus with custom keyboard', done => {
 | |
|     wrapper = mount(Codebox, {
 | |
|       propsData: {
 | |
|         maxlength: -1,
 | |
|       },
 | |
|     })
 | |
|     const eventSpy = sinon.spy(wrapper.vm, '$emit')
 | |
|     wrapper.find('.md-codebox').trigger('click')
 | |
|     expect(wrapper.vm.focused).toBe(true)
 | |
|     wrapper
 | |
|       .findAll('.keyboard-number-item')
 | |
|       .at(0)
 | |
|       .trigger('click')
 | |
|     wrapper.find('.confirm').trigger('click')
 | |
|     setTimeout(() => {
 | |
|       expect(wrapper.vm.focused).toBe(false)
 | |
|       expect(eventSpy.calledWith('submit', '1')).toBe(true)
 | |
|       wrapper.setProps({disabled: true})
 | |
|       wrapper.find('.md-codebox').trigger('click')
 | |
|       expect(wrapper.vm.focused).toBe(false)
 | |
|       done()
 | |
|     }, 0)
 | |
|   })
 | |
| 
 | |
|   it('click codebox to focus with system keyboard', () => {
 | |
|     let value = ''
 | |
|     wrapper = mount(Codebox, {
 | |
|       propsData: {
 | |
|         value,
 | |
|         system: true,
 | |
|       },
 | |
|       listeners: {
 | |
|         input(val) {
 | |
|           value = val
 | |
|         },
 | |
|       },
 | |
|     })
 | |
| 
 | |
|     wrapper.find('.md-codebox').trigger('click')
 | |
|     expect(wrapper.vm.focused).toBe(true)
 | |
| 
 | |
|     const input = wrapper.find('.md-codebox-input')
 | |
|     triggerEvent(input.element, 'input', 0, 0, '12')
 | |
|     expect(value).toBe('12')
 | |
|     triggerEvent(input.element, 'input', 0, 0, '34')
 | |
|     expect(value).toBe('1234')
 | |
| 
 | |
|     const form = wrapper.find('form')
 | |
|     triggerEvent(form.element, 'submit')
 | |
|   })
 | |
| 
 | |
|   it('delete code char after clicking delete button', () => {
 | |
|     wrapper = mount(Codebox)
 | |
|     wrapper.setData({code: '1234'})
 | |
|     wrapper.find('.delete').trigger('click')
 | |
|     expect(wrapper.vm.code).toEqual('123')
 | |
|   })
 | |
| 
 | |
|   it('enter code char after clicking number button', done => {
 | |
|     let value = ''
 | |
|     wrapper = mount(Codebox, {
 | |
|       propsData: {
 | |
|         maxlength: 4,
 | |
|         isView: true,
 | |
|         value,
 | |
|       },
 | |
|     })
 | |
|     wrapper.setProps({value: '12'})
 | |
|     wrapper
 | |
|       .findAll('.keyboard-number-item')
 | |
|       .at(0)
 | |
|       .trigger('click')
 | |
|     setTimeout(() => {
 | |
|       expect(wrapper.vm.code).toEqual('121')
 | |
|       done()
 | |
|     }, 0)
 | |
|   })
 | |
| })
 |