Commit ac2271f8 authored by Clement Ho's avatar Clement Ho

Merge branch 'unresolved-discussions-vue-component-i18n-and-tests' into 'master'

Add i18n and update specs for UnresolvedDiscussions vue component

See merge request gitlab-org/gitlab-ce!17866
parents e77ecf62 cc00f468
...@@ -7,7 +7,10 @@ export default { ...@@ -7,7 +7,10 @@ export default {
statusIcon, statusIcon,
}, },
props: { props: {
mr: { type: Object, required: true }, mr: {
type: Object,
required: true,
},
}, },
}; };
</script> </script>
...@@ -20,13 +23,14 @@ export default { ...@@ -20,13 +23,14 @@ export default {
/> />
<div class="media-body space-children"> <div class="media-body space-children">
<span class="bold"> <span class="bold">
There are unresolved discussions. Please resolve these discussions {{ s__("mrWidget|There are unresolved discussions. Please resolve these discussions") }}
</span> </span>
<a <a
v-if="mr.createIssueToResolveDiscussionsPath" v-if="mr.createIssueToResolveDiscussionsPath"
:href="mr.createIssueToResolveDiscussionsPath" :href="mr.createIssueToResolveDiscussionsPath"
class="btn btn-default btn-xs js-create-issue"> class="btn btn-default btn-xs js-create-issue"
Create an issue to resolve them later >
{{ s__("mrWidget|Create an issue to resolve them later") }}
</a> </a>
</div> </div>
</div> </div>
......
---
title: Add i18n and update specs for UnresolvedDiscussions vue component
merge_request: 17866
author: George Tsiolis
type: performance
import Vue from 'vue'; import Vue from 'vue';
import UnresolvedDiscussions from '~/vue_merge_request_widget/components/states/unresolved_discussions.vue'; import UnresolvedDiscussions from '~/vue_merge_request_widget/components/states/unresolved_discussions.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
describe('UnresolvedDiscussions', () => { describe('UnresolvedDiscussions', () => {
describe('props', () => { const Component = Vue.extend(UnresolvedDiscussions);
it('should have props', () => { let vm;
const { mr } = UnresolvedDiscussions.props;
expect(mr.type instanceof Object).toBeTruthy(); afterEach(() => {
expect(mr.required).toBeTruthy(); vm.$destroy();
});
}); });
describe('template', () => { describe('with discussions path', () => {
let el;
let vm;
const path = 'foo/bar';
beforeEach(() => { beforeEach(() => {
const Component = Vue.extend(UnresolvedDiscussions); vm = mountComponent(Component, { mr: {
const mr = { createIssueToResolveDiscussionsPath: gl.TEST_HOST,
createIssueToResolveDiscussionsPath: path, } });
};
vm = new Component({
el: document.createElement('div'),
propsData: { mr },
});
el = vm.$el;
}); });
it('should have correct elements', () => { it('should have correct elements', () => {
expect(el.classList.contains('mr-widget-body')).toBeTruthy(); expect(vm.$el.innerText).toContain('There are unresolved discussions. Please resolve these discussions');
expect(el.innerText).toContain('There are unresolved discussions. Please resolve these discussions'); expect(vm.$el.innerText).toContain('Create an issue to resolve them later');
expect(el.innerText).toContain('Create an issue to resolve them later'); expect(vm.$el.querySelector('.js-create-issue').getAttribute('href')).toEqual(gl.TEST_HOST);
expect(el.querySelector('.js-create-issue').getAttribute('href')).toEqual(path);
}); });
});
it('should not show create issue button if user cannot create issue', (done) => { describe('without discussions path', () => {
vm.mr.createIssueToResolveDiscussionsPath = ''; beforeEach(() => {
vm = mountComponent(Component, { mr: {} });
});
Vue.nextTick(() => { it('should not show create issue link if user cannot create issue', () => {
expect(el.querySelector('.js-create-issue')).toEqual(null); expect(vm.$el.innerText).toContain('There are unresolved discussions. Please resolve these discussions');
done(); expect(vm.$el.querySelector('.js-create-issue')).toEqual(null);
});
}); });
}); });
}); });
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