mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-12-29 11:52:34 +08:00
97 lines
3.7 KiB
CoffeeScript
97 lines
3.7 KiB
CoffeeScript
|
Panel = require '../src/panel'
|
||
|
PanelContainer = require '../src/panel-container'
|
||
|
|
||
|
describe "PanelContainer", ->
|
||
|
[container] = []
|
||
|
|
||
|
class TestPanelItem
|
||
|
constructior: ->
|
||
|
|
||
|
beforeEach ->
|
||
|
container = new PanelContainer
|
||
|
|
||
|
describe "::addPanel(panel)", ->
|
||
|
it 'emits an onDidAddPanel event with the index the panel was inserted at', ->
|
||
|
container.onDidAddPanel addPanelSpy = jasmine.createSpy()
|
||
|
|
||
|
panel1 = new Panel(item: new TestPanelItem())
|
||
|
container.addPanel(panel1)
|
||
|
expect(addPanelSpy).toHaveBeenCalledWith({panel: panel1, index: 0})
|
||
|
|
||
|
panel2 = new Panel(item: new TestPanelItem())
|
||
|
container.addPanel(panel2)
|
||
|
expect(addPanelSpy).toHaveBeenCalledWith({panel: panel2, index: 1})
|
||
|
|
||
|
describe "when a panel is destroyed", ->
|
||
|
it 'emits an onDidRemovePanel event with the index of the removed item', ->
|
||
|
container.onDidRemovePanel removePanelSpy = jasmine.createSpy()
|
||
|
|
||
|
panel1 = new Panel(item: new TestPanelItem())
|
||
|
container.addPanel(panel1)
|
||
|
panel2 = new Panel(item: new TestPanelItem())
|
||
|
container.addPanel(panel2)
|
||
|
|
||
|
expect(removePanelSpy).not.toHaveBeenCalled()
|
||
|
|
||
|
panel2.destroy()
|
||
|
expect(removePanelSpy).toHaveBeenCalledWith({panel: panel2, index: 1})
|
||
|
|
||
|
panel1.destroy()
|
||
|
expect(removePanelSpy).toHaveBeenCalledWith({panel: panel1, index: 0})
|
||
|
|
||
|
describe "panel priority", ->
|
||
|
describe 'left / top panel container', ->
|
||
|
[initialPanel] = []
|
||
|
beforeEach ->
|
||
|
# 'left' logic is the same as 'top'
|
||
|
container = new PanelContainer({location: 'left'})
|
||
|
initialPanel = new Panel(item: new TestPanelItem())
|
||
|
container.addPanel(initialPanel)
|
||
|
|
||
|
describe 'when a panel with low priority is added', ->
|
||
|
it 'is inserted at the beginning of the list', ->
|
||
|
container.onDidAddPanel addPanelSpy = jasmine.createSpy()
|
||
|
panel = new Panel(item: new TestPanelItem(), priority: 0)
|
||
|
container.addPanel(panel)
|
||
|
|
||
|
expect(addPanelSpy).toHaveBeenCalledWith({panel, index: 0})
|
||
|
expect(container.getPanels()[0]).toBe panel
|
||
|
|
||
|
describe 'when a panel with priority between two other panels is added', ->
|
||
|
it 'is inserted at the between the two panels', ->
|
||
|
panel = new Panel(item: new TestPanelItem(), priority: 1000)
|
||
|
container.addPanel(panel)
|
||
|
|
||
|
container.onDidAddPanel addPanelSpy = jasmine.createSpy()
|
||
|
panel = new Panel(item: new TestPanelItem(), priority: 101)
|
||
|
container.addPanel(panel)
|
||
|
|
||
|
expect(addPanelSpy).toHaveBeenCalledWith({panel, index: 1})
|
||
|
expect(container.getPanels()[1]).toBe panel
|
||
|
|
||
|
describe 'right / bottom panel container', ->
|
||
|
[initialPanel] = []
|
||
|
beforeEach ->
|
||
|
# 'bottom' logic is the same as 'right'
|
||
|
container = new PanelContainer({location: 'right'})
|
||
|
initialPanel = new Panel(item: new TestPanelItem())
|
||
|
container.addPanel(initialPanel)
|
||
|
|
||
|
describe 'when a panel with high priority is added', ->
|
||
|
it 'is inserted at the beginning of the list', ->
|
||
|
container.onDidAddPanel addPanelSpy = jasmine.createSpy()
|
||
|
panel = new Panel(item: new TestPanelItem(), priority: 1000)
|
||
|
container.addPanel(panel)
|
||
|
|
||
|
expect(addPanelSpy).toHaveBeenCalledWith({panel, index: 0})
|
||
|
expect(container.getPanels()[0]).toBe panel
|
||
|
|
||
|
describe 'when a panel with low priority is added', ->
|
||
|
it 'is inserted at the end of the list', ->
|
||
|
container.onDidAddPanel addPanelSpy = jasmine.createSpy()
|
||
|
panel = new Panel(item: new TestPanelItem(), priority: 0)
|
||
|
container.addPanel(panel)
|
||
|
|
||
|
expect(addPanelSpy).toHaveBeenCalledWith({panel, index: 1})
|
||
|
expect(container.getPanels()[1]).toBe panel
|