Commit 792a0dc8 authored by Kushal Pandya's avatar Kushal Pandya

Add frontend support for Relationships between Epics

Adds support for related Epics list in page
body above related Issues list.
parent ead50a4a
...@@ -2,17 +2,19 @@ ...@@ -2,17 +2,19 @@
import { mapState } from 'vuex'; import { mapState } from 'vuex';
import IssuableBody from '~/issue_show/components/app.vue'; import IssuableBody from '~/issue_show/components/app.vue';
import RelatedIssues from 'ee/related_issues/components/related_issues_root.vue'; import RelatedItems from 'ee/related_issues/components/related_issues_root.vue';
export default { export default {
epicsPathIdSeparator: '&',
components: { components: {
IssuableBody, IssuableBody,
RelatedIssues, RelatedItems,
}, },
computed: { computed: {
...mapState([ ...mapState([
'endpoint', 'endpoint',
'updateEndpoint', 'updateEndpoint',
'epicLinksEndpoint',
'issueLinksEndpoint', 'issueLinksEndpoint',
'groupPath', 'groupPath',
'markdownPreviewPath', 'markdownPreviewPath',
...@@ -20,6 +22,7 @@ export default { ...@@ -20,6 +22,7 @@ export default {
'canUpdate', 'canUpdate',
'canDestroy', 'canDestroy',
'canAdmin', 'canAdmin',
'subepicsSupported',
'initialTitleHtml', 'initialTitleHtml',
'initialTitleText', 'initialTitleText',
'initialDescriptionHtml', 'initialDescriptionHtml',
...@@ -52,12 +55,26 @@ export default { ...@@ -52,12 +55,26 @@ export default {
issuable-type="epic" issuable-type="epic"
/> />
</div> </div>
<related-issues <related-items
v-if="subepicsSupported"
:endpoint="epicLinksEndpoint"
:can-admin="canAdmin"
:can-reorder="canAdmin"
:allow-auto-complete="false"
:path-id-separator="$options.epicsPathIdSeparator"
:title="__('Epics')"
:issuable-type="__('epic')"
css-class="js-related-epics-block"
/>
<related-items
:endpoint="issueLinksEndpoint" :endpoint="issueLinksEndpoint"
:can-admin="canAdmin" :can-admin="canAdmin"
:can-reorder="canAdmin" :can-reorder="canAdmin"
:allow-auto-complete="false" :allow-auto-complete="false"
title="Issues" :title="__('Issues')"
:issuable-type="__('issue')"
css-class="js-related-issues-block"
path-id-separator="#"
/> />
</div> </div>
</template> </template>
...@@ -3,6 +3,7 @@ export default { ...@@ -3,6 +3,7 @@ export default {
endpoint: '', endpoint: '',
updateEndpoint: '', updateEndpoint: '',
epicLinksEndpoint: '',
issueLinksEndpoint: '', issueLinksEndpoint: '',
groupPath: '', groupPath: '',
markdownPreviewPath: '', markdownPreviewPath: '',
...@@ -20,6 +21,7 @@ export default { ...@@ -20,6 +21,7 @@ export default {
canUpdate: false, canUpdate: false,
canDestroy: false, canDestroy: false,
canAdmin: false, canAdmin: false,
subepicsSupported: false,
// Epic Information // Epic Information
epicId: 0, epicId: 0,
......
...@@ -51,11 +51,27 @@ describe('EpicBodyComponent', () => { ...@@ -51,11 +51,27 @@ describe('EpicBodyComponent', () => {
expect(vm.$el.querySelector('.description')).not.toBeNull(); expect(vm.$el.querySelector('.description')).not.toBeNull();
}); });
it('renders related epics list elements', () => {
const relatedEpicsEl = vm.$el.querySelector('.js-related-epics-block');
expect(relatedEpicsEl).not.toBeNull();
expect(relatedEpicsEl.querySelector('.card-title').innerText.trim()).toContain('Epics');
expect(relatedEpicsEl.querySelector('.js-related-issues-header-issue-count')).not.toBeNull();
expect(relatedEpicsEl.querySelector('button.js-issue-count-badge-add-button')).not.toBeNull();
expect(relatedEpicsEl.querySelector('.related-items-list')).not.toBeNull();
});
it('renders related issues list elements', () => { it('renders related issues list elements', () => {
expect(vm.$el.querySelector('.related-issues-block')).not.toBeNull(); const relatedIssuesEl = vm.$el.querySelector('.js-related-issues-block');
expect(vm.$el.querySelector('.js-related-issues-header-issue-count')).not.toBeNull();
expect(vm.$el.querySelector('.related-issues-token-body')).not.toBeNull(); expect(relatedIssuesEl).not.toBeNull();
expect(vm.$el.querySelector('.related-items-list')).not.toBeNull(); expect(relatedIssuesEl.querySelector('.card-title').innerText.trim()).toContain('Issues');
expect(relatedIssuesEl.querySelector('.js-related-issues-header-issue-count')).not.toBeNull();
expect(
relatedIssuesEl.querySelector('button.js-issue-count-badge-add-button'),
).not.toBeNull();
expect(relatedIssuesEl.querySelector('.related-items-list')).not.toBeNull();
}); });
}); });
}); });
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