summaryrefslogtreecommitdiff
path: root/spec/javascripts/line_highlighter_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/javascripts/line_highlighter_spec.js')
-rw-r--r--spec/javascripts/line_highlighter_spec.js130
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');
});
});
});