gitlab-org--gitlab-foss/spec/javascripts/zen_mode_spec.js.coffee

52 lines
1.3 KiB
CoffeeScript

#= 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
describe 'on enter', ->
it 'pauses Mousetrap', ->
spyOn(Mousetrap, 'pause')
enterZen()
expect(Mousetrap.pause).toHaveBeenCalled()
it 'removes textarea styling', ->
$('textarea').attr('style', 'height: 400px')
enterZen()
expect('textarea').not.toHaveAttr('style')
describe 'in use', ->
beforeEach -> enterZen()
it 'exits on Escape', ->
escapeKeydown()
expect($('.zen-backdrop')).not.toHaveClass('fullscreen')
describe 'on exit', ->
beforeEach -> enterZen()
it 'unpauses Mousetrap', ->
spyOn(Mousetrap, 'unpause')
exitZen()
expect(Mousetrap.unpause).toHaveBeenCalled()
it 'restores the scroll position', ->
spyOn(@zen, 'scrollTo')
exitZen()
expect(@zen.scrollTo).toHaveBeenCalled()
enterZen = -> $('a.js-zen-enter').click() # Ohmmmmmmm
exitZen = -> $('a.js-zen-leave').click()
escapeKeydown = -> $('textarea').trigger($.Event('keydown', {keyCode: 27}))