90 lines
2.2 KiB
JavaScript
90 lines
2.2 KiB
JavaScript
import { mount } from '@vue/test-utils';
|
|
import Vue from 'vue';
|
|
import Vuex from 'vuex';
|
|
import Item from '~/ide/components/merge_requests/item.vue';
|
|
import { createRouter } from '~/ide/ide_router';
|
|
import { createStore } from '~/ide/stores';
|
|
|
|
const TEST_ITEM = {
|
|
iid: 1,
|
|
projectPathWithNamespace: 'gitlab-org/gitlab-ce',
|
|
title: 'Merge request title',
|
|
};
|
|
|
|
describe('IDE merge request item', () => {
|
|
Vue.use(Vuex);
|
|
|
|
let wrapper;
|
|
let store;
|
|
let router;
|
|
|
|
const createComponent = (props = {}) => {
|
|
wrapper = mount(Item, {
|
|
propsData: {
|
|
item: {
|
|
...TEST_ITEM,
|
|
},
|
|
currentId: `${TEST_ITEM.iid}`,
|
|
currentProjectId: TEST_ITEM.projectPathWithNamespace,
|
|
...props,
|
|
},
|
|
router,
|
|
store,
|
|
});
|
|
};
|
|
const findIcon = () => wrapper.find('[data-testid="mobile-issue-close-icon"]');
|
|
|
|
beforeEach(() => {
|
|
store = createStore();
|
|
router = createRouter(store);
|
|
});
|
|
|
|
afterEach(() => {
|
|
wrapper.destroy();
|
|
wrapper = null;
|
|
});
|
|
|
|
describe('default', () => {
|
|
beforeEach(() => {
|
|
createComponent();
|
|
});
|
|
|
|
it('renders merge requests data', () => {
|
|
expect(wrapper.text()).toContain('Merge request title');
|
|
expect(wrapper.text()).toContain('gitlab-org/gitlab-ce!1');
|
|
});
|
|
|
|
it('renders link with href', () => {
|
|
const expectedHref = router.resolve(
|
|
`/project/${TEST_ITEM.projectPathWithNamespace}/merge_requests/${TEST_ITEM.iid}`,
|
|
).href;
|
|
|
|
expect(wrapper.element.tagName.toLowerCase()).toBe('a');
|
|
expect(wrapper.attributes('href')).toBe(expectedHref);
|
|
});
|
|
|
|
it('renders icon if ID matches currentId', () => {
|
|
expect(findIcon().exists()).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe('with different currentId', () => {
|
|
beforeEach(() => {
|
|
createComponent({ currentId: `${TEST_ITEM.iid + 1}` });
|
|
});
|
|
|
|
it('does not render icon', () => {
|
|
expect(findIcon().exists()).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('with different project ID', () => {
|
|
beforeEach(() => {
|
|
createComponent({ currentProjectId: 'test/test' });
|
|
});
|
|
|
|
it('does not render icon', () => {
|
|
expect(findIcon().exists()).toBe(false);
|
|
});
|
|
});
|
|
});
|