Matt Rider cebd1046c7 Write cypress tests, show dropzone conditionally
- If it's the user's profile, show vueDropzone, if not show just the user's avatar
- apollo mutation is being called twice for drag and drop events
2019-05-24 01:26:37 -03:00

72 lines
1.5 KiB
JavaScript

import { shallowMount, createLocalVue } from '@vue/test-utils'
import Upload from '.'
import Vuex from 'vuex'
import Styleguide from '@human-connection/styleguide'
const localVue = createLocalVue()
localVue.use(Vuex)
localVue.use(Styleguide)
describe('Upload', () => {
let wrapper
const mocks = {
$apollo: {
mutate: jest
.fn()
.mockResolvedValueOnce({
data: { UpdateUser: { id: 'upload1', avatar: '/upload/avatar.jpg' } }
})
.mockRejectedValue({
message: 'File upload unsuccessful! Whatcha gonna do?'
})
},
$toast: {
success: jest.fn(),
error: jest.fn()
}
}
const propsData = {
user: {
avatar: '/api/generic.jpg'
}
}
const file = {
filename: 'avatar.jpg',
previewElement: {
classList: {
remove: jest.fn(),
add: jest.fn()
},
querySelectorAll: jest.fn().mockReturnValue([
{
alt: '',
style: {
'background-image': '/api/generic.jpg'
}
}
])
}
}
const dataUrl = 'avatar.jpg'
beforeEach(() => {
jest.useFakeTimers()
wrapper = shallowMount(Upload, { localVue, propsData, mocks })
})
it('sends a the UpdateUser mutation when vddrop is called', () => {
wrapper.vm.vddrop([{ filename: 'avatar.jpg' }])
expect(mocks.$apollo.mutate).toHaveBeenCalledTimes(1)
})
it('thumbnail', () => {
wrapper.vm.thumbnail(file, dataUrl)
expect(file.previewElement.classList.add).toHaveBeenCalledTimes(1)
})
})