Skip to content
Extraits de code Groupes Projets
views_spec.js 2,83 ko
Newer Older
  • Learn to ignore specific revisions
  • describe("app.views.Base", function(){
    
      describe("#render", function(){
        beforeEach(function(){
    
          var staticTemplateClass = app.views.Base.extend({ templateName : "static-text" })
    
    
          this.model = new Backbone.Model({text : "model attributes are in the default presenter"})
          this.view = new staticTemplateClass({model: this.model})
          this.view.render()
        })
    
        it("renders the template with the presenter", function(){
          expect($(this.view.el).text().trim()).toBe("model attributes are in the default presenter")
        })
    
        it("it evaluates the presenter every render", function(){
          this.model.set({text : "OMG It's a party" })
          this.view.render()
          expect($(this.view.el).text().trim()).toBe("OMG It's a party")
        })
    
        context("subViewRendering", function(){
          beforeEach(function(){
    
            var viewClass =  app.views.Base.extend({
    
                subviews : {
                  ".subview1": "subview1",
                  ".subview2": "createSubview2"
                },
    
                initialize : function(){
                  this.subview1 = stubView("OMG First Subview")
                },
    
                presenter: {
                  text : "this comes through on the original render"
                },
    
                postRenderTemplate : function(){
                  $(this.el).append("<div class=subview1/>")
                  $(this.el).append("<div class=subview2/>")
                },
    
                createSubview2 : function(){
                  return stubView("furreal this is the Second Subview")
                }
            })
    
            this.view = new viewClass().render()
          })
    
          it("repsects the respects the template rendered with the presenter", function(){
            expect(this.view.$('.text').text().trim()).toBe("this comes through on the original render")
          })
    
          it("renders subviews from views that are properties of the object", function(){
            expect(this.view.$('.subview1').text().trim()).toBe("OMG First Subview")
          })
    
          it("renders the sub views from functions", function(){
            expect(this.view.$('.subview2').text().trim()).toBe("furreal this is the Second Subview")
          })
        })
    
    
        context("calling out to third party plugins", function(){
          it("replaces .time with relative time ago in words", function(){
            spyOn($.fn, "timeago")
            this.view.render()
            expect($.fn.timeago).toHaveBeenCalled()
            expect($.fn.timeago.mostRecentCall.object.selector).toBe("time")
          })
    
    
          it("initializes tooltips declared with the view's tooltipSelector property", function(){
            this.view.tooltipSelector = ".christopher_columbus, .barrack_obama, .block_user"
    
            spyOn($.fn, "twipsy")
            this.view.render()
            expect($.fn.twipsy.mostRecentCall.object.selector).toBe(".christopher_columbus, .barrack_obama, .block_user")
          })
        })