From 718ce4db2874568288f99bed3c464fcb51d5c83f Mon Sep 17 00:00:00 2001 From: Jay Zoldak Date: Fri, 16 Nov 2012 13:02:38 -0500 Subject: [PATCH] Get Problem constructor working again, and copy the helper file from lms. --- .../xmodule/js/spec/capa/display_spec.coffee | 18 ++++- .../lib/xmodule/xmodule/js/spec/helper.coffee | 76 +++++++++++++++++++ rakefile | 8 -- 3 files changed, 90 insertions(+), 12 deletions(-) create mode 100644 common/lib/xmodule/xmodule/js/spec/helper.coffee 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 9910e8969d..01587b41c7 100644 --- a/common/lib/xmodule/xmodule/js/spec/capa/display_spec.coffee +++ b/common/lib/xmodule/xmodule/js/spec/capa/display_spec.coffee @@ -8,20 +8,30 @@ describe 'Problem', -> MathJax.Hub.getAllJax.andReturn [@stubbedJax] window.update_schematics = -> - jasmine.getFixtures().fixturesPath = 'xmodule/js/fixtures' + # load this function from spec/helper.coffee + jasmine.stubRequests() + + # note that the fixturesPath is set in spec/helper.coffee loadFixtures 'problem.html' spyOn Logger, 'log' spyOn($.fn, 'load').andCallFake (url, callback) -> $(@).html readFixtures('problem_content.html') callback() - jasmine.stubRequests() describe 'constructor', -> beforeEach -> - @problem = new Problem 1, "problem_1", "/problem/url/" + @problem = new Problem (" +
+
+
+
+ ") it 'set the element', -> - expect(@problem.el).toBe '#problem_1' + expect(@problem.element_id).toBe 'problem_999' describe 'bind', -> beforeEach -> diff --git a/common/lib/xmodule/xmodule/js/spec/helper.coffee b/common/lib/xmodule/xmodule/js/spec/helper.coffee new file mode 100644 index 0000000000..b661bd35c3 --- /dev/null +++ b/common/lib/xmodule/xmodule/js/spec/helper.coffee @@ -0,0 +1,76 @@ +jasmine.getFixtures().fixturesPath = 'xmodule/js/fixtures' + +jasmine.stubbedMetadata = + slowerSpeedYoutubeId: + id: 'slowerSpeedYoutubeId' + duration: 300 + normalSpeedYoutubeId: + id: 'normalSpeedYoutubeId' + duration: 200 + bogus: + duration: 100 + +jasmine.stubbedCaption = + start: [0, 10000, 20000, 30000] + text: ['Caption at 0', 'Caption at 10000', 'Caption at 20000', 'Caption at 30000'] + +jasmine.stubRequests = -> + spyOn($, 'ajax').andCallFake (settings) -> + if match = settings.url.match /youtube\.com\/.+\/videos\/(.+)\?v=2&alt=jsonc/ + settings.success data: jasmine.stubbedMetadata[match[1]] + else if match = settings.url.match /static\/subs\/(.+)\.srt\.sjson/ + settings.success jasmine.stubbedCaption + 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(/event$/) || + settings.url.match(/modx\/.+\/problem_(check|reset|show|save)$/) + # do nothing + else + throw "External request attempted for #{settings.url}, which is not defined." + +jasmine.stubYoutubePlayer = -> + YT.Player = -> jasmine.createSpyObj 'YT.Player', ['cueVideoById', 'getVideoEmbedCode', + 'getCurrentTime', 'getPlayerState', 'getVolume', 'setVolume', 'loadVideoById', + 'playVideo', 'pauseVideo', 'seekTo'] + +jasmine.stubVideoPlayer = (context, enableParts, createPlayer=true) -> + enableParts = [enableParts] unless $.isArray(enableParts) + + suite = context.suite + currentPartName = suite.description while suite = suite.parentSuite + enableParts.push currentPartName + + for part in ['VideoCaption', 'VideoSpeedControl', 'VideoVolumeControl', 'VideoProgressSlider'] + unless $.inArray(part, enableParts) >= 0 + spyOn window, part + + loadFixtures 'video.html' + jasmine.stubRequests() + YT.Player = undefined + context.video = new Video 'example', '.75:slowerSpeedYoutubeId,1.0:normalSpeedYoutubeId' + jasmine.stubYoutubePlayer() + if createPlayer + return new VideoPlayer(video: context.video) + +spyOn(window, 'onunload') + +# Stub Youtube API +window.YT = + PlayerState: + UNSTARTED: -1 + ENDED: 0 + PLAYING: 1 + PAUSED: 2 + BUFFERING: 3 + CUED: 5 + +# Stub jQuery.cookie +$.cookie = jasmine.createSpy('jQuery.cookie').andReturn '1.0' + +# Stub jQuery.qtip +$.fn.qtip = jasmine.createSpy 'jQuery.qtip' + +# Stub jQuery.scrollTo +$.fn.scrollTo = jasmine.createSpy 'jQuery.scrollTo' diff --git a/rakefile b/rakefile index d2249d2ed8..c05f06b9d6 100644 --- a/rakefile +++ b/rakefile @@ -97,14 +97,6 @@ def template_jasmine_runner(lib) js_specs = Dir[spec_glob].sort_by {|p| [p.split('/').length, p]} .map {|f| File.expand_path(f)} js_source = Dir[src_glob].sort_by {|p| [p.split('/').length, p]} .map {|f| File.expand_path(f)} - # helper file - helper_coffee = "#{REPO_ROOT}/lms/static/coffee/spec/helper.coffee" - if File.exists?(helper_coffee) - sh("coffee -c #{helper_coffee}") - # Add the compiled helper to the beginning of the specs array - js_specs.unshift("#{REPO_ROOT}/lms/static/coffee/spec/helper.js") - end - template = ERB.new(File.read("#{lib}/jasmine_test_runner.html.erb")) template_output = "#{lib}/jasmine_test_runner.html" File.open(template_output, 'w') do |f|