Adds missing unit tests for vue components: issue_note_awards_list; issue_note_body; issue_note_form;issue_note_spec
This commit is contained in:
parent
cf77cdba51
commit
cedee01240
5 changed files with 203 additions and 19 deletions
|
@ -1,13 +1,55 @@
|
|||
describe('issue_note_awards_list component', () => {
|
||||
it('should render awarded emojis', () => {
|
||||
import Vue from 'vue';
|
||||
import store from '~/notes/stores';
|
||||
import awardsNote from '~/notes/components/issue_note_awards_list.vue';
|
||||
import { issueDataMock, notesDataMock } from '../mock_data';
|
||||
|
||||
describe('issue_note_awards_list component', () => {
|
||||
let vm;
|
||||
let awardsMock;
|
||||
|
||||
beforeEach(() => {
|
||||
const Component = Vue.extend(awardsNote);
|
||||
|
||||
store.dispatch('setIssueData', issueDataMock);
|
||||
store.dispatch('setNotesData', notesDataMock);
|
||||
awardsMock = [
|
||||
{
|
||||
name: 'flag_tz',
|
||||
user: { id: 1, name: 'Administrator', username: 'root' },
|
||||
},
|
||||
{
|
||||
name: 'cartwheel_tone3',
|
||||
user: { id: 12, name: 'Bobbie Stehr', username: 'erin' },
|
||||
},
|
||||
];
|
||||
|
||||
vm = new Component({
|
||||
store,
|
||||
propsData: {
|
||||
awards: awardsMock,
|
||||
noteAuthorId: 2,
|
||||
noteId: 545,
|
||||
toggleAwardPath: '/gitlab-org/gitlab-ce/notes/545/toggle_award_emoji',
|
||||
},
|
||||
}).$mount();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vm.$destroy();
|
||||
});
|
||||
|
||||
it('should render awarded emojis', () => {
|
||||
expect(vm.$el.querySelectorAll('.js-awards-block button').length).toEqual(awardsMock.length);
|
||||
});
|
||||
|
||||
it('should be possible to remove awareded emoji', () => {
|
||||
spyOn(vm, 'handleAward').and.callThrough();
|
||||
vm.$el.querySelector('.js-awards-block button').click();
|
||||
|
||||
expect(vm.handleAward).toHaveBeenCalledWith('flag_tz');
|
||||
});
|
||||
|
||||
it('should be possible to add new emoji', () => {
|
||||
|
||||
expect(vm.$el.querySelector('.js-add-award')).toBeDefined();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,17 +1,45 @@
|
|||
|
||||
import Vue from 'vue';
|
||||
import store from '~/notes/stores';
|
||||
import noteBody from '~/notes/components/issue_note_body.vue';
|
||||
import { issueDataMock, notesDataMock, note } from '../mock_data';
|
||||
|
||||
describe('issue_note_body component', () => {
|
||||
let vm;
|
||||
|
||||
beforeEach(() => {
|
||||
const Component = Vue.extend(noteBody);
|
||||
|
||||
store.dispatch('setIssueData', issueDataMock);
|
||||
store.dispatch('setNotesData', notesDataMock);
|
||||
|
||||
vm = new Component({
|
||||
store,
|
||||
propsData: {
|
||||
note,
|
||||
canEdit: true,
|
||||
},
|
||||
}).$mount();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vm.$destroy();
|
||||
});
|
||||
|
||||
it('should render the note', () => {
|
||||
|
||||
expect(vm.$el.querySelector('.note-text').innerHTML).toEqual(note.note_html);
|
||||
});
|
||||
|
||||
it('should be render form if user is editing', () => {
|
||||
|
||||
});
|
||||
|
||||
it('should render information if note was edited', () => {
|
||||
it('should be render form if user is editing', (done) => {
|
||||
vm.isEditing = true;
|
||||
|
||||
Vue.nextTick(() => {
|
||||
expect(vm.$el.querySelector('textarea.js-task-list-field')).toBeDefined();
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should render awards list', () => {
|
||||
|
||||
expect(vm.$el.querySelectorAll('.js-awards-block button').length).toEqual(note.award_emoji.length);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,7 +1,44 @@
|
|||
describe('issue_note_form component', () => {
|
||||
describe('conflicts editing', () => {
|
||||
it('should show conflict message if note changes outside the component', () => {
|
||||
import Vue from 'vue';
|
||||
import store from '~/notes/stores';
|
||||
import issueNote from '~/notes/components/issue_note.vue';
|
||||
import { issueDataMock, notesDataMock } from '../mock_data';
|
||||
|
||||
fdescribe('issue_note_form component', () => {
|
||||
let vm;
|
||||
let props;
|
||||
|
||||
beforeEach(() => {
|
||||
const Component = Vue.extend(issueNote);
|
||||
|
||||
store.dispatch('setIssueData', issueDataMock);
|
||||
store.dispatch('setNotesData', notesDataMock);
|
||||
|
||||
props = {
|
||||
isEditing: true,
|
||||
noteBody: 'Magni suscipit eius consectetur enim et ex et commodi.',
|
||||
noteId: 545,
|
||||
saveButtonTitle: 'Save comment',
|
||||
};
|
||||
|
||||
vm = new Component({
|
||||
store,
|
||||
propsData: props,
|
||||
}).$mount();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vm.$destroy();
|
||||
});
|
||||
|
||||
describe('conflicts editing', (done) => {
|
||||
it('should show conflict message if note changes outside the component', () => {
|
||||
vm.noteBody = 'Foo';
|
||||
|
||||
Vue.nextTick(() => {
|
||||
console.log('', vm.$el);
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -1,17 +1,44 @@
|
|||
describe('issue_note', () => {
|
||||
it('should render user information', () => {
|
||||
|
||||
import Vue from 'vue';
|
||||
import store from '~/notes/stores';
|
||||
import issueNote from '~/notes/components/issue_note.vue';
|
||||
import { issueDataMock, notesDataMock, note } from '../mock_data';
|
||||
|
||||
describe('issue_note', () => {
|
||||
let vm;
|
||||
|
||||
beforeEach(() => {
|
||||
const Component = Vue.extend(issueNote);
|
||||
|
||||
store.dispatch('setIssueData', issueDataMock);
|
||||
store.dispatch('setNotesData', notesDataMock);
|
||||
|
||||
vm = new Component({
|
||||
store,
|
||||
propsData: {
|
||||
note,
|
||||
},
|
||||
}).$mount();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vm.$destroy();
|
||||
});
|
||||
|
||||
it('should render user information', () => {
|
||||
expect(vm.$el.querySelector('.user-avatar-link img').getAttribute('src')).toEqual(note.author.avatar_url);
|
||||
});
|
||||
|
||||
it('should render note header content', () => {
|
||||
|
||||
expect(vm.$el.querySelector('.note-header .note-header-author-name').textContent.trim()).toEqual(note.author.name);
|
||||
expect(vm.$el.querySelector('.note-header .note-headline-meta').textContent.trim()).toContain('commented');
|
||||
});
|
||||
|
||||
it('should render note actions', () => {
|
||||
|
||||
expect(vm.$el.querySelector('.note-actions')).toBeDefined();
|
||||
});
|
||||
|
||||
it('should render issue body', () => {
|
||||
|
||||
expect(vm.$el.querySelector('.note-text').innerHTML).toEqual(note.note_html);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -70,7 +70,7 @@ export const individualNote = {
|
|||
name: 'Root',
|
||||
username: 'root',
|
||||
state: 'active',
|
||||
avatar_url: null,
|
||||
avatar_url: 'test',
|
||||
path: '/root',
|
||||
},
|
||||
created_at: '2017-08-01T17: 09: 33.762Z',
|
||||
|
@ -96,6 +96,56 @@ export const individualNote = {
|
|||
reply_id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd',
|
||||
};
|
||||
|
||||
export const note = {
|
||||
"id": 546,
|
||||
"attachment": {
|
||||
"url": null,
|
||||
"filename": null,
|
||||
"image": false
|
||||
},
|
||||
"author": {
|
||||
"id": 1,
|
||||
"name": "Administrator",
|
||||
"username": "root",
|
||||
"state": "active",
|
||||
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
|
||||
"path": "/root"
|
||||
},
|
||||
"created_at": "2017-08-10T15:24:03.087Z",
|
||||
"updated_at": "2017-08-10T15:24:03.087Z",
|
||||
"system": false,
|
||||
"noteable_id": 67,
|
||||
"noteable_type": "Issue",
|
||||
"noteable_iid": 7,
|
||||
"type": null,
|
||||
"human_access": "Owner",
|
||||
"note": "Vel id placeat reprehenderit sit numquam.",
|
||||
"note_html": "<p dir=\"auto\">Vel id placeat reprehenderit sit numquam.</p>",
|
||||
"current_user": {
|
||||
"can_edit": true
|
||||
},
|
||||
"discussion_id": "d3842a451b7f3d9a5dfce329515127b2d29a4cd0",
|
||||
"emoji_awardable": true,
|
||||
"award_emoji": [{
|
||||
"name": "baseball",
|
||||
"user": {
|
||||
"id": 1,
|
||||
"name": "Administrator",
|
||||
"username": "root"
|
||||
}
|
||||
}, {
|
||||
"name": "bath_tone3",
|
||||
"user": {
|
||||
"id": 1,
|
||||
"name": "Administrator",
|
||||
"username": "root"
|
||||
}
|
||||
}],
|
||||
"toggle_award_path": "/gitlab-org/gitlab-ce/notes/546/toggle_award_emoji",
|
||||
"report_abuse_path": "/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F7%23note_546&user_id=1",
|
||||
"path": "/gitlab-org/gitlab-ce/notes/546"
|
||||
}
|
||||
|
||||
export const discussionMock = {
|
||||
id: '9e3bd2f71a01de45fd166e6719eb380ad9f270b1',
|
||||
reply_id: '9e3bd2f71a01de45fd166e6719eb380ad9f270b1',
|
||||
|
|
Loading…
Reference in a new issue