debian-mirror-gitlab/spec/frontend/boards/components/board_new_issue_spec.js
2021-03-11 19:13:27 +05:30

116 lines
2.9 KiB
JavaScript

import { shallowMount, createLocalVue } from '@vue/test-utils';
import Vuex from 'vuex';
import BoardNewIssue from '~/boards/components/board_new_issue.vue';
import '~/boards/models/list';
import { mockList, mockGroupProjects } from '../mock_data';
const localVue = createLocalVue();
localVue.use(Vuex);
describe('Issue boards new issue form', () => {
let wrapper;
let vm;
const addListNewIssuesSpy = jest.fn();
const findSubmitButton = () => wrapper.find({ ref: 'submitButton' });
const findCancelButton = () => wrapper.find({ ref: 'cancelButton' });
const findSubmitForm = () => wrapper.find({ ref: 'submitForm' });
const submitIssue = () => {
const dummySubmitEvent = {
preventDefault() {},
};
return findSubmitForm().trigger('submit', dummySubmitEvent);
};
beforeEach(() => {
const store = new Vuex.Store({
state: { selectedProject: mockGroupProjects[0] },
actions: { addListNewIssue: addListNewIssuesSpy },
getters: {},
});
wrapper = shallowMount(BoardNewIssue, {
propsData: {
disabled: false,
list: mockList,
},
store,
localVue,
provide: {
groupId: null,
weightFeatureAvailable: false,
boardWeight: null,
},
});
vm = wrapper.vm;
return vm.$nextTick();
});
afterEach(() => {
wrapper.destroy();
});
it('calls submit if submit button is clicked', async () => {
jest.spyOn(wrapper.vm, 'submit').mockImplementation();
wrapper.setData({ title: 'Testing Title' });
await vm.$nextTick();
await submitIssue();
expect(wrapper.vm.submit).toHaveBeenCalled();
});
it('disables submit button if title is empty', () => {
expect(findSubmitButton().props().disabled).toBe(true);
});
it('enables submit button if title is not empty', async () => {
wrapper.setData({ title: 'Testing Title' });
await vm.$nextTick();
expect(wrapper.find({ ref: 'input' }).element.value).toBe('Testing Title');
expect(findSubmitButton().props().disabled).toBe(false);
});
it('clears title after clicking cancel', async () => {
findCancelButton().trigger('click');
await vm.$nextTick();
expect(vm.title).toBe('');
});
describe('submit success', () => {
it('creates new issue', async () => {
wrapper.setData({ title: 'submit issue' });
await vm.$nextTick();
await submitIssue();
expect(addListNewIssuesSpy).toHaveBeenCalled();
});
it('enables button after submit', async () => {
jest.spyOn(wrapper.vm, 'submit').mockImplementation();
wrapper.setData({ title: 'submit issue' });
await vm.$nextTick();
await submitIssue();
expect(findSubmitButton().props().disabled).toBe(false);
});
it('clears title after submit', async () => {
wrapper.setData({ title: 'submit issue' });
await vm.$nextTick();
await submitIssue();
await vm.$nextTick();
expect(vm.title).toBe('');
});
});
});