Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/vue_shared/components/issue/related_issuable_item_spec.js')
-rw-r--r--spec/frontend/vue_shared/components/issue/related_issuable_item_spec.js206
1 files changed, 0 insertions, 206 deletions
diff --git a/spec/frontend/vue_shared/components/issue/related_issuable_item_spec.js b/spec/frontend/vue_shared/components/issue/related_issuable_item_spec.js
deleted file mode 100644
index 6ab828efebe..00000000000
--- a/spec/frontend/vue_shared/components/issue/related_issuable_item_spec.js
+++ /dev/null
@@ -1,206 +0,0 @@
-import { mount } from '@vue/test-utils';
-import { TEST_HOST } from 'helpers/test_constants';
-import IssueDueDate from '~/boards/components/issue_due_date.vue';
-import { formatDate } from '~/lib/utils/datetime_utility';
-import RelatedIssuableItem from '~/vue_shared/components/issue/related_issuable_item.vue';
-import { defaultAssignees, defaultMilestone } from './related_issuable_mock_data';
-
-describe('RelatedIssuableItem', () => {
- let wrapper;
-
- function mountComponent({ mountMethod = mount, stubs = {}, props = {}, slots = {} } = {}) {
- wrapper = mountMethod(RelatedIssuableItem, {
- propsData: props,
- slots,
- stubs,
- });
- }
-
- const props = {
- idKey: 1,
- displayReference: 'gitlab-org/gitlab-test#1',
- pathIdSeparator: '#',
- path: `${TEST_HOST}/path`,
- title: 'title',
- confidential: true,
- dueDate: '1990-12-31',
- weight: 10,
- createdAt: '2018-12-01T00:00:00.00Z',
- milestone: defaultMilestone,
- assignees: defaultAssignees,
- eventNamespace: 'relatedIssue',
- };
- const slots = {
- dueDate: '<div class="js-due-date-slot"></div>',
- weight: '<div class="js-weight-slot"></div>',
- };
-
- const findRemoveButton = () => wrapper.find({ ref: 'removeButton' });
- const findLockIcon = () => wrapper.find({ ref: 'lockIcon' });
-
- beforeEach(() => {
- mountComponent({ props, slots });
- });
-
- afterEach(() => {
- wrapper.destroy();
- });
-
- it('contains issuable-info-container class when canReorder is false', () => {
- expect(wrapper.props('canReorder')).toBe(false);
- expect(wrapper.find('.issuable-info-container').exists()).toBe(true);
- });
-
- it('does not render token state', () => {
- expect(wrapper.find('.text-secondary svg').exists()).toBe(false);
- });
-
- it('does not render remove button', () => {
- expect(wrapper.find({ ref: 'removeButton' }).exists()).toBe(false);
- });
-
- describe('token title', () => {
- it('links to computedPath', () => {
- expect(wrapper.find('.item-title a').attributes('href')).toEqual(wrapper.props('path'));
- });
-
- it('renders confidential icon', () => {
- expect(wrapper.find('.confidential-icon').exists()).toBe(true);
- });
-
- it('renders title', () => {
- expect(wrapper.find('.item-title a').text()).toEqual(props.title);
- });
- });
-
- describe('token state', () => {
- const tokenState = () => wrapper.find({ ref: 'iconElementXL' });
-
- beforeEach(() => {
- wrapper.setProps({ state: 'opened' });
- });
-
- it('renders if hasState', () => {
- expect(tokenState().exists()).toBe(true);
- });
-
- it('renders state title', () => {
- const stateTitle = tokenState().attributes('title');
- const formattedCreateDate = formatDate(props.createdAt);
-
- expect(stateTitle).toContain('<span class="bold">Created</span>');
- expect(stateTitle).toContain(`<span class="text-tertiary">${formattedCreateDate}</span>`);
- });
-
- it('renders aria label', () => {
- expect(tokenState().attributes('aria-label')).toEqual('opened');
- });
-
- it('renders open icon when open state', () => {
- expect(tokenState().classes('issue-token-state-icon-open')).toBe(true);
- });
-
- it('renders close icon when close state', async () => {
- wrapper.setProps({
- state: 'closed',
- closedAt: '2018-12-01T00:00:00.00Z',
- });
- await wrapper.vm.$nextTick();
-
- expect(tokenState().classes('issue-token-state-icon-closed')).toBe(true);
- });
- });
-
- describe('token metadata', () => {
- const tokenMetadata = () => wrapper.find('.item-meta');
-
- it('renders item path and ID', () => {
- const pathAndID = tokenMetadata().find('.item-path-id').text();
-
- expect(pathAndID).toContain('gitlab-org/gitlab-test');
- expect(pathAndID).toContain('#1');
- });
-
- it('renders milestone icon and name', () => {
- const milestoneIcon = tokenMetadata().find('.item-milestone svg');
- const milestoneTitle = tokenMetadata().find('.item-milestone .milestone-title');
-
- expect(milestoneIcon.attributes('data-testid')).toBe('clock-icon');
- expect(milestoneTitle.text()).toContain('Milestone title');
- });
-
- it('renders due date component with correct due date', () => {
- expect(wrapper.find(IssueDueDate).props('date')).toBe(props.dueDate);
- });
-
- it('does not render red icon for overdue issue that is closed', async () => {
- mountComponent({
- props: {
- ...props,
- closedAt: '2018-12-01T00:00:00.00Z',
- },
- });
- await wrapper.vm.$nextTick();
-
- expect(wrapper.find(IssueDueDate).props('closed')).toBe(true);
- });
- });
-
- describe('token assignees', () => {
- it('renders assignees avatars', () => {
- // Expect 2 times 2 because assignees are rendered twice, due to layout issues
- expect(wrapper.findAll('.item-assignees .user-avatar-link').length).toBeDefined();
-
- expect(wrapper.find('.item-assignees .avatar-counter').text()).toContain('+2');
- });
- });
-
- describe('remove button', () => {
- beforeEach(() => {
- wrapper.setProps({ canRemove: true });
- });
-
- it('renders if canRemove', () => {
- expect(findRemoveButton().exists()).toBe(true);
- });
-
- it('does not render the lock icon', () => {
- expect(findLockIcon().exists()).toBe(false);
- });
-
- it('renders disabled button when removeDisabled', async () => {
- wrapper.setData({ removeDisabled: true });
- await wrapper.vm.$nextTick();
-
- expect(findRemoveButton().attributes('disabled')).toEqual('disabled');
- });
-
- it('triggers onRemoveRequest when clicked', async () => {
- findRemoveButton().trigger('click');
- await wrapper.vm.$nextTick();
- const { relatedIssueRemoveRequest } = wrapper.emitted();
-
- expect(relatedIssueRemoveRequest.length).toBe(1);
- expect(relatedIssueRemoveRequest[0]).toEqual([props.idKey]);
- });
- });
-
- describe('when issue is locked', () => {
- const lockedMessage = 'Issues created from a vulnerability cannot be removed';
-
- beforeEach(() => {
- wrapper.setProps({
- isLocked: true,
- lockedMessage,
- });
- });
-
- it('does not render the remove button', () => {
- expect(findRemoveButton().exists()).toBe(false);
- });
-
- it('renders the lock icon with the correct title', () => {
- expect(findLockIcon().attributes('title')).toBe(lockedMessage);
- });
- });
-});