Commit 47409654 by cahrens

Skip tests instead of commenting them out (for merge that is coming).

parent 05428f5b
......@@ -70,12 +70,12 @@ describe 'Problem', ->
it 'bind the math input', ->
expect($('input.math')).toHandleWith 'keyup', @problem.refreshMath
# TODO figure out why this is failing
# it 'replace math content on the page', ->
# expect(MathJax.Hub.Queue.mostRecentCall.args).toEqual [
# ['Text', @stubbedJax, ''],
# [@problem.updateMathML, @stubbedJax, $('#input_example_1').get(0)]
# ]
# TODO: figure out why failing
xit 'replace math content on the page', ->
expect(MathJax.Hub.Queue.mostRecentCall.args).toEqual [
['Text', @stubbedJax, ''],
[@problem.updateMathML, @stubbedJax, $('#input_example_1').get(0)]
]
describe 'render', ->
beforeEach ->
......@@ -138,14 +138,14 @@ describe 'Problem', ->
@problem.check()
expect(@problem.el.html()).toEqual 'Incorrect!'
# TODO figure out why this is failing
# describe 'when the response is undetermined', ->
# it 'alert the response', ->
# spyOn window, 'alert'
# spyOn($, 'postWithPrefix').andCallFake (url, answers, callback) ->
# callback(success: 'Number Only!')
# @problem.check()
# expect(window.alert).toHaveBeenCalledWith 'Number Only!'
# TODO: figure out why failing
xdescribe 'when the response is undetermined', ->
it 'alert the response', ->
spyOn window, 'alert'
spyOn($, 'postWithPrefix').andCallFake (url, answers, callback) ->
callback(success: 'Number Only!')
@problem.check()
expect(window.alert).toHaveBeenCalledWith 'Number Only!'
describe 'reset', ->
beforeEach ->
......@@ -264,12 +264,12 @@ describe 'Problem', ->
expect($.postWithPrefix).toHaveBeenCalledWith '/problem/Problem1/problem_save',
'foo=1&bar=2', jasmine.any(Function)
# TODO figure out why this is failing
# it 'alert to the user', ->
# spyOn window, 'alert'
# spyOn($, 'postWithPrefix').andCallFake (url, answers, callback) -> callback(success: 'OK')
# @problem.save()
# expect(window.alert).toHaveBeenCalledWith 'Saved'
# TODO: figure out why failing
xit 'alert to the user', ->
spyOn window, 'alert'
spyOn($, 'postWithPrefix').andCallFake (url, answers, callback) -> callback(success: 'OK')
@problem.save()
expect(window.alert).toHaveBeenCalledWith 'Saved'
describe 'refreshMath', ->
beforeEach ->
......@@ -323,10 +323,10 @@ describe 'Problem', ->
@problem.refreshAnswers()
expect(@stubCodeMirror.save).toHaveBeenCalled()
# TODO figure out why this is failing
# it 'serialize all answers', ->
# @problem.refreshAnswers()
# expect(@problem.answers).toEqual "input_1_1=one&input_1_2=two"
# TODO: figure out why failing
xit 'serialize all answers', ->
@problem.refreshAnswers()
expect(@problem.answers).toEqual "input_1_1=one&input_1_2=two"
#describe 'VideoControl', ->
# beforeEach ->
# jasmine.stubVideoPlayer @
# $('.video-controls').html ''
#
# describe 'constructor', ->
# it 'render the video controls', ->
# new VideoControl(el: $('.video-controls'))
# expect($('.video-controls').html()).toContain '''
# <div class="slider"></div>
# <div>
# <ul class="vcr">
# <li><a class="video_control play" href="#">Play</a></li>
# <li>
# <div class="vidtime">0:00 / 0:00</div>
# </li>
# </ul>
# <div class="secondary-controls">
# <a href="#" class="add-fullscreen" title="Fill browser">Fill Browser</a>
# </div>
# </div>
# '''
#
# it 'bind the playback button', ->
# control = new VideoControl(el: $('.video-controls'))
# expect($('.video_control')).toHandleWith 'click', control.togglePlayback
#
# describe 'when on a touch based device', ->
# beforeEach ->
# spyOn(window, 'onTouchBasedDevice').andReturn true
#
# it 'does not add the play class to video control', ->
# new VideoControl(el: $('.video-controls'))
# expect($('.video_control')).not.toHaveClass 'play'
# expect($('.video_control')).not.toHaveHtml 'Play'
#
#
# describe 'when on a non-touch based device', ->
# beforeEach ->
# spyOn(window, 'onTouchBasedDevice').andReturn false
#
# it 'add the play class to video control', ->
# new VideoControl(el: $('.video-controls'))
# expect($('.video_control')).toHaveClass 'play'
# expect($('.video_control')).toHaveHtml 'Play'
#
# describe 'play', ->
# beforeEach ->
# @control = new VideoControl(el: $('.video-controls'))
# @control.play()
#
# it 'switch playback button to play state', ->
# expect($('.video_control')).not.toHaveClass 'play'
# expect($('.video_control')).toHaveClass 'pause'
# expect($('.video_control')).toHaveHtml 'Pause'
#
# describe 'pause', ->
# beforeEach ->
# @control = new VideoControl(el: $('.video-controls'))
# @control.pause()
#
# it 'switch playback button to pause state', ->
# expect($('.video_control')).not.toHaveClass 'pause'
# expect($('.video_control')).toHaveClass 'play'
# expect($('.video_control')).toHaveHtml 'Play'
#
# describe 'togglePlayback', ->
# beforeEach ->
# @control = new VideoControl(el: $('.video-controls'))
#
# describe 'when the control does not have play or pause class', ->
# beforeEach ->
# $('.video_control').removeClass('play').removeClass('pause')
#
# describe 'when the video is playing', ->
# beforeEach ->
# $('.video_control').addClass('play')
# spyOnEvent @control, 'pause'
# @control.togglePlayback jQuery.Event('click')
#
# it 'does not trigger the pause event', ->
# expect('pause').not.toHaveBeenTriggeredOn @control
#
# describe 'when the video is paused', ->
# beforeEach ->
# $('.video_control').addClass('pause')
# spyOnEvent @control, 'play'
# @control.togglePlayback jQuery.Event('click')
#
# it 'does not trigger the play event', ->
# expect('play').not.toHaveBeenTriggeredOn @control
#
# describe 'when the video is playing', ->
# beforeEach ->
# spyOnEvent @control, 'pause'
# $('.video_control').addClass 'pause'
# @control.togglePlayback jQuery.Event('click')
#
# it 'trigger the pause event', ->
# expect('pause').toHaveBeenTriggeredOn @control
#
# describe 'when the video is paused', ->
# beforeEach ->
# spyOnEvent @control, 'play'
# $('.video_control').addClass 'play'
# @control.togglePlayback jQuery.Event('click')
#
# it 'trigger the play event', ->
# expect('play').toHaveBeenTriggeredOn @control
# TODO: figure out why failing
xdescribe 'VideoControl', ->
beforeEach ->
jasmine.stubVideoPlayer @
$('.video-controls').html ''
describe 'constructor', ->
it 'render the video controls', ->
new VideoControl(el: $('.video-controls'))
expect($('.video-controls').html()).toContain '''
<div class="slider"></div>
<div>
<ul class="vcr">
<li><a class="video_control play" href="#">Play</a></li>
<li>
<div class="vidtime">0:00 / 0:00</div>
</li>
</ul>
<div class="secondary-controls">
<a href="#" class="add-fullscreen" title="Fill browser">Fill Browser</a>
</div>
</div>
'''
it 'bind the playback button', ->
control = new VideoControl(el: $('.video-controls'))
expect($('.video_control')).toHandleWith 'click', control.togglePlayback
describe 'when on a touch based device', ->
beforeEach ->
spyOn(window, 'onTouchBasedDevice').andReturn true
it 'does not add the play class to video control', ->
new VideoControl(el: $('.video-controls'))
expect($('.video_control')).not.toHaveClass 'play'
expect($('.video_control')).not.toHaveHtml 'Play'
describe 'when on a non-touch based device', ->
beforeEach ->
spyOn(window, 'onTouchBasedDevice').andReturn false
it 'add the play class to video control', ->
new VideoControl(el: $('.video-controls'))
expect($('.video_control')).toHaveClass 'play'
expect($('.video_control')).toHaveHtml 'Play'
describe 'play', ->
beforeEach ->
@control = new VideoControl(el: $('.video-controls'))
@control.play()
it 'switch playback button to play state', ->
expect($('.video_control')).not.toHaveClass 'play'
expect($('.video_control')).toHaveClass 'pause'
expect($('.video_control')).toHaveHtml 'Pause'
describe 'pause', ->
beforeEach ->
@control = new VideoControl(el: $('.video-controls'))
@control.pause()
it 'switch playback button to pause state', ->
expect($('.video_control')).not.toHaveClass 'pause'
expect($('.video_control')).toHaveClass 'play'
expect($('.video_control')).toHaveHtml 'Play'
describe 'togglePlayback', ->
beforeEach ->
@control = new VideoControl(el: $('.video-controls'))
describe 'when the control does not have play or pause class', ->
beforeEach ->
$('.video_control').removeClass('play').removeClass('pause')
describe 'when the video is playing', ->
beforeEach ->
$('.video_control').addClass('play')
spyOnEvent @control, 'pause'
@control.togglePlayback jQuery.Event('click')
it 'does not trigger the pause event', ->
expect('pause').not.toHaveBeenTriggeredOn @control
describe 'when the video is paused', ->
beforeEach ->
$('.video_control').addClass('pause')
spyOnEvent @control, 'play'
@control.togglePlayback jQuery.Event('click')
it 'does not trigger the play event', ->
expect('play').not.toHaveBeenTriggeredOn @control
describe 'when the video is playing', ->
beforeEach ->
spyOnEvent @control, 'pause'
$('.video_control').addClass 'pause'
@control.togglePlayback jQuery.Event('click')
it 'trigger the pause event', ->
expect('pause').toHaveBeenTriggeredOn @control
describe 'when the video is paused', ->
beforeEach ->
spyOnEvent @control, 'play'
$('.video_control').addClass 'play'
@control.togglePlayback jQuery.Event('click')
it 'trigger the play event', ->
expect('play').toHaveBeenTriggeredOn @control
#describe 'VideoSpeedControl', ->
# beforeEach ->
# jasmine.stubVideoPlayer @
# $('.speeds').remove()
#
# describe 'constructor', ->
# describe 'always', ->
# beforeEach ->
# @speedControl = new VideoSpeedControl el: $('.secondary-controls'), speeds: @video.speeds, currentSpeed: '1.0'
#
# it 'add the video speed control to player', ->
# expect($('.secondary-controls').html()).toContain '''
# <div class="speeds">
# <a href="#">
# <h3>Speed</h3>
# <p class="active">1.0x</p>
# </a>
# <ol class="video_speeds"><li data-speed="1.0" class="active"><a href="#">1.0x</a></li><li data-speed="0.75"><a href="#">0.75x</a></li></ol>
# </div>
# '''
#
# it 'bind to change video speed link', ->
# expect($('.video_speeds a')).toHandleWith 'click', @speedControl.changeVideoSpeed
#
# describe 'when running on touch based device', ->
# beforeEach ->
# spyOn(window, 'onTouchBasedDevice').andReturn true
# $('.speeds').removeClass 'open'
# @speedControl = new VideoSpeedControl el: $('.secondary-controls'), speeds: @video.speeds, currentSpeed: '1.0'
#
# it 'open the speed toggle on click', ->
# $('.speeds').click()
# expect($('.speeds')).toHaveClass 'open'
# $('.speeds').click()
# expect($('.speeds')).not.toHaveClass 'open'
#
# describe 'when running on non-touch based device', ->
# beforeEach ->
# spyOn(window, 'onTouchBasedDevice').andReturn false
# $('.speeds').removeClass 'open'
# @speedControl = new VideoSpeedControl el: $('.secondary-controls'), speeds: @video.speeds, currentSpeed: '1.0'
#
# it 'open the speed toggle on hover', ->
# $('.speeds').mouseenter()
# expect($('.speeds')).toHaveClass 'open'
# $('.speeds').mouseleave()
# expect($('.speeds')).not.toHaveClass 'open'
#
# it 'close the speed toggle on mouse out', ->
# $('.speeds').mouseenter().mouseleave()
# expect($('.speeds')).not.toHaveClass 'open'
#
# it 'close the speed toggle on click', ->
# $('.speeds').mouseenter().click()
# expect($('.speeds')).not.toHaveClass 'open'
#
# describe 'changeVideoSpeed', ->
# beforeEach ->
# @speedControl = new VideoSpeedControl el: $('.secondary-controls'), speeds: @video.speeds, currentSpeed: '1.0'
# @video.setSpeed '1.0'
#
# describe 'when new speed is the same', ->
# beforeEach ->
# spyOnEvent @speedControl, 'speedChange'
# $('li[data-speed="1.0"] a').click()
#
# it 'does not trigger speedChange event', ->
# expect('speedChange').not.toHaveBeenTriggeredOn @speedControl
#
# describe 'when new speed is not the same', ->
# beforeEach ->
# @newSpeed = null
# $(@speedControl).bind 'speedChange', (event, newSpeed) => @newSpeed = newSpeed
# spyOnEvent @speedControl, 'speedChange'
# $('li[data-speed="0.75"] a').click()
#
# it 'trigger speedChange event', ->
# expect('speedChange').toHaveBeenTriggeredOn @speedControl
# expect(@newSpeed).toEqual 0.75
#
# describe 'onSpeedChange', ->
# beforeEach ->
# @speedControl = new VideoSpeedControl el: $('.secondary-controls'), speeds: @video.speeds, currentSpeed: '1.0'
# $('li[data-speed="1.0"] a').addClass 'active'
# @speedControl.setSpeed '0.75'
#
# it 'set the new speed as active', ->
# expect($('.video_speeds li[data-speed="1.0"]')).not.toHaveClass 'active'
# expect($('.video_speeds li[data-speed="0.75"]')).toHaveClass 'active'
# expect($('.speeds p.active')).toHaveHtml '0.75x'
# TODO: figure out why failing
xdescribe 'VideoSpeedControl', ->
beforeEach ->
jasmine.stubVideoPlayer @
$('.speeds').remove()
describe 'constructor', ->
describe 'always', ->
beforeEach ->
@speedControl = new VideoSpeedControl el: $('.secondary-controls'), speeds: @video.speeds, currentSpeed: '1.0'
it 'add the video speed control to player', ->
expect($('.secondary-controls').html()).toContain '''
<div class="speeds">
<a href="#">
<h3>Speed</h3>
<p class="active">1.0x</p>
</a>
<ol class="video_speeds"><li data-speed="1.0" class="active"><a href="#">1.0x</a></li><li data-speed="0.75"><a href="#">0.75x</a></li></ol>
</div>
'''
it 'bind to change video speed link', ->
expect($('.video_speeds a')).toHandleWith 'click', @speedControl.changeVideoSpeed
describe 'when running on touch based device', ->
beforeEach ->
spyOn(window, 'onTouchBasedDevice').andReturn true
$('.speeds').removeClass 'open'
@speedControl = new VideoSpeedControl el: $('.secondary-controls'), speeds: @video.speeds, currentSpeed: '1.0'
it 'open the speed toggle on click', ->
$('.speeds').click()
expect($('.speeds')).toHaveClass 'open'
$('.speeds').click()
expect($('.speeds')).not.toHaveClass 'open'
describe 'when running on non-touch based device', ->
beforeEach ->
spyOn(window, 'onTouchBasedDevice').andReturn false
$('.speeds').removeClass 'open'
@speedControl = new VideoSpeedControl el: $('.secondary-controls'), speeds: @video.speeds, currentSpeed: '1.0'
it 'open the speed toggle on hover', ->
$('.speeds').mouseenter()
expect($('.speeds')).toHaveClass 'open'
$('.speeds').mouseleave()
expect($('.speeds')).not.toHaveClass 'open'
it 'close the speed toggle on mouse out', ->
$('.speeds').mouseenter().mouseleave()
expect($('.speeds')).not.toHaveClass 'open'
it 'close the speed toggle on click', ->
$('.speeds').mouseenter().click()
expect($('.speeds')).not.toHaveClass 'open'
describe 'changeVideoSpeed', ->
beforeEach ->
@speedControl = new VideoSpeedControl el: $('.secondary-controls'), speeds: @video.speeds, currentSpeed: '1.0'
@video.setSpeed '1.0'
describe 'when new speed is the same', ->
beforeEach ->
spyOnEvent @speedControl, 'speedChange'
$('li[data-speed="1.0"] a').click()
it 'does not trigger speedChange event', ->
expect('speedChange').not.toHaveBeenTriggeredOn @speedControl
describe 'when new speed is not the same', ->
beforeEach ->
@newSpeed = null
$(@speedControl).bind 'speedChange', (event, newSpeed) => @newSpeed = newSpeed
spyOnEvent @speedControl, 'speedChange'
$('li[data-speed="0.75"] a').click()
it 'trigger speedChange event', ->
expect('speedChange').toHaveBeenTriggeredOn @speedControl
expect(@newSpeed).toEqual 0.75
describe 'onSpeedChange', ->
beforeEach ->
@speedControl = new VideoSpeedControl el: $('.secondary-controls'), speeds: @video.speeds, currentSpeed: '1.0'
$('li[data-speed="1.0"] a').addClass 'active'
@speedControl.setSpeed '0.75'
it 'set the new speed as active', ->
expect($('.video_speeds li[data-speed="1.0"]')).not.toHaveClass 'active'
expect($('.video_speeds li[data-speed="0.75"]')).toHaveClass 'active'
expect($('.speeds p.active')).toHaveHtml '0.75x'
#describe 'VideoVolumeControl', ->
# beforeEach ->
# jasmine.stubVideoPlayer @
# $('.volume').remove()
#
# describe 'constructor', ->
# beforeEach ->
# spyOn($.fn, 'slider')
# @volumeControl = new VideoVolumeControl el: $('.secondary-controls')
#
# it 'initialize currentVolume to 100', ->
# expect(@volumeControl.currentVolume).toEqual 100
#
# it 'render the volume control', ->
# expect($('.secondary-controls').html()).toContain """
# <div class="volume">
# <a href="#"></a>
# <div class="volume-slider-container">
# <div class="volume-slider"></div>
# </div>
# </div>
# """
#
# it 'create the slider', ->
# expect($.fn.slider).toHaveBeenCalledWith
# orientation: "vertical"
# range: "min"
# min: 0
# max: 100
# value: 100
# change: @volumeControl.onChange
# slide: @volumeControl.onChange
#
# it 'bind the volume control', ->
# expect($('.volume>a')).toHandleWith 'click', @volumeControl.toggleMute
#
# expect($('.volume')).not.toHaveClass 'open'
# $('.volume').mouseenter()
# expect($('.volume')).toHaveClass 'open'
# $('.volume').mouseleave()
# expect($('.volume')).not.toHaveClass 'open'
#
# describe 'onChange', ->
# beforeEach ->
# spyOnEvent @volumeControl, 'volumeChange'
# @newVolume = undefined
# @volumeControl = new VideoVolumeControl el: $('.secondary-controls')
# $(@volumeControl).bind 'volumeChange', (event, volume) => @newVolume = volume
#
# describe 'when the new volume is more than 0', ->
# beforeEach ->
# @volumeControl.onChange undefined, value: 60
#
# it 'set the player volume', ->
# expect(@newVolume).toEqual 60
#
# it 'remote muted class', ->
# expect($('.volume')).not.toHaveClass 'muted'
#
# describe 'when the new volume is 0', ->
# beforeEach ->
# @volumeControl.onChange undefined, value: 0
#
# it 'set the player volume', ->
# expect(@newVolume).toEqual 0
#
# it 'add muted class', ->
# expect($('.volume')).toHaveClass 'muted'
#
# describe 'toggleMute', ->
# beforeEach ->
# @newVolume = undefined
# @volumeControl = new VideoVolumeControl el: $('.secondary-controls')
# $(@volumeControl).bind 'volumeChange', (event, volume) => @newVolume = volume
#
# describe 'when the current volume is more than 0', ->
# beforeEach ->
# @volumeControl.currentVolume = 60
# @volumeControl.toggleMute()
#
# it 'save the previous volume', ->
# expect(@volumeControl.previousVolume).toEqual 60
#
# it 'set the player volume', ->
# expect(@newVolume).toEqual 0
#
# describe 'when the current volume is 0', ->
# beforeEach ->
# @volumeControl.currentVolume = 0
# @volumeControl.previousVolume = 60
# @volumeControl.toggleMute()
#
# it 'set the player volume to previous volume', ->
# expect(@newVolume).toEqual 60
# TODO: figure out why failing
xdescribe 'VideoVolumeControl', ->
beforeEach ->
jasmine.stubVideoPlayer @
$('.volume').remove()
describe 'constructor', ->
beforeEach ->
spyOn($.fn, 'slider')
@volumeControl = new VideoVolumeControl el: $('.secondary-controls')
it 'initialize currentVolume to 100', ->
expect(@volumeControl.currentVolume).toEqual 100
it 'render the volume control', ->
expect($('.secondary-controls').html()).toContain """
<div class="volume">
<a href="#"></a>
<div class="volume-slider-container">
<div class="volume-slider"></div>
</div>
</div>
"""
it 'create the slider', ->
expect($.fn.slider).toHaveBeenCalledWith
orientation: "vertical"
range: "min"
min: 0
max: 100
value: 100
change: @volumeControl.onChange
slide: @volumeControl.onChange
it 'bind the volume control', ->
expect($('.volume>a')).toHandleWith 'click', @volumeControl.toggleMute
expect($('.volume')).not.toHaveClass 'open'
$('.volume').mouseenter()
expect($('.volume')).toHaveClass 'open'
$('.volume').mouseleave()
expect($('.volume')).not.toHaveClass 'open'
describe 'onChange', ->
beforeEach ->
spyOnEvent @volumeControl, 'volumeChange'
@newVolume = undefined
@volumeControl = new VideoVolumeControl el: $('.secondary-controls')
$(@volumeControl).bind 'volumeChange', (event, volume) => @newVolume = volume
describe 'when the new volume is more than 0', ->
beforeEach ->
@volumeControl.onChange undefined, value: 60
it 'set the player volume', ->
expect(@newVolume).toEqual 60
it 'remote muted class', ->
expect($('.volume')).not.toHaveClass 'muted'
describe 'when the new volume is 0', ->
beforeEach ->
@volumeControl.onChange undefined, value: 0
it 'set the player volume', ->
expect(@newVolume).toEqual 0
it 'add muted class', ->
expect($('.volume')).toHaveClass 'muted'
describe 'toggleMute', ->
beforeEach ->
@newVolume = undefined
@volumeControl = new VideoVolumeControl el: $('.secondary-controls')
$(@volumeControl).bind 'volumeChange', (event, volume) => @newVolume = volume
describe 'when the current volume is more than 0', ->
beforeEach ->
@volumeControl.currentVolume = 60
@volumeControl.toggleMute()
it 'save the previous volume', ->
expect(@volumeControl.previousVolume).toEqual 60
it 'set the player volume', ->
expect(@newVolume).toEqual 0
describe 'when the current volume is 0', ->
beforeEach ->
@volumeControl.currentVolume = 0
@volumeControl.previousVolume = 60
@volumeControl.toggleMute()
it 'set the player volume to previous volume', ->
expect(@newVolume).toEqual 60
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment