Commit f1bdd682 authored by Kushal Pandya's avatar Kushal Pandya

Merge branch '322679-epic-board-display-epic-reference-in-card' into 'master'

Epic board - Display epic reference on card [RUN AS-IF-FOSS]

See merge request gitlab-org/gitlab!55028
parents 36b60c36 d773d574
<script> <script>
import { mapActions, mapGetters, mapState } from 'vuex'; import { mapActions, mapGetters, mapState } from 'vuex';
import IssueCardInner from './issue_card_inner.vue'; import BoardCardInner from './board_card_inner.vue';
export default { export default {
name: 'BoardCard', name: 'BoardCard',
components: { components: {
IssueCardInner, BoardCardInner,
}, },
props: { props: {
list: { list: {
...@@ -76,6 +76,6 @@ export default { ...@@ -76,6 +76,6 @@ export default {
class="board-card gl-p-5 gl-rounded-base" class="board-card gl-p-5 gl-rounded-base"
@mouseup="toggleIssue($event)" @mouseup="toggleIssue($event)"
> >
<issue-card-inner :list="list" :issue="issue" :update-filters="true" /> <board-card-inner :list="list" :item="issue" :update-filters="true" />
</li> </li>
</template> </template>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
import { GlLabel, GlTooltipDirective, GlIcon } from '@gitlab/ui'; import { GlLabel, GlTooltipDirective, GlIcon } from '@gitlab/ui';
import { sortBy } from 'lodash'; import { sortBy } from 'lodash';
import { mapActions, mapState } from 'vuex'; import { mapActions, mapState } from 'vuex';
import issueCardInner from 'ee_else_ce/boards/mixins/issue_card_inner'; import boardCardInner from 'ee_else_ce/boards/mixins/board_card_inner';
import { isScopedLabel } from '~/lib/utils/common_utils'; import { isScopedLabel } from '~/lib/utils/common_utils';
import { updateHistory } from '~/lib/utils/url_utility'; import { updateHistory } from '~/lib/utils/url_utility';
import { sprintf, __, n__ } from '~/locale'; import { sprintf, __, n__ } from '~/locale';
...@@ -26,10 +26,10 @@ export default { ...@@ -26,10 +26,10 @@ export default {
directives: { directives: {
GlTooltip: GlTooltipDirective, GlTooltip: GlTooltipDirective,
}, },
mixins: [issueCardInner], mixins: [boardCardInner],
inject: ['groupId', 'rootPath', 'scopedLabelsAvailable'], inject: ['groupId', 'rootPath', 'scopedLabelsAvailable'],
props: { props: {
issue: { item: {
type: Object, type: Object,
required: true, required: true,
}, },
...@@ -52,19 +52,19 @@ export default { ...@@ -52,19 +52,19 @@ export default {
}; };
}, },
computed: { computed: {
...mapState(['isShowingLabels']), ...mapState(['isShowingLabels', 'isEpicBoard']),
cappedAssignees() { cappedAssignees() {
// e.g. maxRender is 4, // e.g. maxRender is 4,
// Render up to all 4 assignees if there are only 4 assigness // Render up to all 4 assignees if there are only 4 assigness
// Otherwise render up to the limitBeforeCounter // Otherwise render up to the limitBeforeCounter
if (this.issue.assignees.length <= this.maxRender) { if (this.item.assignees.length <= this.maxRender) {
return this.issue.assignees.slice(0, this.maxRender); return this.item.assignees.slice(0, this.maxRender);
} }
return this.issue.assignees.slice(0, this.limitBeforeCounter); return this.item.assignees.slice(0, this.limitBeforeCounter);
}, },
numberOverLimit() { numberOverLimit() {
return this.issue.assignees.length - this.limitBeforeCounter; return this.item.assignees.length - this.limitBeforeCounter;
}, },
assigneeCounterTooltip() { assigneeCounterTooltip() {
const { numberOverLimit, maxCounter } = this; const { numberOverLimit, maxCounter } = this;
...@@ -79,31 +79,35 @@ export default { ...@@ -79,31 +79,35 @@ export default {
return `+${this.numberOverLimit}`; return `+${this.numberOverLimit}`;
}, },
shouldRenderCounter() { shouldRenderCounter() {
if (this.issue.assignees.length <= this.maxRender) { if (this.item.assignees.length <= this.maxRender) {
return false; return false;
} }
return this.issue.assignees.length > this.numberOverLimit; return this.item.assignees.length > this.numberOverLimit;
}, },
issueId() { itemPrefix() {
if (this.issue.iid) { return this.isEpicBoard ? '&' : '#';
return `#${this.issue.iid}`; },
itemId() {
if (this.item.iid) {
return `${this.itemPrefix}${this.item.iid}`;
} }
return false; return false;
}, },
showLabelFooter() { showLabelFooter() {
return this.isShowingLabels && this.issue.labels.find(this.showLabel); return this.isShowingLabels && this.item.labels.find(this.showLabel);
}, },
issueReferencePath() { itemReferencePath() {
const { referencePath, groupId } = this.issue; const { referencePath } = this.item;
return !groupId ? referencePath.split('#')[0] : null; return referencePath.split(this.itemPrefix)[0];
}, },
orderedLabels() { orderedLabels() {
return sortBy(this.issue.labels.filter(this.isNonListLabel), 'title'); return sortBy(this.item.labels.filter(this.isNonListLabel), 'title');
}, },
blockedLabel() { blockedLabel() {
if (this.issue.blockedByCount) { if (this.item.blockedByCount) {
return n__(`Blocked by %d issue`, `Blocked by %d issues`, this.issue.blockedByCount); return n__(`Blocked by %d issue`, `Blocked by %d issues`, this.item.blockedByCount);
} }
return __('Blocked issue'); return __('Blocked issue');
}, },
...@@ -160,7 +164,7 @@ export default { ...@@ -160,7 +164,7 @@ export default {
<div class="gl-display-flex" dir="auto"> <div class="gl-display-flex" dir="auto">
<h4 class="board-card-title gl-mb-0 gl-mt-0"> <h4 class="board-card-title gl-mb-0 gl-mt-0">
<gl-icon <gl-icon
v-if="issue.blocked" v-if="item.blocked"
v-gl-tooltip v-gl-tooltip
name="issue-block" name="issue-block"
:title="blockedLabel" :title="blockedLabel"
...@@ -169,7 +173,7 @@ export default { ...@@ -169,7 +173,7 @@ export default {
data-testid="issue-blocked-icon" data-testid="issue-blocked-icon"
/> />
<gl-icon <gl-icon
v-if="issue.confidential" v-if="item.confidential"
v-gl-tooltip v-gl-tooltip
name="eye-slash" name="eye-slash"
:title="__('Confidential')" :title="__('Confidential')"
...@@ -177,11 +181,11 @@ export default { ...@@ -177,11 +181,11 @@ export default {
:aria-label="__('Confidential')" :aria-label="__('Confidential')"
/> />
<a <a
:href="issue.path || issue.webUrl || ''" :href="item.path || item.webUrl || ''"
:title="issue.title" :title="item.title"
class="js-no-trigger" class="js-no-trigger"
@mousemove.stop @mousemove.stop
>{{ issue.title }}</a >{{ item.title }}</a
> >
</h4> </h4>
</div> </div>
...@@ -205,29 +209,30 @@ export default { ...@@ -205,29 +209,30 @@ export default {
class="gl-display-flex align-items-start flex-wrap-reverse board-card-number-container gl-overflow-hidden js-board-card-number-container" class="gl-display-flex align-items-start flex-wrap-reverse board-card-number-container gl-overflow-hidden js-board-card-number-container"
> >
<span <span
v-if="issue.referencePath" v-if="item.referencePath"
class="board-card-number gl-overflow-hidden gl-display-flex gl-mr-3 gl-mt-3" class="board-card-number gl-overflow-hidden gl-display-flex gl-mr-3 gl-mt-3"
:class="{ 'gl-font-base': isEpicBoard }"
> >
<tooltip-on-truncate <tooltip-on-truncate
v-if="issueReferencePath" v-if="itemReferencePath"
:title="issueReferencePath" :title="itemReferencePath"
placement="bottom" placement="bottom"
class="board-issue-path gl-text-truncate gl-font-weight-bold" class="board-item-path gl-text-truncate gl-font-weight-bold"
>{{ issueReferencePath }}</tooltip-on-truncate >{{ itemReferencePath }}</tooltip-on-truncate
> >
#{{ issue.iid }} {{ itemId }}
</span> </span>
<span class="board-info-items gl-mt-3 gl-display-inline-block"> <span class="board-info-items gl-mt-3 gl-display-inline-block">
<issue-due-date <issue-due-date
v-if="issue.dueDate" v-if="item.dueDate"
:date="issue.dueDate" :date="item.dueDate"
:closed="issue.closed || Boolean(issue.closedAt)" :closed="item.closed || Boolean(item.closedAt)"
/> />
<issue-time-estimate v-if="issue.timeEstimate" :estimate="issue.timeEstimate" /> <issue-time-estimate v-if="item.timeEstimate" :estimate="item.timeEstimate" />
<issue-card-weight <issue-card-weight
v-if="validIssueWeight" v-if="validIssueWeight(item)"
:weight="issue.weight" :weight="item.weight"
@click="filterByWeight(issue.weight)" @click="filterByWeight(item.weight)"
/> />
</span> </span>
</div> </div>
......
...@@ -3,13 +3,12 @@ import { mapActions, mapGetters } from 'vuex'; ...@@ -3,13 +3,12 @@ import { mapActions, mapGetters } from 'vuex';
import { ISSUABLE } from '~/boards/constants'; import { ISSUABLE } from '~/boards/constants';
import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import boardsStore from '../stores/boards_store'; import boardsStore from '../stores/boards_store';
import IssueCardInner from './issue_card_inner.vue';
import IssueCardInnerDeprecated from './issue_card_inner_deprecated.vue'; import IssueCardInnerDeprecated from './issue_card_inner_deprecated.vue';
export default { export default {
name: 'BoardCardLayout', name: 'BoardCardLayout',
components: { components: {
IssueCardInner: gon.features?.graphqlBoardLists ? IssueCardInner : IssueCardInnerDeprecated, IssueCardInner: IssueCardInnerDeprecated,
}, },
mixins: [glFeatureFlagMixin()], mixins: [glFeatureFlagMixin()],
props: { props: {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
import { GlLabel, GlTooltipDirective, GlIcon } from '@gitlab/ui'; import { GlLabel, GlTooltipDirective, GlIcon } from '@gitlab/ui';
import { sortBy } from 'lodash'; import { sortBy } from 'lodash';
import { mapState } from 'vuex'; import { mapState } from 'vuex';
import issueCardInner from 'ee_else_ce/boards/mixins/issue_card_inner'; import boardCardInner from 'ee_else_ce/boards/mixins/board_card_inner';
import { isScopedLabel } from '~/lib/utils/common_utils'; import { isScopedLabel } from '~/lib/utils/common_utils';
import { sprintf, __, n__ } from '~/locale'; import { sprintf, __, n__ } from '~/locale';
import TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate.vue'; import TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate.vue';
...@@ -24,7 +24,7 @@ export default { ...@@ -24,7 +24,7 @@ export default {
directives: { directives: {
GlTooltip: GlTooltipDirective, GlTooltip: GlTooltipDirective,
}, },
mixins: [issueCardInner], mixins: [boardCardInner],
inject: ['groupId', 'rootPath'], inject: ['groupId', 'rootPath'],
props: { props: {
issue: { issue: {
...@@ -207,7 +207,7 @@ export default { ...@@ -207,7 +207,7 @@ export default {
/> />
<issue-time-estimate v-if="issue.timeEstimate" :estimate="issue.timeEstimate" /> <issue-time-estimate v-if="issue.timeEstimate" :estimate="issue.timeEstimate" />
<issue-card-weight <issue-card-weight
v-if="validIssueWeight" v-if="validIssueWeight(issue)"
:weight="issue.weight" :weight="issue.weight"
@click="filterByWeight(issue.weight)" @click="filterByWeight(issue.weight)"
/> />
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
import { GlIcon } from '@gitlab/ui'; import { GlIcon } from '@gitlab/ui';
import { GlBreakpointInstance as bp } from '@gitlab/ui/dist/utils'; import { GlBreakpointInstance as bp } from '@gitlab/ui/dist/utils';
import ModalStore from '../../stores/modal_store'; import ModalStore from '../../stores/modal_store';
import IssueCardInner from '../issue_card_inner.vue'; import BoardCardInner from '../board_card_inner.vue';
export default { export default {
components: { components: {
IssueCardInner, BoardCardInner,
GlIcon, GlIcon,
}, },
props: { props: {
...@@ -126,7 +126,7 @@ export default { ...@@ -126,7 +126,7 @@ export default {
class="board-card position-relative p-3 rounded" class="board-card position-relative p-3 rounded"
@click="toggleIssue($event, issue)" @click="toggleIssue($event, issue)"
> >
<issue-card-inner :issue="issue" /> <board-card-inner :item="issue" />
<gl-icon <gl-icon
v-if="issue.selected" v-if="issue.selected"
:aria-label="'Issue #' + issue.id + ' selected'" :aria-label="'Issue #' + issue.id + ' selected'"
......
export default { export default {
computed: { methods: {
validIssueWeight() { validIssueWeight() {
return false; return false;
}, },
},
methods: {
filterByWeight() {}, filterByWeight() {},
}, },
}; };
...@@ -515,7 +515,7 @@ ...@@ -515,7 +515,7 @@
} }
} }
.board-issue-path.js-show-tooltip { .board-item-path.js-show-tooltip {
cursor: help; cursor: help;
} }
......
...@@ -18,6 +18,8 @@ query ListEpics( ...@@ -18,6 +18,8 @@ query ListEpics(
node { node {
...EpicNode ...EpicNode
relativePosition relativePosition
referencePath: reference(full: true)
confidential
labels { labels {
nodes { nodes {
...Label ...Label
......
import { isNumber } from 'lodash'; import { isNumber } from 'lodash';
export default { export default {
computed: { methods: {
validIssueWeight() { validIssueWeight(issue) {
if (this.issue && isNumber(this.issue.weight)) { if (issue && isNumber(issue.weight)) {
return this.issue.weight >= 0; return issue.weight >= 0;
} }
return false; return false;
}, },
},
methods: {
filterByWeight(weight) { filterByWeight(weight) {
if (!this.updateFilters) return; if (!this.updateFilters) return;
......
import { GlLabel } from '@gitlab/ui'; import { GlLabel } from '@gitlab/ui';
import { shallowMount } from '@vue/test-utils'; import { shallowMount } from '@vue/test-utils';
import IssueCardWeight from 'ee/boards/components/issue_card_weight.vue'; import IssueCardWeight from 'ee/boards/components/issue_card_weight.vue';
import IssueCardInner from '~/boards/components/issue_card_inner.vue'; import BoardCardInner from '~/boards/components/board_card_inner.vue';
import defaultStore from '~/boards/stores'; import defaultStore from '~/boards/stores';
describe('Issue card component', () => { describe('Board card component', () => {
let wrapper; let wrapper;
let issue; let issue;
let list; let list;
const createComponent = (props = {}, store = defaultStore) => { const createComponent = (props = {}, store = defaultStore) => {
wrapper = shallowMount(IssueCardInner, { wrapper = shallowMount(BoardCardInner, {
store, store,
propsData: { propsData: {
list, list,
issue, item: issue,
...props, ...props,
}, },
provide: { provide: {
......
import { GlLabel } from '@gitlab/ui'; import { GlLabel } from '@gitlab/ui';
import { mount } from '@vue/test-utils'; import { mount } from '@vue/test-utils';
import { range } from 'lodash'; import { range } from 'lodash';
import IssueCardInner from '~/boards/components/issue_card_inner.vue'; import BoardCardInner from '~/boards/components/board_card_inner.vue';
import eventHub from '~/boards/eventhub'; import eventHub from '~/boards/eventhub';
import defaultStore from '~/boards/stores'; import defaultStore from '~/boards/stores';
import { updateHistory } from '~/lib/utils/url_utility'; import { updateHistory } from '~/lib/utils/url_utility';
...@@ -10,7 +10,7 @@ import { mockLabelList } from './mock_data'; ...@@ -10,7 +10,7 @@ import { mockLabelList } from './mock_data';
jest.mock('~/lib/utils/url_utility'); jest.mock('~/lib/utils/url_utility');
jest.mock('~/boards/eventhub'); jest.mock('~/boards/eventhub');
describe('Issue card component', () => { describe('Board card component', () => {
const user = { const user = {
id: 1, id: 1,
name: 'testing 123', name: 'testing 123',
...@@ -31,11 +31,11 @@ describe('Issue card component', () => { ...@@ -31,11 +31,11 @@ describe('Issue card component', () => {
let list; let list;
const createWrapper = (props = {}, store = defaultStore) => { const createWrapper = (props = {}, store = defaultStore) => {
wrapper = mount(IssueCardInner, { wrapper = mount(BoardCardInner, {
store, store,
propsData: { propsData: {
list, list,
issue, item: issue,
...props, ...props,
}, },
stubs: { stubs: {
...@@ -63,7 +63,7 @@ describe('Issue card component', () => { ...@@ -63,7 +63,7 @@ describe('Issue card component', () => {
weight: 1, weight: 1,
}; };
createWrapper({ issue, list }); createWrapper({ item: issue, list });
}); });
afterEach(() => { afterEach(() => {
...@@ -103,8 +103,8 @@ describe('Issue card component', () => { ...@@ -103,8 +103,8 @@ describe('Issue card component', () => {
describe('confidential issue', () => { describe('confidential issue', () => {
beforeEach(() => { beforeEach(() => {
wrapper.setProps({ wrapper.setProps({
issue: { item: {
...wrapper.props('issue'), ...wrapper.props('item'),
confidential: true, confidential: true,
}, },
}); });
...@@ -119,8 +119,8 @@ describe('Issue card component', () => { ...@@ -119,8 +119,8 @@ describe('Issue card component', () => {
describe('with avatar', () => { describe('with avatar', () => {
beforeEach(() => { beforeEach(() => {
wrapper.setProps({ wrapper.setProps({
issue: { item: {
...wrapper.props('issue'), ...wrapper.props('item'),
assignees: [user], assignees: [user],
updateData(newData) { updateData(newData) {
Object.assign(this, newData); Object.assign(this, newData);
...@@ -146,8 +146,8 @@ describe('Issue card component', () => { ...@@ -146,8 +146,8 @@ describe('Issue card component', () => {
}); });
it('renders the avatar using avatarUrl property', async () => { it('renders the avatar using avatarUrl property', async () => {
wrapper.props('issue').updateData({ wrapper.props('item').updateData({
...wrapper.props('issue'), ...wrapper.props('item'),
assignees: [ assignees: [
{ {
id: '1', id: '1',
...@@ -172,8 +172,8 @@ describe('Issue card component', () => { ...@@ -172,8 +172,8 @@ describe('Issue card component', () => {
global.gon.default_avatar_url = 'default_avatar'; global.gon.default_avatar_url = 'default_avatar';
wrapper.setProps({ wrapper.setProps({
issue: { item: {
...wrapper.props('issue'), ...wrapper.props('item'),
assignees: [ assignees: [
{ {
id: 1, id: 1,
...@@ -201,8 +201,8 @@ describe('Issue card component', () => { ...@@ -201,8 +201,8 @@ describe('Issue card component', () => {
describe('multiple assignees', () => { describe('multiple assignees', () => {
beforeEach(() => { beforeEach(() => {
wrapper.setProps({ wrapper.setProps({
issue: { item: {
...wrapper.props('issue'), ...wrapper.props('item'),
assignees: [ assignees: [
{ {
id: 2, id: 2,
...@@ -233,7 +233,7 @@ describe('Issue card component', () => { ...@@ -233,7 +233,7 @@ describe('Issue card component', () => {
describe('more than three assignees', () => { describe('more than three assignees', () => {
beforeEach(() => { beforeEach(() => {
const { assignees } = wrapper.props('issue'); const { assignees } = wrapper.props('item');
assignees.push({ assignees.push({
id: 5, id: 5,
name: 'user5', name: 'user5',
...@@ -242,8 +242,8 @@ describe('Issue card component', () => { ...@@ -242,8 +242,8 @@ describe('Issue card component', () => {
}); });
wrapper.setProps({ wrapper.setProps({
issue: { item: {
...wrapper.props('issue'), ...wrapper.props('item'),
assignees, assignees,
}, },
}); });
...@@ -259,7 +259,7 @@ describe('Issue card component', () => { ...@@ -259,7 +259,7 @@ describe('Issue card component', () => {
it('renders 99+ avatar counter', async () => { it('renders 99+ avatar counter', async () => {
const assignees = [ const assignees = [
...wrapper.props('issue').assignees, ...wrapper.props('item').assignees,
...range(5, 103).map((i) => ({ ...range(5, 103).map((i) => ({
id: i, id: i,
name: 'name', name: 'name',
...@@ -268,8 +268,8 @@ describe('Issue card component', () => { ...@@ -268,8 +268,8 @@ describe('Issue card component', () => {
})), })),
]; ];
wrapper.setProps({ wrapper.setProps({
issue: { item: {
...wrapper.props('issue'), ...wrapper.props('item'),
assignees, assignees,
}, },
}); });
...@@ -283,7 +283,7 @@ describe('Issue card component', () => { ...@@ -283,7 +283,7 @@ describe('Issue card component', () => {
describe('labels', () => { describe('labels', () => {
beforeEach(() => { beforeEach(() => {
wrapper.setProps({ issue: { ...issue, labels: [list.label, label1] } }); wrapper.setProps({ item: { ...issue, labels: [list.label, label1] } });
}); });
it('does not render list label but renders all other labels', () => { it('does not render list label but renders all other labels', () => {
...@@ -295,7 +295,7 @@ describe('Issue card component', () => { ...@@ -295,7 +295,7 @@ describe('Issue card component', () => {
}); });
it('does not render label if label does not have an ID', async () => { it('does not render label if label does not have an ID', async () => {
wrapper.setProps({ issue: { ...issue, labels: [label1, { title: 'closed' }] } }); wrapper.setProps({ item: { ...issue, labels: [label1, { title: 'closed' }] } });
await wrapper.vm.$nextTick(); await wrapper.vm.$nextTick();
...@@ -307,8 +307,8 @@ describe('Issue card component', () => { ...@@ -307,8 +307,8 @@ describe('Issue card component', () => {
describe('blocked', () => { describe('blocked', () => {
beforeEach(() => { beforeEach(() => {
wrapper.setProps({ wrapper.setProps({
issue: { item: {
...wrapper.props('issue'), ...wrapper.props('item'),
blocked: true, blocked: true,
}, },
}); });
......
...@@ -7,7 +7,7 @@ import { mount } from '@vue/test-utils'; ...@@ -7,7 +7,7 @@ import { mount } from '@vue/test-utils';
import MockAdapter from 'axios-mock-adapter'; import MockAdapter from 'axios-mock-adapter';
import waitForPromises from 'helpers/wait_for_promises'; import waitForPromises from 'helpers/wait_for_promises';
import BoardCardDeprecated from '~/boards/components/board_card_deprecated.vue'; import BoardCardDeprecated from '~/boards/components/board_card_deprecated.vue';
import issueCardInner from '~/boards/components/issue_card_inner.vue'; import issueCardInner from '~/boards/components/issue_card_inner_deprecated.vue';
import eventHub from '~/boards/eventhub'; import eventHub from '~/boards/eventhub';
import store from '~/boards/stores'; import store from '~/boards/stores';
import boardsStore from '~/boards/stores/boards_store'; import boardsStore from '~/boards/stores/boards_store';
......
...@@ -11,7 +11,7 @@ import '~/boards/models/label'; ...@@ -11,7 +11,7 @@ import '~/boards/models/label';
import '~/boards/models/assignee'; import '~/boards/models/assignee';
import '~/boards/models/list'; import '~/boards/models/list';
import BoardCardLayout from '~/boards/components/board_card_layout_deprecated.vue'; import BoardCardLayout from '~/boards/components/board_card_layout_deprecated.vue';
import issueCardInner from '~/boards/components/issue_card_inner.vue'; import issueCardInner from '~/boards/components/issue_card_inner_deprecated.vue';
import { ISSUABLE } from '~/boards/constants'; import { ISSUABLE } from '~/boards/constants';
import boardsVuexStore from '~/boards/stores'; import boardsVuexStore from '~/boards/stores';
import boardsStore from '~/boards/stores/boards_store'; import boardsStore from '~/boards/stores/boards_store';
......
...@@ -2,7 +2,7 @@ import { createLocalVue, shallowMount } from '@vue/test-utils'; ...@@ -2,7 +2,7 @@ import { createLocalVue, shallowMount } from '@vue/test-utils';
import Vuex from 'vuex'; import Vuex from 'vuex';
import BoardCard from '~/boards/components/board_card.vue'; import BoardCard from '~/boards/components/board_card.vue';
import IssueCardInner from '~/boards/components/issue_card_inner.vue'; import BoardCardInner from '~/boards/components/board_card_inner.vue';
import { inactiveId } from '~/boards/constants'; import { inactiveId } from '~/boards/constants';
import { mockLabelList, mockIssue } from '../mock_data'; import { mockLabelList, mockIssue } from '../mock_data';
...@@ -38,7 +38,7 @@ describe('Board card layout', () => { ...@@ -38,7 +38,7 @@ describe('Board card layout', () => {
wrapper = shallowMount(BoardCard, { wrapper = shallowMount(BoardCard, {
localVue, localVue,
stubs: { stubs: {
IssueCardInner, BoardCardInner,
}, },
store, store,
propsData: { propsData: {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment