Rename view/modelClass to view/modelConstructor in view provider specs

It’s a more technically correct term. You use a class keyword to declare
these things, but the actual objects you pass around to talk about them
are constructor functions.
This commit is contained in:
Nathan Sobo 2014-09-19 15:20:35 -06:00
parent e2e804483f
commit 74d772f069
2 changed files with 24 additions and 23 deletions

View File

@ -25,28 +25,29 @@ describe "ViewRegistry", ->
describe "when passed a model object", ->
describe "when a view provider is registered matching the object's constructor", ->
it "constructs a view element and assigns the model on it", ->
class TestModel
describe "when the provider has a viewConstructor property", ->
it "constructs a view element and assigns the model on it", ->
class TestModel
class TestModelSubclass extends TestModel
class TestModelSubclass extends TestModel
class TestView
setModel: (@model) ->
class TestView
setModel: (@model) ->
model = new TestModel
model = new TestModel
registry.addViewProvider
modelClass: TestModel
viewClass: TestView
registry.addViewProvider
modelConstructor: TestModel
viewConstructor: TestView
view = registry.getView(model)
expect(view instanceof TestView).toBe true
expect(view.model).toBe model
view = registry.getView(model)
expect(view instanceof TestView).toBe true
expect(view.model).toBe model
subclassModel = new TestModelSubclass
view2 = registry.getView(subclassModel)
expect(view2 instanceof TestView).toBe true
expect(view2.model).toBe subclassModel
subclassModel = new TestModelSubclass
view2 = registry.getView(subclassModel)
expect(view2 instanceof TestView).toBe true
expect(view2.model).toBe subclassModel
describe "when no view provider is registered for the object's constructor", ->
describe "when the object has a .getViewClass() method", ->
@ -75,13 +76,13 @@ describe "ViewRegistry", ->
expect(-> registry.getView(new Object)).toThrow()
describe "::addViewProvider(providerSpec)", ->
it "returns a disposable that can be used to removed the provider", ->
it "returns a disposable that can be used to remove the provider", ->
class TestModel
class TestView
setModel: (@model) ->
disposable = registry.addViewProvider
modelClass: TestModel
viewClass: TestView
modelConstructor: TestModel
viewConstructor: TestView
expect(registry.getView(new TestModel) instanceof TestView).toBe true
disposable.dispose()

View File

@ -29,15 +29,15 @@ class ViewRegistry
object[0].__spacePenView ?= object
object[0]
else if provider = @findProvider(object)
element = new provider.viewClass
element = new provider.viewConstructor
element.setModel(object)
element
else if viewClass = object?.getViewClass?()
view = new viewClass(object)
else if viewConstructor = object?.getViewClass?()
view = new viewConstructor(object)
view[0].__spacePenView ?= view
view[0]
else
throw new Error("Can't create a view for #{object.constructor.name} instance. Please register a view provider.")
findProvider: (object) ->
@providers.find ({modelClass}) -> object instanceof modelClass
@providers.find ({modelConstructor}) -> object instanceof modelConstructor