94 lines
3 KiB
JavaScript
94 lines
3 KiB
JavaScript
import { mount, createLocalVue } from '@vue/test-utils';
|
|
import MockAdapter from 'axios-mock-adapter';
|
|
import axios from '~/lib/utils/axios_utils';
|
|
import RelatedIssuableItem from '~/vue_shared/components/issue/related_issuable_item.vue';
|
|
import RelatedMergeRequests from '~/related_merge_requests/components/related_merge_requests.vue';
|
|
import createStore from '~/related_merge_requests/store/index';
|
|
|
|
const FIXTURE_PATH = 'issues/related_merge_requests.json';
|
|
const API_ENDPOINT = '/api/v4/projects/2/issues/33/related_merge_requests';
|
|
const localVue = createLocalVue();
|
|
|
|
describe('RelatedMergeRequests', () => {
|
|
let wrapper;
|
|
let mock;
|
|
let mockData;
|
|
|
|
beforeEach(done => {
|
|
loadFixtures(FIXTURE_PATH);
|
|
mockData = getJSONFixture(FIXTURE_PATH);
|
|
|
|
// put the fixture in DOM as the component expects
|
|
document.body.innerHTML = `<div id="js-issuable-app"></div>`;
|
|
document.getElementById('js-issuable-app').dataset.initial = JSON.stringify(mockData);
|
|
|
|
mock = new MockAdapter(axios);
|
|
mock.onGet(`${API_ENDPOINT}?per_page=100`).reply(200, mockData, { 'x-total': 2 });
|
|
|
|
wrapper = mount(localVue.extend(RelatedMergeRequests), {
|
|
localVue,
|
|
store: createStore(),
|
|
propsData: {
|
|
endpoint: API_ENDPOINT,
|
|
projectNamespace: 'gitlab-org',
|
|
projectPath: 'gitlab-ce',
|
|
},
|
|
});
|
|
|
|
setImmediate(done);
|
|
});
|
|
|
|
afterEach(() => {
|
|
wrapper.destroy();
|
|
mock.restore();
|
|
});
|
|
|
|
describe('methods', () => {
|
|
describe('getAssignees', () => {
|
|
const assignees = [{ name: 'foo' }, { name: 'bar' }];
|
|
|
|
describe('when there is assignees array', () => {
|
|
it('should return assignees array', () => {
|
|
const mr = { assignees };
|
|
|
|
expect(wrapper.vm.getAssignees(mr)).toEqual(assignees);
|
|
});
|
|
});
|
|
|
|
it('should return an array with single assingee', () => {
|
|
const mr = { assignee: assignees[0] };
|
|
|
|
expect(wrapper.vm.getAssignees(mr)).toEqual([assignees[0]]);
|
|
});
|
|
|
|
it('should return empty array when assignee is not set', () => {
|
|
expect(wrapper.vm.getAssignees({})).toEqual([]);
|
|
expect(wrapper.vm.getAssignees({ assignee: null })).toEqual([]);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('template', () => {
|
|
it('should render related merge request items', () => {
|
|
expect(wrapper.find('.js-items-count').text()).toEqual('2');
|
|
expect(wrapper.findAll(RelatedIssuableItem).length).toEqual(2);
|
|
|
|
const props = wrapper
|
|
.findAll(RelatedIssuableItem)
|
|
.at(1)
|
|
.props();
|
|
const data = mockData[1];
|
|
|
|
expect(props.idKey).toEqual(data.id);
|
|
expect(props.pathIdSeparator).toEqual('!');
|
|
expect(props.pipelineStatus).toBe(data.head_pipeline.detailed_status);
|
|
expect(props.assignees).toEqual([data.assignee]);
|
|
expect(props.isMergeRequest).toBe(true);
|
|
expect(props.confidential).toEqual(false);
|
|
expect(props.title).toEqual(data.title);
|
|
expect(props.state).toEqual(data.state);
|
|
expect(props.createdAt).toEqual(data.created_at);
|
|
});
|
|
});
|
|
});
|