diff options
Diffstat (limited to 'spec/frontend/vue_shared/components/source_viewer/utils_spec.js')
-rw-r--r-- | spec/frontend/vue_shared/components/source_viewer/utils_spec.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/spec/frontend/vue_shared/components/source_viewer/utils_spec.js b/spec/frontend/vue_shared/components/source_viewer/utils_spec.js new file mode 100644 index 00000000000..0ac72aa9afb --- /dev/null +++ b/spec/frontend/vue_shared/components/source_viewer/utils_spec.js @@ -0,0 +1,35 @@ +import { setHTMLFixture } from 'helpers/fixtures'; +import { + calculateBlameOffset, + toggleBlameClasses, +} from '~/vue_shared/components/source_viewer/utils'; +import { SOURCE_CODE_CONTENT_MOCK, BLAME_DATA_MOCK } from './mock_data'; + +describe('SourceViewer utils', () => { + beforeEach(() => setHTMLFixture(SOURCE_CODE_CONTENT_MOCK)); + + const findContent = () => document.querySelector('.content'); + + describe('calculateBlameOffset', () => { + it('returns an offset of zero if line number === 1', () => { + expect(calculateBlameOffset(1)).toBe('0px'); + }); + + it('calculates an offset for the blame component', () => { + const { offsetTop } = document.querySelector('#LC3'); + expect(calculateBlameOffset(3)).toBe(`${offsetTop}px`); + }); + }); + + describe('toggleBlameClasses', () => { + it('adds classes', () => { + toggleBlameClasses(BLAME_DATA_MOCK, true); + expect(findContent()).toMatchSnapshot(); + }); + + it('removes classes', () => { + toggleBlameClasses(BLAME_DATA_MOCK, false); + expect(findContent()).toMatchSnapshot(); + }); + }); +}); |