mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-11-10 10:17:11 +03:00
54 lines
1.5 KiB
CoffeeScript
54 lines
1.5 KiB
CoffeeScript
{View, $$} = require 'atom'
|
|
|
|
describe "SpacePen extensions", ->
|
|
class TestView extends View
|
|
@content: -> @div()
|
|
|
|
[view, parent] = []
|
|
|
|
beforeEach ->
|
|
view = new TestView
|
|
parent = $$ -> @div()
|
|
parent.append(view)
|
|
|
|
describe "View.observeConfig(keyPath, callback)", ->
|
|
observeHandler = null
|
|
|
|
beforeEach ->
|
|
observeHandler = jasmine.createSpy("observeHandler")
|
|
view.observeConfig "foo.bar", observeHandler
|
|
expect(view.hasParent()).toBeTruthy()
|
|
|
|
it "observes the keyPath and cancels the subscription when `.unobserveConfig()` is called", ->
|
|
expect(observeHandler).toHaveBeenCalledWith(undefined)
|
|
observeHandler.reset()
|
|
|
|
atom.config.set("foo.bar", "hello")
|
|
|
|
expect(observeHandler).toHaveBeenCalledWith("hello", previous: undefined)
|
|
observeHandler.reset()
|
|
|
|
view.unobserveConfig()
|
|
|
|
atom.config.set("foo.bar", "goodbye")
|
|
|
|
expect(observeHandler).not.toHaveBeenCalled()
|
|
|
|
it "unobserves when the view is removed", ->
|
|
observeHandler.reset()
|
|
parent.remove()
|
|
atom.config.set("foo.bar", "hello")
|
|
expect(observeHandler).not.toHaveBeenCalled()
|
|
|
|
describe "View.subscribe(eventEmitter, eventName, callback)", ->
|
|
[emitter, eventHandler] = []
|
|
|
|
beforeEach ->
|
|
eventHandler = jasmine.createSpy 'eventHandler'
|
|
emitter = $$ -> @div()
|
|
view.subscribe emitter, 'foo', eventHandler
|
|
|
|
it "subscribes to the given event emitter and unsubscribes when unsubscribe is called", ->
|
|
emitter.trigger "foo"
|
|
expect(eventHandler).toHaveBeenCalled()
|