100 lines
2.7 KiB
JavaScript
100 lines
2.7 KiB
JavaScript
import { mount } from '@vue/test-utils'
|
|
|
|
import uploadinput from '../upload_input'
|
|
import { MockUploader } from '../../lib/upload'
|
|
|
|
import { makeTestWrapper } from '../../test_utils/component_test_helpers'
|
|
|
|
const UploadWrapper = makeTestWrapper({
|
|
components: { uploadinput },
|
|
templatePath: 'upload_input_template.html',
|
|
data: function() {
|
|
const { filename, objectName } = this.initialData
|
|
return { filename, objectName }
|
|
},
|
|
})
|
|
|
|
const UploadErrorWrapper = makeTestWrapper({
|
|
components: { uploadinput },
|
|
templatePath: 'upload_input_error_template.html',
|
|
data: function() {
|
|
return { filename: null, objectName: null }
|
|
},
|
|
})
|
|
|
|
describe('UploadInput Test', () => {
|
|
it('should show input and button when no attachment present', () => {
|
|
const wrapper = mount(UploadWrapper, {
|
|
propsData: {
|
|
initialData: {},
|
|
},
|
|
})
|
|
|
|
const fileInput = wrapper.find('input[type=file]').element
|
|
expect(fileInput).not.toBe(undefined)
|
|
})
|
|
|
|
it('should show file name and hide input', () => {
|
|
const wrapper = mount(UploadWrapper, {
|
|
propsData: {
|
|
initialData: {
|
|
filename: 'somepdf.pdf',
|
|
objectName: 'abcd',
|
|
},
|
|
},
|
|
})
|
|
|
|
const fileInput = wrapper.find('input[type=file]').element
|
|
const fileNameLink = wrapper.find('.uploaded-file__name')
|
|
|
|
expect(fileInput).toBe(undefined)
|
|
expect(fileNameLink.html()).toContain('somepdf.pdf')
|
|
})
|
|
|
|
it('should correctly display error treatment', () => {
|
|
const wrapper = mount(UploadErrorWrapper, {
|
|
propsData: {
|
|
initialData: { initialvalue: 'somepdf.pdf', objectName: 'abcd' },
|
|
},
|
|
})
|
|
|
|
const messageArea = wrapper.find('.usa-input__message')
|
|
expect(messageArea.html()).toContain('Test Error Message')
|
|
})
|
|
|
|
it('should disable the file input when a file is uploaded', done => {
|
|
const wrapper = mount(UploadErrorWrapper, {
|
|
propsData: {
|
|
initialData: {},
|
|
},
|
|
})
|
|
|
|
const component = wrapper.find(uploadinput)
|
|
const event = { target: { value: '', files: [{ name: '' }] } }
|
|
|
|
component.setMethods({
|
|
getUploader: async () => new MockUploader('token', 'objectName'),
|
|
})
|
|
|
|
component.vm.addAttachment(event).then(() => {
|
|
expect(component.vm.$refs.attachmentInput.disabled).toBe(true)
|
|
done()
|
|
})
|
|
})
|
|
|
|
it('should enable the file input when the attachment is removed', () => {
|
|
const wrapper = mount(UploadErrorWrapper, {
|
|
propsData: {
|
|
initialData: { filename: 'filename.pdf', objectName: 'abcd' },
|
|
},
|
|
})
|
|
|
|
const event = { preventDefault: () => {}, target: { value: 'val' } }
|
|
const component = wrapper.find(uploadinput)
|
|
|
|
component.vm.removeAttachment(event)
|
|
|
|
expect(component.vm.$refs.attachmentInput.disabled).toBe(false)
|
|
})
|
|
})
|