refactor and test the log folder

This commit is contained in:
Damien Mathieu 2014-01-11 16:40:51 +01:00
parent 2c079ae937
commit 6608032652
3 changed files with 46 additions and 5 deletions

View File

@ -1,5 +1,6 @@
require 'log'
require 'travis/lines_selector'
require 'travis/log_folder'
Log.DEBUG = false
Log.LIMIT = 10000
@ -48,6 +49,7 @@ Travis.reopen
@scroll = new Log.Scroll
@engine = Log.create(limit: Log.LIMIT, listeners: [@scroll])
@lineSelector = new Travis.LinesSelector(@$().find('#log'), @scroll)
@logFolder = new Travis.LogFolder(@$().find('#log'))
@observeParts()
observeParts: ->
@ -76,11 +78,6 @@ Travis.reopen
Travis.tailing.toggle()
event.preventDefault()
click: (event) ->
target = $(event.target)
if target.prop('tagName') == 'P'
target.closest('.fold').toggleClass('open')
actions:
toTop: () ->
$(window).scrollTop(0)

View File

@ -0,0 +1,8 @@
class Travis.LogFolder
constructor: (@element) ->
@element.on 'click', '.fold', (event) =>
target = $(event.target).closest('.fold')
target.toggleClass('open')
event.preventDefault()
false

View File

@ -0,0 +1,36 @@
element = jQuery('<div id="fakeLog">
<p>first line</p>
<div class="fold">
<p>second line</p>
<p>third line</p>
</div>
<p>fourth line</p>
</div>')
module "Travis.LogFolder",
setup: ->
jQuery('body').append(element)
new Travis.LogFolder jQuery('#fakeLog')
teardown: ->
element.remove()
test "displays the fold", ->
equal($('#fakeLog .fold.open').length, 0)
$('#fakeLog .fold').click()
equal($('#fakeLog .fold.open').length, 1)
test "hides the fold", ->
$('#fakeLog .fold').addClass('open')
$('#fakeLog .fold').click()
equal($('#fakeLog .fold.open').length, 0)
test "binds new elements", ->
new_element = jQuery('<div class="fold">
<p>fifth line</p>
</div>')
jQuery('#fakeLog').append new_element
equal($('#fakeLog .fold.open').length, 0)
$('#fakeLog .fold').click()
equal($('#fakeLog .fold.open').length, 2)