diff --git a/common/lib/xmodule/xmodule/js/fixtures/xmodule.html b/common/lib/xmodule/xmodule/js/fixtures/xmodule.html index 392a6c9698..525b4323b7 100644 --- a/common/lib/xmodule/xmodule/js/fixtures/xmodule.html +++ b/common/lib/xmodule/xmodule/js/fixtures/xmodule.html @@ -1,7 +1,7 @@
-
+ data-problem-id='i4x://edX/101/problem/Problem1' + data-url='/problem/Problem1'>
\ No newline at end of file diff --git a/common/lib/xmodule/xmodule/js/spec/capa/display_spec.coffee b/common/lib/xmodule/xmodule/js/spec/capa/display_spec.coffee index ebe9eacfc9..f9067d8e55 100644 --- a/common/lib/xmodule/xmodule/js/spec/capa/display_spec.coffee +++ b/common/lib/xmodule/xmodule/js/spec/capa/display_spec.coffee @@ -8,7 +8,10 @@ describe 'Problem', -> MathJax.Hub.getAllJax.andReturn [@stubbedJax] window.update_schematics = -> - # load this function from spec/helper.coffee + # Load this function from spec/helper.coffee + # Note that if your test fails with a message like: + # 'External request attempted for blah, which is not defined.' + # this msg is coming from the stubRequests function else clause. jasmine.stubRequests() # note that the fixturesPath is set in spec/helper.coffee @@ -34,8 +37,8 @@ describe 'Problem', -> expect(@problem999.element_id).toBe 'problem_999' it 'set the element from loadFixtures', -> - @problem101 = new Problem($('.xmodule_display')) - expect(@problem101.element_id).toBe 'problem_101' + @problem1 = new Problem($('.xmodule_display')) + expect(@problem1.element_id).toBe 'problem_1' describe 'bind', -> beforeEach -> @@ -53,7 +56,7 @@ describe 'Problem', -> expect($('section.action input:button')).toHandleWith 'click', @problem.refreshAnswers it 'bind the check button', -> - expect($('section.action input.check')).toHandleWith 'click', @problem.check + expect($('section.action input.check')).toHandleWith 'click', @problem.check_fd it 'bind the reset button', -> expect($('section.action input.reset')).toHandleWith 'click', @problem.reset @@ -101,6 +104,10 @@ describe 'Problem', -> it 're-bind the content', -> expect(@problem.bind).toHaveBeenCalled() + describe 'check_fd', -> + xit 'should have specs written for this functionality', -> + expect(false) + describe 'check', -> beforeEach -> @problem = new Problem($('.xmodule_display')) @@ -113,24 +120,28 @@ describe 'Problem', -> it 'submit the answer for check', -> spyOn $, 'postWithPrefix' @problem.check() - expect($.postWithPrefix).toHaveBeenCalledWith '/modx/1/problem_check', 'foo=1&bar=2', jasmine.any(Function) + expect($.postWithPrefix).toHaveBeenCalledWith '/problem/Problem1/problem_check', + 'foo=1&bar=2', jasmine.any(Function) describe 'when the response is correct', -> it 'call render with returned content', -> - spyOn($, 'postWithPrefix').andCallFake (url, answers, callback) -> callback(success: 'correct', contents: 'Correct!') + spyOn($, 'postWithPrefix').andCallFake (url, answers, callback) -> + callback(success: 'correct', contents: 'Correct!') @problem.check() expect(@problem.el.html()).toEqual 'Correct!' describe 'when the response is incorrect', -> it 'call render with returned content', -> - spyOn($, 'postWithPrefix').andCallFake (url, answers, callback) -> callback(success: 'incorrect', contents: 'Correct!') + spyOn($, 'postWithPrefix').andCallFake (url, answers, callback) -> + callback(success: 'incorrect', contents: 'Incorrect!') @problem.check() - expect(@problem.el.html()).toEqual 'Correct!' + expect(@problem.el.html()).toEqual 'Incorrect!' describe 'when the response is undetermined', -> it 'alert the response', -> spyOn window, 'alert' - spyOn($, 'postWithPrefix').andCallFake (url, answers, callback) -> callback(success: 'Number Only!') + spyOn($, 'postWithPrefix').andCallFake (url, answers, callback) -> + callback(success: 'Number Only!') @problem.check() expect(window.alert).toHaveBeenCalledWith 'Number Only!' @@ -146,7 +157,8 @@ describe 'Problem', -> it 'POST to the problem reset page', -> spyOn $, 'postWithPrefix' @problem.reset() - expect($.postWithPrefix).toHaveBeenCalledWith '/modx/1/problem_reset', { id: 1 }, jasmine.any(Function) + expect($.postWithPrefix).toHaveBeenCalledWith '/problem/Problem1/problem_reset', + { id: 'i4x://edX/101/problem/Problem1' }, jasmine.any(Function) it 'render the returned content', -> spyOn($, 'postWithPrefix').andCallFake (url, answers, callback) -> @@ -165,12 +177,14 @@ describe 'Problem', -> it 'log the problem_show event', -> @problem.show() - expect(Logger.log).toHaveBeenCalledWith 'problem_show', problem: 1 + expect(Logger.log).toHaveBeenCalledWith 'problem_show', + problem: 'i4x://edX/101/problem/Problem1' it 'fetch the answers', -> spyOn $, 'postWithPrefix' @problem.show() - expect($.postWithPrefix).toHaveBeenCalledWith '/modx/1/problem_show', jasmine.any(Function) + expect($.postWithPrefix).toHaveBeenCalledWith '/problem/Problem1/problem_show', + jasmine.any(Function) it 'show the answers', -> spyOn($, 'postWithPrefix').andCallFake (url, callback) -> @@ -245,7 +259,8 @@ describe 'Problem', -> it 'POST to save problem', -> spyOn $, 'postWithPrefix' @problem.save() - expect($.postWithPrefix).toHaveBeenCalledWith '/modx/1/problem_save', 'foo=1&bar=2', jasmine.any(Function) + expect($.postWithPrefix).toHaveBeenCalledWith '/problem/Problem1/problem_save', + 'foo=1&bar=2', jasmine.any(Function) it 'alert to the user', -> spyOn window, 'alert' @@ -308,3 +323,6 @@ describe 'Problem', -> it 'serialize all answers', -> @problem.refreshAnswers() expect(@problem.answers).toEqual "input_1_1=one&input_1_2=two" + + + diff --git a/common/lib/xmodule/xmodule/js/spec/helper.coffee b/common/lib/xmodule/xmodule/js/spec/helper.coffee index b661bd35c3..f34aee21d9 100644 --- a/common/lib/xmodule/xmodule/js/spec/helper.coffee +++ b/common/lib/xmodule/xmodule/js/spec/helper.coffee @@ -23,9 +23,9 @@ jasmine.stubRequests = -> else if settings.url.match /.+\/problem_get$/ settings.success html: readFixtures('problem_content.html') else if settings.url == '/calculate' || - settings.url.match(/modx\/.+\/goto_position$/) || + settings.url.match(/.+\/goto_position$/) || settings.url.match(/event$/) || - settings.url.match(/modx\/.+\/problem_(check|reset|show|save)$/) + settings.url.match(/.+\/problem_(check|reset|show|save)$/) # do nothing else throw "External request attempted for #{settings.url}, which is not defined."