#= 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}))