UNPKG

@cnamts/vue-dot

Version:

Implementation of our Design System for the French Health Insurance

81 lines (57 loc) 1.98 kB
import Vue from 'vue'; import { mount, Wrapper } from '@vue/test-utils'; import { FileListItem } from '../../types'; import { UpdateFileModel } from '../updateFileModel'; interface TestComponent extends Vue { updateFileModel<T>(index: number, key: string, value: T): void; fileList: FileListItem[]; initFileList(value: FileListItem[]): void; } const testComponent = Vue.component('TestComponent', { mixins: [ UpdateFileModel ], template: '<div/>' }); /** Get list of files */ function getFileList(): FileListItem[] { return [ { id: 'file1', title: 'UploadWorkflow', name: 'avatar.png', file: {} as File } ]; } describe('updateFileModel', () => { it('inits the file list', () => { const wrapper = mount(testComponent) as Wrapper<TestComponent>; wrapper.vm.initFileList(getFileList()); expect(wrapper.vm.fileList).toMatchSnapshot(); }); it('does not overwrite existing state', () => { const wrapper = mount(testComponent) as Wrapper<TestComponent>; const fileListState = getFileList(); fileListState[0].state = 'success'; wrapper.vm.initFileList(fileListState); expect(wrapper.vm.fileList).toMatchSnapshot(); }); it('returns undefined if the file does not exists', () => { const wrapper = mount(testComponent) as Wrapper<TestComponent>; wrapper.vm.fileList = getFileList(); expect(wrapper.vm.updateFileModel(1, 'state', 'initial')).toBeUndefined(); }); it('deletes the key if the value is undefined', () => { const wrapper = mount(testComponent) as Wrapper<TestComponent>; wrapper.vm.fileList = getFileList(); wrapper.vm.updateFileModel(0, 'name', undefined); expect(wrapper.vm.fileList[0]).toMatchSnapshot(); }); it('updates the value of the corresponding key', () => { const wrapper = mount(testComponent) as Wrapper<TestComponent>; wrapper.vm.fileList = getFileList(); wrapper.vm.updateFileModel(0, 'state', 'updated'); expect(wrapper.vm.fileList[0].state).toBe('updated'); }); });