Return disposable from ViewRegistry::addViewProvider

This commit is contained in:
Nathan Sobo
2014-09-19 14:44:25 -06:00
parent e084e13ea3
commit e2e804483f
2 changed files with 18 additions and 2 deletions

View File

@@ -73,3 +73,16 @@ describe "ViewRegistry", ->
describe "when the object has no .getViewClass() method", ->
it "throws an exception", ->
expect(-> registry.getView(new Object)).toThrow()
describe "::addViewProvider(providerSpec)", ->
it "returns a disposable that can be used to removed the provider", ->
class TestModel
class TestView
setModel: (@model) ->
disposable = registry.addViewProvider
modelClass: TestModel
viewClass: TestView
expect(registry.getView(new TestModel) instanceof TestView).toBe true
disposable.dispose()
expect(-> registry.getView(new TestModel)).toThrow()

View File

@@ -1,3 +1,4 @@
{Disposable} = require 'event-kit'
{jQuery} = require './space-pen-extensions'
module.exports =
@@ -6,8 +7,10 @@ class ViewRegistry
@views = new WeakMap
@providers = []
addViewProvider: (provider) ->
@providers.push(provider)
addViewProvider: (providerSpec) ->
@providers.push(providerSpec)
new Disposable =>
@providers = @providers.filter (provider) -> provider isnt providerSpec
getView: (object) ->
return unless object?