2015-05-21 01:25:18 -04:00
|
|
|
#= require zen_mode
|
|
|
|
|
|
|
|
describe 'ZenMode', ->
|
|
|
|
fixture.preload('zen_mode.html')
|
|
|
|
|
|
|
|
beforeEach ->
|
|
|
|
fixture.load('zen_mode.html')
|
|
|
|
|
|
|
|
# Stub Dropzone.forElement(...).enable()
|
|
|
|
spyOn(Dropzone, 'forElement').and.callFake ->
|
|
|
|
enable: -> true
|
|
|
|
|
|
|
|
@zen = new ZenMode()
|
|
|
|
|
|
|
|
# Set this manually because we can't actually scroll the window
|
|
|
|
@zen.scroll_position = 456
|
|
|
|
|
|
|
|
# Ohmmmmmmm
|
|
|
|
enterZen = ->
|
|
|
|
$('.zen-toggle-comment').prop('checked', true).trigger('change')
|
|
|
|
|
|
|
|
# Wh- what was that?!
|
|
|
|
exitZen = ->
|
|
|
|
$('.zen-toggle-comment').prop('checked', false).trigger('change')
|
|
|
|
|
|
|
|
describe 'on enter', ->
|
|
|
|
it 'pauses Mousetrap', ->
|
|
|
|
spyOn(Mousetrap, 'pause')
|
|
|
|
enterZen()
|
|
|
|
expect(Mousetrap.pause).toHaveBeenCalled()
|
|
|
|
|
2015-09-04 16:35:01 -04:00
|
|
|
it 'removes textarea styling', ->
|
|
|
|
$('textarea').attr('style', 'height: 400px')
|
|
|
|
enterZen()
|
|
|
|
expect('textarea').not.toHaveAttr('style')
|
|
|
|
|
2015-05-21 01:25:18 -04:00
|
|
|
describe 'in use', ->
|
|
|
|
beforeEach ->
|
|
|
|
enterZen()
|
|
|
|
|
|
|
|
it 'exits on Escape', ->
|
|
|
|
$(document).trigger(jQuery.Event('keydown', {keyCode: 27}))
|
|
|
|
expect($('.zen-toggle-comment').prop('checked')).toBe(false)
|
|
|
|
|
|
|
|
describe 'on exit', ->
|
|
|
|
beforeEach ->
|
|
|
|
enterZen()
|
|
|
|
|
|
|
|
it 'unpauses Mousetrap', ->
|
|
|
|
spyOn(Mousetrap, 'unpause')
|
|
|
|
exitZen()
|
|
|
|
expect(Mousetrap.unpause).toHaveBeenCalled()
|
|
|
|
|
|
|
|
it 'restores the scroll position', ->
|
|
|
|
spyOn(@zen, 'restoreScroll')
|
|
|
|
exitZen()
|
|
|
|
expect(@zen.restoreScroll).toHaveBeenCalledWith(456)
|