146 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
import Vue from 'vue'
 | 
						|
import { mount } from '@vue/test-utils'
 | 
						|
import createStore from '../createStore'
 | 
						|
import SelectionBox from '../SelectionBox'
 | 
						|
 | 
						|
const getDefaultStore = (selectedRowKeys) => {
 | 
						|
  return createStore({
 | 
						|
    selectedRowKeys: selectedRowKeys || [],
 | 
						|
    selectionDirty: false,
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
describe('SelectionBox', () => {
 | 
						|
  it('unchecked by selectedRowKeys ', () => {
 | 
						|
    const wrapper = mount(SelectionBox, {
 | 
						|
      propsData: {
 | 
						|
        store: getDefaultStore(),
 | 
						|
        rowIndex: '1',
 | 
						|
        disabled: false,
 | 
						|
        onChange: () => {},
 | 
						|
        defaultSelection: [],
 | 
						|
      },
 | 
						|
      listeners: {
 | 
						|
        change: () => {},
 | 
						|
      },
 | 
						|
      sync: false,
 | 
						|
    })
 | 
						|
 | 
						|
    expect(wrapper.vm.$data).toEqual({ checked: false })
 | 
						|
  })
 | 
						|
 | 
						|
  it('checked by selectedRowKeys ', () => {
 | 
						|
    const wrapper = mount(SelectionBox, {
 | 
						|
      propsData: {
 | 
						|
        store: getDefaultStore(['1']),
 | 
						|
        rowIndex: '1',
 | 
						|
        disabled: false,
 | 
						|
        onChange: () => {},
 | 
						|
        defaultSelection: [],
 | 
						|
      },
 | 
						|
      listeners: {
 | 
						|
        change: () => {},
 | 
						|
      },
 | 
						|
      sync: false,
 | 
						|
    })
 | 
						|
 | 
						|
    expect(wrapper.vm.$data).toEqual({ checked: true })
 | 
						|
  })
 | 
						|
 | 
						|
  it('checked by defaultSelection', () => {
 | 
						|
    const wrapper = mount(SelectionBox, {
 | 
						|
      propsData: {
 | 
						|
        store: getDefaultStore(),
 | 
						|
        rowIndex: '1',
 | 
						|
        disabled: false,
 | 
						|
        onChange: () => {},
 | 
						|
        defaultSelection: ['1'],
 | 
						|
      },
 | 
						|
      listeners: {
 | 
						|
        change: () => {},
 | 
						|
      },
 | 
						|
      sync: false,
 | 
						|
    })
 | 
						|
 | 
						|
    expect(wrapper.vm.$data).toEqual({ checked: true })
 | 
						|
  })
 | 
						|
 | 
						|
  it('checked when store change', () => {
 | 
						|
    const store = getDefaultStore()
 | 
						|
    const wrapper = mount(SelectionBox, {
 | 
						|
      propsData: {
 | 
						|
        store: store,
 | 
						|
        rowIndex: '1',
 | 
						|
        disabled: false,
 | 
						|
        defaultSelection: [],
 | 
						|
      },
 | 
						|
      listeners: {
 | 
						|
        change: () => {},
 | 
						|
      },
 | 
						|
      sync: false,
 | 
						|
    })
 | 
						|
 | 
						|
    store.setState({
 | 
						|
      selectedRowKeys: ['1'],
 | 
						|
      selectionDirty: true,
 | 
						|
    })
 | 
						|
 | 
						|
    expect(wrapper.vm.$data).toEqual({ checked: true })
 | 
						|
  })
 | 
						|
 | 
						|
  it('passes props to Checkbox', (done) => {
 | 
						|
    const checkboxProps = {
 | 
						|
      name: 'testName',
 | 
						|
      id: 'testId',
 | 
						|
    }
 | 
						|
    const wrapper = mount(SelectionBox, {
 | 
						|
      propsData: {
 | 
						|
        store: getDefaultStore(),
 | 
						|
        rowIndex: '1',
 | 
						|
        disabled: false,
 | 
						|
        defaultSelection: ['1'],
 | 
						|
        ...checkboxProps,
 | 
						|
      },
 | 
						|
      listeners: {
 | 
						|
        change: () => {},
 | 
						|
      },
 | 
						|
      sync: false,
 | 
						|
    })
 | 
						|
    Vue.nextTick(() => {
 | 
						|
      wrapper.findAll({ name: 'ACheckbox' }).wrappers.forEach((box) => {
 | 
						|
        expect(box.props().name).toEqual(checkboxProps.name)
 | 
						|
        expect(box.props().id).toEqual(checkboxProps.id)
 | 
						|
      })
 | 
						|
      done()
 | 
						|
    })
 | 
						|
  })
 | 
						|
 | 
						|
  it('passes props to Radios', (done) => {
 | 
						|
    const radioProps = {
 | 
						|
      name: 'testName',
 | 
						|
      id: 'testId',
 | 
						|
    }
 | 
						|
    const wrapper = mount(SelectionBox, {
 | 
						|
      propsData: {
 | 
						|
        store: getDefaultStore(),
 | 
						|
        rowIndex: '1',
 | 
						|
        disabled: false,
 | 
						|
        defaultSelection: ['1'],
 | 
						|
        type: 'radio',
 | 
						|
        ...radioProps,
 | 
						|
      },
 | 
						|
      listeners: {
 | 
						|
        change: () => {},
 | 
						|
      },
 | 
						|
      sync: false,
 | 
						|
    })
 | 
						|
    Vue.nextTick(() => {
 | 
						|
      wrapper.findAll({ name: 'ARadio' }).wrappers.forEach((radio) => {
 | 
						|
        expect(radio.props().name).toEqual(radioProps.name)
 | 
						|
        expect(radio.props().id).toEqual(radioProps.id)
 | 
						|
      })
 | 
						|
      done()
 | 
						|
    })
 | 
						|
  })
 | 
						|
})
 |