summaryrefslogtreecommitdiff
path: root/spec/javascripts/line_highlighter_spec.js.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'spec/javascripts/line_highlighter_spec.js.coffee')
-rw-r--r--spec/javascripts/line_highlighter_spec.js.coffee158
1 files changed, 0 insertions, 158 deletions
diff --git a/spec/javascripts/line_highlighter_spec.js.coffee b/spec/javascripts/line_highlighter_spec.js.coffee
deleted file mode 100644
index a073f21e7bc..00000000000
--- a/spec/javascripts/line_highlighter_spec.js.coffee
+++ /dev/null
@@ -1,158 +0,0 @@
-#= require line_highlighter
-
-describe 'LineHighlighter', ->
- fixture.preload('line_highlighter.html')
-
- clickLine = (number, eventData = {}) ->
- if $.isEmptyObject(eventData)
- $("#L#{number}").mousedown().click()
- else
- e = $.Event 'mousedown', eventData
- $("#L#{number}").trigger(e).click()
-
- beforeEach ->
- fixture.load('line_highlighter.html')
- @class = new LineHighlighter()
- @css = @class.highlightClass
- @spies = {
- __setLocationHash__: spyOn(@class, '__setLocationHash__').and.callFake ->
- }
-
- describe 'behavior', ->
- it 'highlights one line given in the URL hash', ->
- new LineHighlighter('#L13')
- expect($('#LC13')).toHaveClass(@css)
-
- it 'highlights a range of lines given in the URL hash', ->
- new LineHighlighter('#L5-25')
- expect($(".#{@css}").length).toBe(21)
- expect($("#LC#{line}")).toHaveClass(@css) for line in [5..25]
-
- it 'scrolls to the first highlighted line on initial load', ->
- spy = spyOn($, 'scrollTo')
- new LineHighlighter('#L5-25')
- expect(spy).toHaveBeenCalledWith('#L5', jasmine.anything())
-
- it 'discards click events', ->
- spy = spyOnEvent('a[data-line-number]', 'click')
- clickLine(13)
- expect(spy).toHaveBeenPrevented()
-
- it 'handles garbage input from the hash', ->
- func = -> new LineHighlighter('#blob-content-holder')
- expect(func).not.toThrow()
-
- describe '#clickHandler', ->
- it 'discards the mousedown event', ->
- spy = spyOnEvent('a[data-line-number]', 'mousedown')
- clickLine(13)
- expect(spy).toHaveBeenPrevented()
-
- it 'handles clicking on a child icon element', ->
- spy = spyOn(@class, 'setHash').and.callThrough()
-
- $('#L13 i').mousedown().click()
-
- expect(spy).toHaveBeenCalledWith(13)
- expect($('#LC13')).toHaveClass(@css)
-
- describe 'without shiftKey', ->
- it 'highlights one line when clicked', ->
- clickLine(13)
- expect($('#LC13')).toHaveClass(@css)
-
- it 'unhighlights previously highlighted lines', ->
- clickLine(13)
- clickLine(20)
-
- expect($('#LC13')).not.toHaveClass(@css)
- expect($('#LC20')).toHaveClass(@css)
-
- it 'sets the hash', ->
- spy = spyOn(@class, 'setHash').and.callThrough()
- clickLine(13)
- expect(spy).toHaveBeenCalledWith(13)
-
- describe 'with shiftKey', ->
- it 'sets the hash', ->
- spy = spyOn(@class, 'setHash').and.callThrough()
- clickLine(13)
- clickLine(20, shiftKey: true)
- expect(spy).toHaveBeenCalledWith(13)
- expect(spy).toHaveBeenCalledWith(13, 20)
-
- describe 'without existing highlight', ->
- it 'highlights the clicked line', ->
- clickLine(13, shiftKey: true)
- expect($('#LC13')).toHaveClass(@css)
- expect($(".#{@css}").length).toBe(1)
-
- it 'sets the hash', ->
- spy = spyOn(@class, 'setHash')
- clickLine(13, shiftKey: true)
- expect(spy).toHaveBeenCalledWith(13)
-
- describe 'with existing single-line highlight', ->
- it 'uses existing line as last line when target is lesser', ->
- clickLine(20)
- clickLine(15, shiftKey: true)
- expect($(".#{@css}").length).toBe(6)
- expect($("#LC#{line}")).toHaveClass(@css) for line in [15..20]
-
- it 'uses existing line as first line when target is greater', ->
- clickLine(5)
- clickLine(10, shiftKey: true)
- expect($(".#{@css}").length).toBe(6)
- expect($("#LC#{line}")).toHaveClass(@css) for line in [5..10]
-
- describe 'with existing multi-line highlight', ->
- beforeEach ->
- clickLine(10, shiftKey: true)
- clickLine(13, shiftKey: true)
-
- it 'uses target as first line when it is less than existing first line', ->
- clickLine(5, shiftKey: true)
- expect($(".#{@css}").length).toBe(6)
- expect($("#LC#{line}")).toHaveClass(@css) for line in [5..10]
-
- it 'uses target as last line when it is greater than existing first line', ->
- clickLine(15, shiftKey: true)
- expect($(".#{@css}").length).toBe(6)
- expect($("#LC#{line}")).toHaveClass(@css) for line in [10..15]
-
- describe '#hashToRange', ->
- beforeEach ->
- @subject = @class.hashToRange
-
- it 'extracts a single line number from the hash', ->
- expect(@subject('#L5')).toEqual([5, null])
-
- it 'extracts a range of line numbers from the hash', ->
- expect(@subject('#L5-15')).toEqual([5, 15])
-
- it 'returns [null, null] when the hash is not a line number', ->
- expect(@subject('#foo')).toEqual([null, null])
-
- describe '#highlightLine', ->
- beforeEach ->
- @subject = @class.highlightLine
-
- it 'highlights the specified line', ->
- @subject(13)
- expect($('#LC13')).toHaveClass(@css)
-
- it 'accepts a String-based number', ->
- @subject('13')
- expect($('#LC13')).toHaveClass(@css)
-
- describe '#setHash', ->
- beforeEach ->
- @subject = @class.setHash
-
- it 'sets the location hash for a single line', ->
- @subject(5)
- expect(@spies.__setLocationHash__).toHaveBeenCalledWith('#L5')
-
- it 'sets the location hash for a range', ->
- @subject(5, 15)
- expect(@spies.__setLocationHash__).toHaveBeenCalledWith('#L5-15')