Commit 855c258f authored by Phil Hughes's avatar Phil Hughes

fixed todos spec

parent 08362d80
No related merge requests found
...@@ -138,22 +138,17 @@ export default class Todos { ...@@ -138,22 +138,17 @@ export default class Todos {
goToTodoUrl(e) { goToTodoUrl(e) {
const todoLink = this.dataset.url; const todoLink = this.dataset.url;
if (!todoLink) { if (!todoLink || e.target.tagName === 'A' || e.target.tagName === 'IMG') {
return; return;
} }
e.stopPropagation();
e.preventDefault();
if (isMetaClick(e)) { if (isMetaClick(e)) {
const windowTarget = '_blank'; const windowTarget = '_blank';
const selected = e.target;
e.stopPropagation(); window.open(todoLink, windowTarget);
e.preventDefault();
if (selected.tagName === 'IMG') {
const avatarUrl = selected.parentElement.getAttribute('href');
window.open(avatarUrl, windowTarget);
} else {
window.open(todoLink, windowTarget);
}
} else { } else {
gl.utils.visitUrl(todoLink); gl.utils.visitUrl(todoLink);
} }
......
...@@ -26,38 +26,30 @@ describe('Todos', () => { ...@@ -26,38 +26,30 @@ describe('Todos', () => {
describe('meta click', () => { describe('meta click', () => {
let visitUrlSpy; let visitUrlSpy;
let windowOpenSpy;
let metakeyEvent; let metakeyEvent;
beforeEach(() => { beforeEach(() => {
metakeyEvent = $.Event('click', { keyCode: 91, ctrlKey: true }); metakeyEvent = $.Event('click', { keyCode: 91, ctrlKey: true });
visitUrlSpy = spyOn(gl.utils, 'visitUrl').and.callFake(() => {}); visitUrlSpy = spyOn(gl.utils, 'visitUrl').and.callFake(() => {});
windowOpenSpy = spyOn(window, 'open').and.callFake(() => {});
}); });
it('opens the todo url in another tab', (done) => { it('opens the todo url in another tab', () => {
const todoLink = todoItem.dataset.url; const todoLink = todoItem.dataset.url;
spyOn(window, 'open').and.callFake((url, target) => {
expect(todoLink).toEqual(url);
expect(target).toEqual('_blank');
done();
});
$('.todos-list .todo').trigger(metakeyEvent); $('.todos-list .todo').trigger(metakeyEvent);
expect(visitUrlSpy).not.toHaveBeenCalled(); expect(visitUrlSpy).not.toHaveBeenCalled();
expect(windowOpenSpy).toHaveBeenCalledWith(todoLink, '_blank');
}); });
it('opens the avatar\'s url in another tab when the avatar is clicked', (done) => { it('run native funcionality when avatar is clicked', () => {
const avatarImage = todoItem.querySelector('img'); $('.todos-list a').on('click', e => e.preventDefault());
const avatarUrl = avatarImage.parentElement.getAttribute('href'); $('.todos-list img').trigger(metakeyEvent);
spyOn(window, 'open').and.callFake((url, target) => {
expect(avatarUrl).toEqual(url);
expect(target).toEqual('_blank');
done();
});
avatarImage.click();
expect(visitUrlSpy).not.toHaveBeenCalled(); expect(visitUrlSpy).not.toHaveBeenCalled();
expect(windowOpenSpy).not.toHaveBeenCalled();
}); });
}); });
}); });
......
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