From fedfe8627f47660d2c84d4d39fee8ce3c6c07257 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Tue, 14 May 2013 14:50:13 -0400 Subject: [PATCH] Add tests for click events on views --- .../coffee/spec/models/feedback_spec.coffee | 2 +- .../coffee/spec/views/feedback_spec.coffee | 25 +++++++++++++++++++ cms/static/js/views/feedback.js | 7 +++++- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/cms/static/coffee/spec/models/feedback_spec.coffee b/cms/static/coffee/spec/models/feedback_spec.coffee index d9fcfd8fe1..b878be0dc7 100644 --- a/cms/static/coffee/spec/models/feedback_spec.coffee +++ b/cms/static/coffee/spec/models/feedback_spec.coffee @@ -23,6 +23,7 @@ describe "CMS.Models.SystemFeedback", -> expect(@model.get("shown")).toEqual(false) expect(spy).toHaveBeenCalled() + describe "CMS.Models.WarningMessage", -> beforeEach -> @model = new CMS.Models.WarningMessage() @@ -43,4 +44,3 @@ describe "CMS.Models.ConfirmationMessage", -> it "should have the correct type", -> expect(@model.get("type")).toEqual("confirmation") - diff --git a/cms/static/coffee/spec/views/feedback_spec.coffee b/cms/static/coffee/spec/views/feedback_spec.coffee index 28a2014059..428e4c3f30 100644 --- a/cms/static/coffee/spec/views/feedback_spec.coffee +++ b/cms/static/coffee/spec/views/feedback_spec.coffee @@ -50,3 +50,28 @@ describe "CMS.Views.SystemFeedback", -> @model.hide() # expect($("body")).not.toHaveClass("prompt-is-shown") +describe "SystemFeedback click events", -> + beforeEach -> + @model = new CMS.Models.WarningMessage( + title: "Unsaved", + message: "Your content is currently unsaved.", + actions: + primary: + text: "Save", + click: jasmine.createSpy('primaryClick') + secondary: [{ + text: "Revert", + click: jasmine.createSpy('secondaryClick') + }] + + ) + + @view = new CMS.Views.Alert({model: @model}) + + it "should trigger the primary event on a primary click", -> + @view.primaryClick() + expect(@model.get('actions').primary.click).toHaveBeenCalled() + + it "should trigger the secondary event on a secondary click", -> + @view.secondaryClick() + expect(@model.get('actions').secondary[0].click).toHaveBeenCalled() diff --git a/cms/static/js/views/feedback.js b/cms/static/js/views/feedback.js index fd580b0766..5f23a03196 100644 --- a/cms/static/js/views/feedback.js +++ b/cms/static/js/views/feedback.js @@ -38,7 +38,12 @@ CMS.Views.SystemFeedback = Backbone.View.extend({ var secondaryList = actions.secondary; if(!secondaryList) { return; } // which secondary action was clicked? - var i = _.indexOf(this.$(".action-secondary"), e.target); + var i; + if(e && e.target) { + i = _.indexOf(this.$(".action-secondary"), e.target); + } else { + i = 0; + } var secondary = this.model.get("actions").secondary[i]; if(secondary.click) { secondary.click.call(this.model);