-
save
-
cancel
-
- -
- submodule
-
-
+
+
- """ #"
+
+
+
+
+ """
+ spyOn($.fn, 'load').andReturn(@moduleData)
+
+ @moduleEdit = new CMS.Views.ModuleEdit(
+ el: $(".component")
+ model: @stubModule
+ onDelete: jasmine.createSpy()
+ )
CMS.unbind()
- describe "defaults", ->
- it "set the correct tagName", ->
- expect(new CMS.Views.ModuleEdit(model: @stubModule).tagName).toEqual("section")
+ describe "class definition", ->
+ it "sets the correct tagName", ->
+ expect(@moduleEdit.tagName).toEqual("li")
- it "set the correct className", ->
- expect(new CMS.Views.ModuleEdit(model: @stubModule).className).toEqual("edit-pane")
+ it "sets the correct className", ->
+ expect(@moduleEdit.className).toEqual("component")
- describe "view creation", ->
- beforeEach ->
- @stubModule.editUrl.andReturn("/edit_item?id=stub_module")
- new CMS.Views.ModuleEdit(el: $("#module-edit"), model: @stubModule)
+ describe "methods", ->
+ describe "initialize", ->
+ beforeEach ->
+ spyOn(CMS.Views.ModuleEdit.prototype, 'render')
+ @moduleEdit = new CMS.Views.ModuleEdit(
+ el: $(".component")
+ model: @stubModule
+ onDelete: jasmine.createSpy()
+ )
- it "load the edit via ajax and pass to the model", ->
- expect($.fn.load).toHaveBeenCalledWith("/edit_item?id=stub_module", jasmine.any(Function))
- if $.fn.load.mostRecentCall
- $.fn.load.mostRecentCall.args[1]()
- expect(@stubModule.loadModule).toHaveBeenCalledWith($("#module-edit").get(0))
+ it "renders the module editor", ->
+ expect(@moduleEdit.render).toHaveBeenCalled()
- describe "save", ->
- beforeEach ->
- @stubJqXHR = jasmine.createSpy("stubJqXHR")
- @stubJqXHR.success = jasmine.createSpy("stubJqXHR.success").andReturn(@stubJqXHR)
- @stubJqXHR.error = jasmine.createSpy("stubJqXHR.error").andReturn(@stubJqXHR)
- @stubModule.save = jasmine.createSpy("stubModule.save").andReturn(@stubJqXHR)
- new CMS.Views.ModuleEdit(el: $(".module-edit"), model: @stubModule)
- spyOn(window, "alert")
- $(".save-update").click()
+ describe "render", ->
+ beforeEach ->
+ spyOn(@moduleEdit, 'loadDisplay')
+ spyOn(@moduleEdit, 'delegateEvents')
+ @moduleEdit.render()
- it "call save on the model", ->
- expect(@stubModule.save).toHaveBeenCalled()
+ it "loads the module preview and editor via ajax on the view element", ->
+ expect(@moduleEdit.$el.load).toHaveBeenCalledWith("/preview_component/#{@moduleEdit.model.id}", jasmine.any(Function))
+ @moduleEdit.$el.load.mostRecentCall.args[1]()
+ expect(@moduleEdit.loadDisplay).toHaveBeenCalled()
+ expect(@moduleEdit.delegateEvents).toHaveBeenCalled()
- it "alert user on success", ->
- @stubJqXHR.success.mostRecentCall.args[0]()
- expect(window.alert).toHaveBeenCalledWith("Your changes have been saved.")
+ describe "loadDisplay", ->
+ beforeEach ->
+ spyOn(XModule, 'loadModule')
+ @moduleEdit.loadDisplay()
- it "alert user on error", ->
- @stubJqXHR.error.mostRecentCall.args[0]()
- expect(window.alert).toHaveBeenCalledWith("There was an error saving your changes. Please try again.")
-
- describe "cancel", ->
- beforeEach ->
- spyOn(CMS, "popView")
- @view = new CMS.Views.ModuleEdit(el: $("#module-edit"), model: @stubModule)
- $(".cancel").click()
-
- it "pop current view from viewStack", ->
- expect(CMS.popView).toHaveBeenCalled()
-
- describe "editSubmodule", ->
- beforeEach ->
- @view = new CMS.Views.ModuleEdit(el: $("#module-edit"), model: @stubModule)
- spyOn(CMS, "pushView")
- spyOn(CMS.Views, "ModuleEdit")
- .andReturn(@view = jasmine.createSpy("Views.ModuleEdit"))
- spyOn(CMS.Models, "Module")
- .andReturn(@model = jasmine.createSpy("Models.Module"))
- $(".module-edit").click()
-
- it "push another module editing view into viewStack", ->
- expect(CMS.pushView).toHaveBeenCalledWith @view
- expect(CMS.Views.ModuleEdit).toHaveBeenCalledWith model: @model
- expect(CMS.Models.Module).toHaveBeenCalledWith
- id: "i4x://mitx/course/html/module"
- type: "html"
+ it "loads the .xmodule-display inside the module editor", ->
+ expect(XModule.loadModule).toHaveBeenCalled()
+ expect(XModule.loadModule.mostRecentCall.args[0]).toBe($('.xmodule_display'))
diff --git a/cms/static/coffee/spec/views/module_spec.coffee b/cms/static/coffee/spec/views/module_spec.coffee
deleted file mode 100644
index 826263bc41..0000000000
--- a/cms/static/coffee/spec/views/module_spec.coffee
+++ /dev/null
@@ -1,24 +0,0 @@
-describe "CMS.Views.Module", ->
- beforeEach ->
- setFixtures """
-
- """
-
- describe "edit", ->
- beforeEach ->
- @view = new CMS.Views.Module(el: $("#module"))
- spyOn(CMS, "replaceView")
- spyOn(CMS.Views, "ModuleEdit")
- .andReturn(@view = jasmine.createSpy("Views.ModuleEdit"))
- spyOn(CMS.Models, "Module")
- .andReturn(@model = jasmine.createSpy("Models.Module"))
- $(".module-edit").click()
-
- it "replace the main view with ModuleEdit view", ->
- expect(CMS.replaceView).toHaveBeenCalledWith @view
- expect(CMS.Views.ModuleEdit).toHaveBeenCalledWith model: @model
- expect(CMS.Models.Module).toHaveBeenCalledWith
- id: "i4x://mitx/course/html/module"
- type: "html"
diff --git a/cms/static/coffee/spec/views/week_edit_spec.coffee b/cms/static/coffee/spec/views/week_edit_spec.coffee
deleted file mode 100644
index 754474d77f..0000000000
--- a/cms/static/coffee/spec/views/week_edit_spec.coffee
+++ /dev/null
@@ -1,7 +0,0 @@
-describe "CMS.Views.WeekEdit", ->
- describe "defaults", ->
- it "set the correct tagName", ->
- expect(new CMS.Views.WeekEdit().tagName).toEqual("section")
-
- it "set the correct className", ->
- expect(new CMS.Views.WeekEdit().className).toEqual("edit-pane")
diff --git a/cms/static/coffee/spec/views/week_spec.coffee b/cms/static/coffee/spec/views/week_spec.coffee
deleted file mode 100644
index d5256b0a57..0000000000
--- a/cms/static/coffee/spec/views/week_spec.coffee
+++ /dev/null
@@ -1,67 +0,0 @@
-describe "CMS.Views.Week", ->
- beforeEach ->
- setFixtures """
-
- """
- CMS.unbind()
-
- describe "render", ->
- beforeEach ->
- spyOn(CMS.Views, "Module").andReturn(jasmine.createSpyObj("Module", ["render"]))
- $.fn.inlineEdit = jasmine.createSpy("$.fn.inlineEdit")
- @view = new CMS.Views.Week(el: $("#week"), height: 100).render()
-
- it "set the height of the element", ->
- expect(@view.el).toHaveCss(height: "100px")
-
- it "make .editable as inline editor", ->
- expect($.fn.inlineEdit.calls[0].object.get(0))
- .toEqual($(".editable").get(0))
-
- it "make .editable-test as inline editor", ->
- expect($.fn.inlineEdit.calls[1].object.get(0))
- .toEqual($(".editable-textarea").get(0))
-
- it "create module subview for each module", ->
- expect(CMS.Views.Module.calls[0].args[0])
- .toEqual({ el: $("#module-one").get(0) })
- expect(CMS.Views.Module.calls[1].args[0])
- .toEqual({ el: $("#module-two").get(0) })
-
- describe "edit", ->
- beforeEach ->
- new CMS.Views.Week(el: $("#week"), height: 100).render()
- spyOn(CMS, "replaceView")
- spyOn(CMS.Views, "WeekEdit")
- .andReturn(@view = jasmine.createSpy("Views.WeekEdit"))
- $(".week-edit").click()
-
- it "replace the content with edit week view", ->
- expect(CMS.replaceView).toHaveBeenCalledWith @view
- expect(CMS.Views.WeekEdit).toHaveBeenCalled()
-
- describe "on content.show", ->
- beforeEach ->
- @view = new CMS.Views.Week(el: $("#week"), height: 100).render()
- @view.$el.height("")
- @view.setHeight()
-
- it "set the correct height", ->
- expect(@view.el).toHaveCss(height: "100px")
-
- describe "on content.hide", ->
- beforeEach ->
- @view = new CMS.Views.Week(el: $("#week"), height: 100).render()
- @view.$el.height("100px")
- @view.resetHeight()
-
- it "remove height from the element", ->
- expect(@view.el).not.toHaveCss(height: "100px")
diff --git a/cms/static/coffee/src/main.coffee b/cms/static/coffee/src/main.coffee
index 57b6d1ae93..8c23d6ac99 100644
--- a/cms/static/coffee/src/main.coffee
+++ b/cms/static/coffee/src/main.coffee
@@ -6,28 +6,6 @@ AjaxPrefix.addAjaxPrefix(jQuery, -> CMS.prefix)
prefix: $("meta[name='path_prefix']").attr('content')
- viewStack: []
-
- start: (el) ->
- new CMS.Views.Course(el: el).render()
-
- replaceView: (view) ->
- @viewStack = [view]
- CMS.trigger('content.show', view)
-
- pushView: (view) ->
- @viewStack.push(view)
- CMS.trigger('content.show', view)
-
- popView: ->
- @viewStack.pop()
- if _.isEmpty(@viewStack)
- CMS.trigger('content.hide')
- else
- view = _.last(@viewStack)
- CMS.trigger('content.show', view)
- view.delegateEvents()
-
_.extend CMS, Backbone.Events
$ ->
@@ -41,7 +19,3 @@ $ ->
navigator.userAgent.match /iPhone|iPod|iPad/i
$('body').addClass 'touch-based-device' if onTouchBasedDevice()
-
-
- CMS.start($('section.main-container'))
-
diff --git a/cms/static/coffee/src/models/new_module.coffee b/cms/static/coffee/src/models/new_module.coffee
deleted file mode 100644
index 58a109225e..0000000000
--- a/cms/static/coffee/src/models/new_module.coffee
+++ /dev/null
@@ -1,5 +0,0 @@
-class CMS.Models.NewModule extends Backbone.Model
- url: '/clone_item'
-
- newUrl: ->
- "/new_item?#{$.param(parent_location: @get('parent_location'))}"
diff --git a/cms/static/coffee/src/views/course.coffee b/cms/static/coffee/src/views/course.coffee
deleted file mode 100644
index 2a5a012c07..0000000000
--- a/cms/static/coffee/src/views/course.coffee
+++ /dev/null
@@ -1,28 +0,0 @@
-class CMS.Views.Course extends Backbone.View
- initialize: ->
- CMS.on('content.show', @showContent)
- CMS.on('content.hide', @hideContent)
-
- render: ->
- @$('#weeks > li').each (index, week) =>
- new CMS.Views.Week(el: week, height: @maxWeekHeight()).render()
- return @
-
- showContent: (subview) =>
- $('body').addClass('content')
- @$('.main-content').html(subview.render().el)
- @$('.cal').css height: @contentHeight()
- @$('>section').css minHeight: @contentHeight()
-
- hideContent: =>
- $('body').removeClass('content')
- @$('.main-content').empty()
- @$('.cal').css height: ''
- @$('>section').css minHeight: ''
-
- maxWeekHeight: ->
- weekElementBorderSize = 1
- _.max($('#weeks > li').map -> $(this).height()) + weekElementBorderSize
-
- contentHeight: ->
- $(window).height() - $('body>header').outerHeight()
diff --git a/cms/static/coffee/src/views/module.coffee b/cms/static/coffee/src/views/module.coffee
deleted file mode 100644
index 1b9e39e8c2..0000000000
--- a/cms/static/coffee/src/views/module.coffee
+++ /dev/null
@@ -1,14 +0,0 @@
-class CMS.Views.Module extends Backbone.View
- events:
- "click .module-edit": "edit"
-
- edit: (event) =>
- event.preventDefault()
- previewType = @$el.data('preview-type')
- moduleType = @$el.data('type')
- CMS.replaceView new CMS.Views.ModuleEdit
- model: new CMS.Models.Module
- id: @$el.data('id')
- type: if moduleType == 'None' then null else moduleType
- previewType: if previewType == 'None' then null else previewType
-
diff --git a/cms/static/coffee/src/views/module_add.coffee b/cms/static/coffee/src/views/module_add.coffee
deleted file mode 100644
index f379174c77..0000000000
--- a/cms/static/coffee/src/views/module_add.coffee
+++ /dev/null
@@ -1,26 +0,0 @@
-class CMS.Views.ModuleAdd extends Backbone.View
- tagName: 'section'
- className: 'add-pane'
-
- events:
- 'click .cancel': 'cancel'
- 'click .save': 'save'
-
- initialize: ->
- @$el.load @model.newUrl()
-
- save: (event) ->
- event.preventDefault()
- @model.save({
- name: @$el.find('.name').val()
- template: $(event.target).data('template-id')
- }, {
- success: -> CMS.popView()
- error: -> alert('Create failed')
- })
-
- cancel: (event) ->
- event.preventDefault()
- CMS.popView()
-
-
diff --git a/cms/static/coffee/src/views/week.coffee b/cms/static/coffee/src/views/week.coffee
deleted file mode 100644
index e2b5a50d59..0000000000
--- a/cms/static/coffee/src/views/week.coffee
+++ /dev/null
@@ -1,32 +0,0 @@
-class CMS.Views.Week extends Backbone.View
- events:
- 'click .week-edit': 'edit'
- 'click .new-module': 'new'
-
- initialize: ->
- CMS.on('content.show', @resetHeight)
- CMS.on('content.hide', @setHeight)
-
- render: ->
- @setHeight()
- @$('.editable').inlineEdit()
- @$('.editable-textarea').inlineEdit(control: 'textarea')
- @$('.modules .module').each ->
- new CMS.Views.Module(el: this).render()
- return @
-
- edit: (event) ->
- event.preventDefault()
- CMS.replaceView(new CMS.Views.WeekEdit())
-
- setHeight: =>
- @$el.height(@options.height)
-
- resetHeight: =>
- @$el.height('')
-
- new: (event) =>
- event.preventDefault()
- CMS.replaceView new CMS.Views.ModuleAdd
- model: new CMS.Models.NewModule
- parent_location: @$el.data('id')
diff --git a/cms/static/coffee/src/views/week_edit.coffee b/cms/static/coffee/src/views/week_edit.coffee
deleted file mode 100644
index 3082bc9fe2..0000000000
--- a/cms/static/coffee/src/views/week_edit.coffee
+++ /dev/null
@@ -1,3 +0,0 @@
-class CMS.Views.WeekEdit extends Backbone.View
- tagName: 'section'
- className: 'edit-pane'
diff --git a/cms/templates/jasmine/base.html b/cms/templates/jasmine/base.html
deleted file mode 100644
index 0cbf63bb29..0000000000
--- a/cms/templates/jasmine/base.html
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
Jasmine Spec Runner
-
- {% load staticfiles %}
-
-
- {# core files #}
-
-
-
-
- {# source files #}
- {% for url in suite.js_files %}
-
- {% endfor %}
-
- {% load compressed %}
- {# static files #}
- {% compressed_js 'main' %}
-
- {# spec files #}
- {% compressed_js 'spec' %}
-
-
-
-
-
Jasmine Spec Runner
-
-
-
-
-
diff --git a/cms/urls.py b/cms/urls.py
index 7b3dd90a0b..8ff4e67a46 100644
--- a/cms/urls.py
+++ b/cms/urls.py
@@ -68,7 +68,7 @@ urlpatterns += (
)
-if settings.DEBUG:
+if settings.ENABLE_JASMINE:
## Jasmine
urlpatterns = urlpatterns + (url(r'^_jasmine/', include('django_jasmine.urls')),)
diff --git a/lms/templates/jasmine/base.html b/common/templates/jasmine/base.html
similarity index 87%
rename from lms/templates/jasmine/base.html
rename to common/templates/jasmine/base.html
index 199af334f9..96507bdebf 100644
--- a/lms/templates/jasmine/base.html
+++ b/common/templates/jasmine/base.html
@@ -11,6 +11,7 @@
+
{# source files #}
{% for url in suite.js_files %}
@@ -19,8 +20,7 @@
{% load compressed %}
{# static files #}
- {% compressed_js 'application' %}
- {% compressed_js 'module-js' %}
+ {% compressed_js 'js-test-source' %}
{# spec files #}
{% compressed_js 'spec' %}
@@ -32,6 +32,7 @@