Commit f55206ce authored by Filipa Lacerda's avatar Filipa Lacerda

Adds missing tests for commit component

parent b210cbca
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
<div v-if="hasRef" class="icon-container"> <div v-if="hasRef" class="icon-container">
<i v-if="tag" class="fa fa-tag"></i> <i v-if="tag" class="fa fa-tag"></i>
<i v-else class="fa fa-code-fork"></i> <i v-if="!tag" class="fa fa-code-fork"></i>
</div> </div>
<a v-if="hasRef" <a v-if="hasRef"
......
/*= require vue_common_components/commit */ //= require vue_common_component/commit
/* eslint-disable */
describe('Commit component', () => { describe('Commit component', () => {
const getRenderedText = (Component, propsData) => {
const Constructor = Vue.extend(Component); let props;
const vm = new Constructor({propsData}).$mount(); let component;
return vm.$el.textContent;
};
it('should render a code-fork icon if it does not represent a tag', () => {
const MyComponent = window.gl.commitComponent; fixture.set('<div class="test-commit-container"></div>');
component = new window.gl.CommitComponent({
describe('When `ref` is provided', () => { el: document.querySelector('.test-commit-container'),
const props = { propsData: {
tag: true, tag: false,
ref: { ref: {
name: 'master', name: 'master',
ref_url: 'http://localhost/namespace2/gitlabhq/tree/master' ref_url: 'http://localhost/namespace2/gitlabhq/tree/master',
},
commit_url: 'https://gitlab.com/gitlab-org/gitlab-ce/commit/b7836eddf62d663c665769e1b0960197fd215067',
short_sha: 'b7836edd',
title: 'Commit message',
author: {
avatar_url: 'https://gitlab.com/uploads/user/avatar/300478/avatar.png',
web_url: 'https://gitlab.com/jschatz1',
username: 'jschatz1',
},
}, },
commit_url: 'https://gitlab.com/gitlab-org/gitlab-ce/commit/b7836eddf62d663c665769e1b0960197fd215067', });
short_sha: 'b7836edd',
title: 'Commit message',
author: {
avatar_url: 'https://gitlab.com/uploads/user/avatar/300478/avatar.png',
web_url: 'https://gitlab.com/jschatz1',
username: 'jschatz1'
}
};
it('should render a tag icon if it represents a tag', () => { expect(component.$el.querySelector('.icon-container i').classList).toContain('fa-code-fork');
const renderedText = getRenderedText(MyComponent, props); });
describe('Given all the props', () => {
beforeEach(() => {
fixture.set('<div class="test-commit-container"></div>');
props = {
tag: true,
ref: {
name: 'master',
ref_url: 'http://localhost/namespace2/gitlabhq/tree/master',
},
commit_url: 'https://gitlab.com/gitlab-org/gitlab-ce/commit/b7836eddf62d663c665769e1b0960197fd215067',
short_sha: 'b7836edd',
title: 'Commit message',
author: {
avatar_url: 'https://gitlab.com/uploads/user/avatar/300478/avatar.png',
web_url: 'https://gitlab.com/jschatz1',
username: 'jschatz1',
},
};
component = new window.gl.CommitComponent({
el: document.querySelector('.test-commit-container'),
propsData: props,
});
}); });
it('should render a code-fork icon if it does not represent a tag', () => { it('should render a tag icon if it represents a tag', () => {
expect(component.$el.querySelector('.icon-container i').classList).toContain('fa-tag');
}); });
it('should render a link to the ref url', () => { it('should render a link to the ref url', () => {
expect(component.$el.querySelector('.branch-name').getAttribute('href')).toEqual(props.ref.ref_url);
}); });
it('should render the ref name', () => { it('should render the ref name', () => {
expect(component.$el.querySelector('.branch-name').textContent).toContain(props.ref.name);
}); });
});
});
it('should render the commit icon as an svg', () => {
});
it('should render the commit short sha with a link to the commit url', () => {
}); it('should render the commit short sha with a link to the commit url', () => {
expect(component.$el.querySelector('.commit-id').getAttribute('href')).toEqual(props.commit_url);
describe('Given commit title and author props', () => { expect(component.$el.querySelector('.commit-id').textContent).toContain(props.short_sha);
it('Should render a link to the author profile', () => { });
});
it('Should render the author avatar with title and alt attributes', () => {
});
});
describe('When commit title is not provided', () => {
it('Should render default message', () => {
});
});
describe('Given no ref prop', () => { describe('Given commit title and author props', () => {
it('Should render without errors', () => { it('Should render a link to the author profile', () => {
expect(
component.$el.querySelector('.commit-title .avatar-image-container').getAttribute('href')
).toEqual(props.author.web_url);
});
it('Should render the author avatar with title and alt attributes', () => {
expect(
component.$el.querySelector('.commit-title .avatar-image-container img').getAttribute('title')
).toContain(props.author.username);
expect(
component.$el.querySelector('.commit-title .avatar-image-container img').getAttribute('alt')
).toContain(`${props.author.username}'s avatar`);
});
});
it('should render the commit title', () => {
expect(
component.$el.querySelector('a.commit-row-message').getAttribute('href')
).toEqual(props.commit_url);
expect(
component.$el.querySelector('a.commit-row-message').textContent
).toContain(props.title);
});
}); });
});
describe('Given no title prop', () => {
it('Should render without errors', () => {
describe('When commit title is not provided', () => {
it('Should render default message', () => {
fixture.set('<div class="test-commit-container"></div>');
props = {
tag: false,
ref: {
name: 'master',
ref_url: 'http://localhost/namespace2/gitlabhq/tree/master',
},
commit_url: 'https://gitlab.com/gitlab-org/gitlab-ce/commit/b7836eddf62d663c665769e1b0960197fd215067',
short_sha: 'b7836edd',
title: null,
author: {},
};
component = new window.gl.CommitComponent({
el: document.querySelector('.test-commit-container'),
propsData: props,
});
expect(
component.$el.querySelector('.commit-title span').textContent
).toContain('Cant find HEAD commit for this branch');
});
}); });
}); });
describe('Given no author prop', () => {
it('Should render without errors', () => {
});
});
\ No newline at end of file
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