import * as domHelper from '~/image_diff/helpers/dom_helper'; describe('domHelper', () => { describe('setPositionDataAttribute', () => { let containerEl; let attributeAfterCall; const position = { myProperty: 'myProperty', }; const options = { x: 0, y: 1, width: 10, height: 11, }; beforeEach(() => { containerEl = document.createElement('div'); containerEl.dataset.position = JSON.stringify(position); domHelper.setPositionDataAttribute(containerEl, options); attributeAfterCall = JSON.parse(containerEl.dataset.position); }); it('should set x, y, width, height', () => { expect(attributeAfterCall.x_axis).toEqual(options.x); expect(attributeAfterCall.y_axis).toEqual(options.y); expect(attributeAfterCall.width).toEqual(options.width); expect(attributeAfterCall.height).toEqual(options.height); }); it('should not override other properties', () => { expect(attributeAfterCall.myProperty).toEqual('myProperty'); }); }); describe('updateDiscussionAvatarBadgeNumber', () => { let discussionEl; const badgeNumber = 1; beforeEach(() => { discussionEl = document.createElement('div'); discussionEl.innerHTML = `
`; domHelper.updateDiscussionAvatarBadgeNumber(discussionEl, badgeNumber); }); it('should update avatar badge number', () => { expect(discussionEl.querySelector('.badge').innerText).toEqual(badgeNumber.toString()); }); }); describe('updateDiscussionBadgeNumber', () => { let discussionEl; const badgeNumber = 1; beforeEach(() => { discussionEl = document.createElement('div'); discussionEl.innerHTML = `
`; domHelper.updateDiscussionBadgeNumber(discussionEl, badgeNumber); }); it('should update discussion badge number', () => { expect(discussionEl.querySelector('.badge').innerText).toEqual(badgeNumber.toString()); }); }); describe('toggleCollapsed', () => { let element; let discussionNotesEl; beforeEach(() => { element = document.createElement('div'); element.innerHTML = `
`; discussionNotesEl = element.querySelector('.discussion-notes'); }); describe('not collapsed', () => { beforeEach(() => { domHelper.toggleCollapsed({ currentTarget: element.querySelector('button'), }); }); it('should add collapsed class', () => { expect(discussionNotesEl.classList.contains('collapsed')).toEqual(true); }); it('should force formEl to display none', () => { const formEl = element.querySelector('.discussion-form'); expect(formEl.style.display).toEqual('none'); }); }); describe('collapsed', () => { beforeEach(() => { discussionNotesEl.classList.add('collapsed'); domHelper.toggleCollapsed({ currentTarget: element.querySelector('button'), }); }); it('should remove collapsed class', () => { expect(discussionNotesEl.classList.contains('collapsed')).toEqual(false); }); it('should force formEl to display block', () => { const formEl = element.querySelector('.discussion-form'); expect(formEl.style.display).toEqual('block'); }); }); }); });