Commit 7a4a664a authored by Phil Hughes's avatar Phil Hughes

Merge branch '8333-port-epics-within-epics-to-refactored-app' into 'master'

Add frontend support for Relationships between Epics in refactored Epics app

See merge request gitlab-org/gitlab-ee!9272
parents 3d91f11a 792a0dc8
...@@ -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