Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/javascripts/line_highlighter_spec.js')
-rw-r--r--spec/javascripts/line_highlighter_spec.js261
1 files changed, 0 insertions, 261 deletions
diff --git a/spec/javascripts/line_highlighter_spec.js b/spec/javascripts/line_highlighter_spec.js
deleted file mode 100644
index bedab0fd003..00000000000
--- a/spec/javascripts/line_highlighter_spec.js
+++ /dev/null
@@ -1,261 +0,0 @@
-/* eslint-disable dot-notation, no-return-assign, no-new, no-underscore-dangle */
-
-import $ from 'jquery';
-import LineHighlighter from '~/line_highlighter';
-
-describe('LineHighlighter', function() {
- preloadFixtures('static/line_highlighter.html');
- const clickLine = function(number, eventData = {}) {
- if ($.isEmptyObject(eventData)) {
- return $(`#L${number}`).click();
- }
- const e = $.Event('click', eventData);
- return $(`#L${number}`).trigger(e);
- };
- beforeEach(function() {
- loadFixtures('static/line_highlighter.html');
- this['class'] = new LineHighlighter();
- this.css = this['class'].highlightLineClass;
- return (this.spies = {
- __setLocationHash__: spyOn(this['class'], '__setLocationHash__').and.callFake(function() {}),
- });
- });
-
- describe('behavior', function() {
- it('highlights one line given in the URL hash', function() {
- new LineHighlighter({ hash: '#L13' });
-
- expect($('#LC13')).toHaveClass(this.css);
- });
-
- it('highlights one line given in the URL hash with given CSS class name', function() {
- const hiliter = new LineHighlighter({ hash: '#L13', highlightLineClass: 'hilite' });
-
- expect(hiliter.highlightLineClass).toBe('hilite');
- expect($('#LC13')).toHaveClass('hilite');
- expect($('#LC13')).not.toHaveClass('hll');
- });
-
- it('highlights a range of lines given in the URL hash', function() {
- new LineHighlighter({ hash: '#L5-25' });
-
- expect($(`.${this.css}`).length).toBe(21);
- for (let line = 5; line <= 25; line += 1) {
- expect($(`#LC${line}`)).toHaveClass(this.css);
- }
- });
-
- it('scrolls to the first highlighted line on initial load', function() {
- const spy = spyOn($, 'scrollTo');
- new LineHighlighter({ hash: '#L5-25' });
-
- expect(spy).toHaveBeenCalledWith('#L5', jasmine.anything());
- });
-
- it('discards click events', function() {
- const spy = spyOnEvent('a[data-line-number]', 'click');
- clickLine(13);
-
- expect(spy).toHaveBeenPrevented();
- });
-
- it('handles garbage input from the hash', function() {
- const func = function() {
- return new LineHighlighter({ fileHolderSelector: '#blob-content-holder' });
- };
-
- expect(func).not.toThrow();
- });
-
- it('handles hashchange event', () => {
- const highlighter = new LineHighlighter();
-
- spyOn(highlighter, 'highlightHash');
-
- window.dispatchEvent(new Event('hashchange'), 'L15');
-
- expect(highlighter.highlightHash).toHaveBeenCalled();
- });
- });
-
- describe('clickHandler', function() {
- it('handles clicking on a child icon element', function() {
- const spy = spyOn(this['class'], 'setHash').and.callThrough();
- $('#L13 i')
- .mousedown()
- .click();
-
- expect(spy).toHaveBeenCalledWith(13);
- expect($('#LC13')).toHaveClass(this.css);
- });
-
- describe('without shiftKey', function() {
- it('highlights one line when clicked', function() {
- clickLine(13);
-
- expect($('#LC13')).toHaveClass(this.css);
- });
-
- it('unhighlights previously highlighted lines', function() {
- clickLine(13);
- clickLine(20);
-
- expect($('#LC13')).not.toHaveClass(this.css);
- expect($('#LC20')).toHaveClass(this.css);
- });
-
- it('sets the hash', function() {
- const spy = spyOn(this['class'], 'setHash').and.callThrough();
- clickLine(13);
-
- expect(spy).toHaveBeenCalledWith(13);
- });
- });
-
- describe('with shiftKey', function() {
- it('sets the hash', function() {
- const spy = spyOn(this['class'], 'setHash').and.callThrough();
- clickLine(13);
- clickLine(20, {
- shiftKey: true,
- });
-
- expect(spy).toHaveBeenCalledWith(13);
- expect(spy).toHaveBeenCalledWith(13, 20);
- });
-
- describe('without existing highlight', function() {
- it('highlights the clicked line', function() {
- clickLine(13, {
- shiftKey: true,
- });
-
- expect($('#LC13')).toHaveClass(this.css);
- expect($(`.${this.css}`).length).toBe(1);
- });
-
- it('sets the hash', function() {
- const spy = spyOn(this['class'], 'setHash');
- clickLine(13, {
- shiftKey: true,
- });
-
- expect(spy).toHaveBeenCalledWith(13);
- });
- });
-
- describe('with existing single-line highlight', function() {
- it('uses existing line as last line when target is lesser', function() {
- clickLine(20);
- clickLine(15, {
- shiftKey: true,
- });
-
- expect($(`.${this.css}`).length).toBe(6);
- for (let line = 15; line <= 20; line += 1) {
- expect($(`#LC${line}`)).toHaveClass(this.css);
- }
- });
-
- it('uses existing line as first line when target is greater', function() {
- clickLine(5);
- clickLine(10, {
- shiftKey: true,
- });
-
- expect($(`.${this.css}`).length).toBe(6);
- for (let line = 5; line <= 10; line += 1) {
- expect($(`#LC${line}`)).toHaveClass(this.css);
- }
- });
- });
-
- describe('with existing multi-line highlight', function() {
- beforeEach(function() {
- clickLine(10, {
- shiftKey: true,
- });
- clickLine(13, {
- shiftKey: true,
- });
- });
-
- it('uses target as first line when it is less than existing first line', function() {
- clickLine(5, {
- shiftKey: true,
- });
-
- expect($(`.${this.css}`).length).toBe(6);
- for (let line = 5; line <= 10; line += 1) {
- expect($(`#LC${line}`)).toHaveClass(this.css);
- }
- });
-
- it('uses target as last line when it is greater than existing first line', function() {
- clickLine(15, {
- shiftKey: true,
- });
-
- expect($(`.${this.css}`).length).toBe(6);
- for (let line = 10; line <= 15; line += 1) {
- expect($(`#LC${line}`)).toHaveClass(this.css);
- }
- });
- });
- });
- });
-
- describe('hashToRange', function() {
- beforeEach(function() {
- this.subject = this['class'].hashToRange;
- });
-
- it('extracts a single line number from the hash', function() {
- expect(this.subject('#L5')).toEqual([5, null]);
- });
-
- it('extracts a range of line numbers from the hash', function() {
- expect(this.subject('#L5-15')).toEqual([5, 15]);
- });
-
- it('returns [null, null] when the hash is not a line number', function() {
- expect(this.subject('#foo')).toEqual([null, null]);
- });
- });
-
- describe('highlightLine', function() {
- beforeEach(function() {
- this.subject = this['class'].highlightLine;
- });
-
- it('highlights the specified line', function() {
- this.subject(13);
-
- expect($('#LC13')).toHaveClass(this.css);
- });
-
- it('accepts a String-based number', function() {
- this.subject('13');
-
- expect($('#LC13')).toHaveClass(this.css);
- });
- });
-
- describe('setHash', function() {
- beforeEach(function() {
- this.subject = this['class'].setHash;
- });
-
- it('sets the location hash for a single line', function() {
- this.subject(5);
-
- expect(this.spies.__setLocationHash__).toHaveBeenCalledWith('#L5');
- });
-
- it('sets the location hash for a range', function() {
- this.subject(5, 15);
-
- expect(this.spies.__setLocationHash__).toHaveBeenCalledWith('#L5-15');
- });
- });
-});