diff options
Diffstat (limited to 'spec/javascripts/line_highlighter_spec.js')
-rw-r--r-- | spec/javascripts/line_highlighter_spec.js | 130 |
1 files changed, 77 insertions, 53 deletions
diff --git a/spec/javascripts/line_highlighter_spec.js b/spec/javascripts/line_highlighter_spec.js index 15bb78032b2..84cbb47a69e 100644 --- a/spec/javascripts/line_highlighter_spec.js +++ b/spec/javascripts/line_highlighter_spec.js @@ -1,4 +1,4 @@ -/* eslint-disable no-var, prefer-template, no-else-return, dot-notation, no-return-assign, no-new, one-var, no-underscore-dangle */ +/* eslint-disable no-var, prefer-template, no-else-return, dot-notation, no-return-assign, no-new, no-underscore-dangle */ import $ from 'jquery'; import LineHighlighter from '~/line_highlighter'; @@ -27,39 +27,42 @@ import LineHighlighter from '~/line_highlighter'; describe('behavior', function() { it('highlights one line given in the URL hash', function() { new LineHighlighter({ hash: '#L13' }); - return expect($('#LC13')).toHaveClass(this.css); + + 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() { - var line, results; + var line; new LineHighlighter({ hash: '#L5-25' }); + expect($("." + this.css).length).toBe(21); - results = []; for (line = 5; line <= 25; line += 1) { - results.push(expect($("#LC" + line)).toHaveClass(this.css)); + expect($("#LC" + line)).toHaveClass(this.css); } - return results; }); it('scrolls to the first highlighted line on initial load', function() { var spy; spy = spyOn($, 'scrollTo'); new LineHighlighter({ hash: '#L5-25' }); - return expect(spy).toHaveBeenCalledWith('#L5', jasmine.anything()); + + expect(spy).toHaveBeenCalledWith('#L5', jasmine.anything()); }); it('discards click events', function() { var spy; spy = spyOnEvent('a[data-line-number]', 'click'); clickLine(13); - return expect(spy).toHaveBeenPrevented(); + + expect(spy).toHaveBeenPrevented(); }); it('handles garbage input from the hash', function() { @@ -67,7 +70,8 @@ import LineHighlighter from '~/line_highlighter'; func = function() { return new LineHighlighter({ fileHolderSelector: '#blob-content-holder' }); }; - return expect(func).not.toThrow(); + + expect(func).not.toThrow(); }); }); @@ -76,30 +80,36 @@ import LineHighlighter from '~/line_highlighter'; var spy; spy = spyOn(this["class"], 'setHash').and.callThrough(); $('#L13 i').mousedown().click(); + expect(spy).toHaveBeenCalledWith(13); - return expect($('#LC13')).toHaveClass(this.css); + expect($('#LC13')).toHaveClass(this.css); }); describe('without shiftKey', function() { it('highlights one line when clicked', function() { clickLine(13); - return expect($('#LC13')).toHaveClass(this.css); + + expect($('#LC13')).toHaveClass(this.css); }); it('unhighlights previously highlighted lines', function() { clickLine(13); clickLine(20); + expect($('#LC13')).not.toHaveClass(this.css); - return expect($('#LC20')).toHaveClass(this.css); + expect($('#LC20')).toHaveClass(this.css); }); - return it('sets the hash', function() { + + it('sets the hash', function() { var spy; spy = spyOn(this["class"], 'setHash').and.callThrough(); clickLine(13); - return expect(spy).toHaveBeenCalledWith(13); + + expect(spy).toHaveBeenCalledWith(13); }); }); - return describe('with shiftKey', function() { + + describe('with shiftKey', function() { it('sets the hash', function() { var spy; spy = spyOn(this["class"], 'setHash').and.callThrough(); @@ -107,8 +117,9 @@ import LineHighlighter from '~/line_highlighter'; clickLine(20, { shiftKey: true }); + expect(spy).toHaveBeenCalledWith(13); - return expect(spy).toHaveBeenCalledWith(13, 20); + expect(spy).toHaveBeenCalledWith(13, 20); }); describe('without existing highlight', function() { @@ -116,80 +127,82 @@ import LineHighlighter from '~/line_highlighter'; clickLine(13, { shiftKey: true }); + expect($('#LC13')).toHaveClass(this.css); - return expect($("." + this.css).length).toBe(1); + expect($("." + this.css).length).toBe(1); }); - return it('sets the hash', function() { + + it('sets the hash', function() { var spy; spy = spyOn(this["class"], 'setHash'); clickLine(13, { shiftKey: true }); - return expect(spy).toHaveBeenCalledWith(13); + + expect(spy).toHaveBeenCalledWith(13); }); }); describe('with existing single-line highlight', function() { it('uses existing line as last line when target is lesser', function() { - var line, results; + var line; clickLine(20); clickLine(15, { shiftKey: true }); + expect($("." + this.css).length).toBe(6); - results = []; for (line = 15; line <= 20; line += 1) { - results.push(expect($("#LC" + line)).toHaveClass(this.css)); + expect($("#LC" + line)).toHaveClass(this.css); } - return results; }); - return it('uses existing line as first line when target is greater', function() { - var line, results; + + it('uses existing line as first line when target is greater', function() { + var line; clickLine(5); clickLine(10, { shiftKey: true }); + expect($("." + this.css).length).toBe(6); - results = []; for (line = 5; line <= 10; line += 1) { - results.push(expect($("#LC" + line)).toHaveClass(this.css)); + expect($("#LC" + line)).toHaveClass(this.css); } - return results; }); }); - return describe('with existing multi-line highlight', function() { + + describe('with existing multi-line highlight', function() { beforeEach(function() { clickLine(10, { shiftKey: true }); - return clickLine(13, { + clickLine(13, { shiftKey: true }); }); it('uses target as first line when it is less than existing first line', function() { - var line, results; + var line; clickLine(5, { shiftKey: true }); + expect($("." + this.css).length).toBe(6); - results = []; for (line = 5; line <= 10; line += 1) { - results.push(expect($("#LC" + line)).toHaveClass(this.css)); + expect($("#LC" + line)).toHaveClass(this.css); } - return results; }); - return it('uses target as last line when it is greater than existing first line', function() { - var line, results; + + it('uses target as last line when it is greater than existing first line', function() { + var line; clickLine(15, { shiftKey: true }); + expect($("." + this.css).length).toBe(6); - results = []; for (line = 10; line <= 15; line += 1) { - results.push(expect($("#LC" + line)).toHaveClass(this.css)); + expect($("#LC" + line)).toHaveClass(this.css); } - return results; }); }); }); @@ -197,47 +210,58 @@ import LineHighlighter from '~/line_highlighter'; describe('hashToRange', function() { beforeEach(function() { - return this.subject = this["class"].hashToRange; + this.subject = this["class"].hashToRange; }); it('extracts a single line number from the hash', function() { - return expect(this.subject('#L5')).toEqual([5, null]); + + expect(this.subject('#L5')).toEqual([5, null]); }); it('extracts a range of line numbers from the hash', function() { - return expect(this.subject('#L5-15')).toEqual([5, 15]); + + expect(this.subject('#L5-15')).toEqual([5, 15]); }); - return it('returns [null, null] when the hash is not a line number', function() { - return expect(this.subject('#foo')).toEqual([null, null]); + + 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() { - return this.subject = this["class"].highlightLine; + this.subject = this["class"].highlightLine; }); it('highlights the specified line', function() { this.subject(13); - return expect($('#LC13')).toHaveClass(this.css); + + expect($('#LC13')).toHaveClass(this.css); }); - return it('accepts a String-based number', function() { + + it('accepts a String-based number', function() { this.subject('13'); - return expect($('#LC13')).toHaveClass(this.css); + + expect($('#LC13')).toHaveClass(this.css); }); }); - return describe('setHash', function() { + + describe('setHash', function() { beforeEach(function() { - return this.subject = this["class"].setHash; + this.subject = this["class"].setHash; }); it('sets the location hash for a single line', function() { this.subject(5); - return expect(this.spies.__setLocationHash__).toHaveBeenCalledWith('#L5'); + + expect(this.spies.__setLocationHash__).toHaveBeenCalledWith('#L5'); }); - return it('sets the location hash for a range', function() { + + it('sets the location hash for a range', function() { this.subject(5, 15); - return expect(this.spies.__setLocationHash__).toHaveBeenCalledWith('#L5-15'); + + expect(this.spies.__setLocationHash__).toHaveBeenCalledWith('#L5-15'); }); }); }); |