Got jasmine tests working with fixtures properly

This commit is contained in:
David Baumgold
2013-05-14 13:23:01 -04:00
parent 0c368011da
commit 10ec604630
3 changed files with 26 additions and 9 deletions

View File

@@ -0,0 +1 @@
../../../templates/js/system-feedback.underscore

View File

@@ -1,3 +1,5 @@
jasmine.getFixtures().fixturesPath = 'fixtures'
# Stub jQuery.cookie
@stubCookies =
csrftoken: "stubCSRFToken"

View File

@@ -1,19 +1,19 @@
describe "CMS.Views.SystemFeedback", ->
tpl = readFixtures('system-feedback.underscore')
# CMS.Views.SystemFeedback looks for a template on the page when the code
# is loaded, and even if we set that template on the page using a fixture,
# CMS.Views.SystemFeedback has already been loaded, and so that template
# won't be picked up. This is a dirty hack, to load that template into
# the code after the code has been loaded already.
CMS.Views.SystemFeedback.prototype.template = _.template(tpl)
beforeEach ->
setFixtures(sandbox({id: "page-notification"}))
# CMS.Views.SystemFeedback looks for a template on the page when the code
# is loaded, and even if we set that template on the page using a fixture,
# CMS.Views.SystemFeedback has already been loaded, and so that template
# won't be picked up. This is a dirty hack, to load that template into
# the code after the code has been loaded already.
CMS.Views.SystemFeedback.prototype.template = _.template """
<h1><%= title %></h1>
<p><%= message %></p>
"""
@model = new CMS.Models.ConfirmationMessage({
"title": "Portal"
"message": "Welcome to the Aperture Science Computer-Aided Enrichment Center"
close: true
})
# it will be interesting to see when this.render is called, so lets spy on it
spyOn(CMS.Views.SystemFeedback.prototype, 'render').andCallThrough()
@@ -24,7 +24,21 @@ describe "CMS.Views.SystemFeedback", ->
it "renders the template", ->
view = new CMS.Views.Notification({model: @model})
expect(view.$(".action-close")).toBeDefined()
expect(view.$('.wrapper')).toHaveClass("is-shown")
text = view.$el.text()
expect(text).toMatch(/Portal/)
expect(text).toMatch(/Aperture Science/)
it "close button sends a .hide() message", ->
spyOn(CMS.Views.SystemFeedback.prototype, 'hide').andCallThrough()
view = new CMS.Views.Notification({model: @model})
view.$(".action-close").click()
expect(CMS.Views.SystemFeedback.prototype.hide).toHaveBeenCalled()
expect(view.$('.wrapper')).not.toHaveClass("is-shown")
expect(view.$('.wrapper')).toHaveClass("is-hiding")