master
 1describe "csx.AutoViewSetup", ->
 2  subject = null
 3  logger = null
 4
 5  beforeEach ->
 6    spyOn(console, 'error')
 7    subject = new csx.AutoViewSetup()
 8
 9  describe "#execute", ->
10
11    beforeEach ->
12      csx.AutoView.views = {}
13
14    it 'attaches the autoview to the DOM element', ->
15      fixture.set '<div id="item" data-autoview="My.ChangePassword"></div>'
16      subject.execute()
17      result = csx.AutoView.views['My-ChangePassword'][0]
18      expect(result instanceof csx.Views.My.ChangePassword).toEqual(true)
19      expect($('#item').data('autoview-setup-complete')).toEqual(true)
20
21    it "returns nil if the autoview cannot be discovered", ->
22      fixture.set '<div data-autoview="Unknown"></div>'
23      subject.execute()
24
25      expect(_.isEmpty(csx.AutoView.views)).toEqual(true)
26      expect(console.error).toHaveBeenCalled()
27
28    it "attaches the auto model to the auto view", ->
29      class csx.TestView extends csx.AutoView
30        @viewName 'test-view'
31
32      class csx.Models.Test extends Backbone.Model
33        defaults:
34          test: null
35
36      fixture.set '<div id="item" data-autoview="test-view" data-automodel="Test"></div>'
37      subject.execute()
38      result = csx.AutoView.views['test-view'][0]
39      expect(result instanceof csx.TestView).toEqual(true)
40      expect(result.model instanceof csx.Models.Test).toEqual(true)