pulsar/spec/dock-spec.js

124 lines
4.5 KiB
JavaScript
Raw Normal View History

/** @babel */
import {it, fit, ffit, fffit, beforeEach, afterEach} from './async-spec-helpers'
describe('Dock', () => {
describe('when a dock is activated', () => {
it('opens the dock and activates its active pane', () => {
2017-04-06 01:15:21 +03:00
jasmine.attachToDOM(atom.workspace.getElement())
const dock = atom.workspace.getLeftDock()
expect(dock.isVisible()).toBe(false)
expect(document.activeElement).toBe(atom.workspace.getCenter().getActivePane().getElement())
dock.activate()
expect(dock.isVisible()).toBe(true)
expect(document.activeElement).toBe(dock.getActivePane().getElement())
})
})
describe('when a dock is hidden', () => {
it('transfers focus back to the active center pane', () => {
jasmine.attachToDOM(atom.workspace.getElement())
const dock = atom.workspace.getLeftDock()
dock.activate()
expect(document.activeElement).toBe(dock.getActivePane().getElement())
dock.hide()
expect(document.activeElement).toBe(atom.workspace.getCenter().getActivePane().getElement())
dock.activate()
expect(document.activeElement).toBe(dock.getActivePane().getElement())
dock.toggle()
expect(document.activeElement).toBe(atom.workspace.getCenter().getActivePane().getElement())
})
})
describe('when a pane in a dock is activated', () => {
it('opens the dock', async () => {
const item = {
element: document.createElement('div'),
getDefaultLocation() { return 'left' }
}
await atom.workspace.open(item, {activatePane: false})
expect(atom.workspace.getLeftDock().isVisible()).toBe(false)
atom.workspace.getLeftDock().getPanes()[0].activate()
expect(atom.workspace.getLeftDock().isVisible()).toBe(true)
})
})
describe('when the dock resize handle is double-clicked', () => {
describe('when the dock is open', () => {
it('resizes a vertically-oriented dock to the current item\'s preferred width', async () => {
2017-04-06 01:15:21 +03:00
jasmine.attachToDOM(atom.workspace.getElement())
const item = {
element: document.createElement('div'),
getDefaultLocation() { return 'left' },
getPreferredWidth() { return 142 },
getPreferredHeight() { return 122 }
}
await atom.workspace.open(item)
const dock = atom.workspace.getLeftDock()
const dockElement = dock.getElement()
dock.setState({size: 300})
expect(dockElement.offsetWidth).toBe(300)
dockElement.querySelector('.atom-dock-resize-handle').dispatchEvent(new MouseEvent('mousedown', {detail: 2}))
expect(dockElement.offsetWidth).toBe(item.getPreferredWidth())
})
it('resizes a horizontally-oriented dock to the current item\'s preferred width', async () => {
2017-04-06 01:15:21 +03:00
jasmine.attachToDOM(atom.workspace.getElement())
const item = {
element: document.createElement('div'),
getDefaultLocation() { return 'bottom' },
getPreferredWidth() { return 122 },
getPreferredHeight() { return 142 }
}
await atom.workspace.open(item)
const dock = atom.workspace.getBottomDock()
const dockElement = dock.getElement()
dock.setState({size: 300})
expect(dockElement.offsetHeight).toBe(300)
dockElement.querySelector('.atom-dock-resize-handle').dispatchEvent(new MouseEvent('mousedown', {detail: 2}))
expect(dockElement.offsetHeight).toBe(item.getPreferredHeight())
})
})
describe('when the dock is closed', () => {
it('does nothing', async () => {
2017-04-06 01:15:21 +03:00
jasmine.attachToDOM(atom.workspace.getElement())
const item = {
element: document.createElement('div'),
getDefaultLocation() { return 'bottom' },
getPreferredWidth() { return 122 },
getPreferredHeight() { return 142 }
}
await atom.workspace.open(item, {activatePane: false})
const dockElement = atom.workspace.getBottomDock().getElement()
dockElement.querySelector('.atom-dock-resize-handle').dispatchEvent(new MouseEvent('mousedown', {detail: 2}))
expect(dockElement.offsetHeight).toBe(0)
// There should still be a hoverable, absolutely-positioned element so users can reveal the
// toggle affordance even when fullscreened.
expect(dockElement.querySelector('.atom-dock-inner').offsetHeight).toBe(1)
// The content should be masked away.
expect(dockElement.querySelector('.atom-dock-mask').offsetHeight).toBe(0)
})
})
})
})