mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-11-10 10:17:11 +03:00
66 lines
2.2 KiB
CoffeeScript
66 lines
2.2 KiB
CoffeeScript
ViewRegistry = require '../src/view-registry'
|
|
Panel = require '../src/panel'
|
|
PanelElement = require '../src/panel-element'
|
|
|
|
describe "PanelElement", ->
|
|
[jasmineContent, element, panel, viewRegistry] = []
|
|
|
|
class TestPanelItem
|
|
constructior: ->
|
|
|
|
class TestPanelItemElement extends HTMLElement
|
|
createdCallback: ->
|
|
@classList.add('test-root')
|
|
setModel: (@model) ->
|
|
TestPanelItemElement = document.registerElement 'atom-test-item-element', prototype: TestPanelItemElement.prototype
|
|
|
|
beforeEach ->
|
|
jasmineContent = document.body.querySelector('#jasmine-content')
|
|
|
|
viewRegistry = new ViewRegistry
|
|
viewRegistry.addViewProvider
|
|
modelConstructor: Panel
|
|
viewConstructor: PanelElement
|
|
viewRegistry.addViewProvider
|
|
modelConstructor: TestPanelItem
|
|
viewConstructor: TestPanelItemElement
|
|
|
|
it 'removes the element when the panel is destroyed', ->
|
|
panel = new Panel({viewRegistry, item: new TestPanelItem})
|
|
element = panel.getView()
|
|
jasmineContent.appendChild(element)
|
|
|
|
expect(element.parentNode).toBe jasmineContent
|
|
panel.destroy()
|
|
expect(element.parentNode).not.toBe jasmineContent
|
|
|
|
describe "changing panel visibility", ->
|
|
it 'initially renders panel created with visibile: false', ->
|
|
panel = new Panel({viewRegistry, visible: false, item: new TestPanelItem})
|
|
element = panel.getView()
|
|
jasmineContent.appendChild(element)
|
|
|
|
expect(element.style.display).toBe 'none'
|
|
|
|
it 'hides and shows the panel element when Panel::hide() and Panel::show() are called', ->
|
|
panel = new Panel({viewRegistry, item: new TestPanelItem})
|
|
element = panel.getView()
|
|
jasmineContent.appendChild(element)
|
|
|
|
expect(element.style.display).not.toBe 'none'
|
|
|
|
panel.hide()
|
|
expect(element.style.display).toBe 'none'
|
|
|
|
panel.show()
|
|
expect(element.style.display).not.toBe 'none'
|
|
|
|
describe "when a class name is specified", ->
|
|
it 'initially renders panel created with visibile: false', ->
|
|
panel = new Panel({viewRegistry, className: 'some classes', item: new TestPanelItem})
|
|
element = panel.getView()
|
|
jasmineContent.appendChild(element)
|
|
|
|
expect(element).toHaveClass 'some'
|
|
expect(element).toHaveClass 'classes'
|