helper.coffee 2.45 KB
Newer Older
1
jasmine.getFixtures().fixturesPath = "/_jasmine/fixtures/"
2 3

jasmine.stubbedMetadata =
4 5 6 7 8
  slowerSpeedYoutubeId:
    id: 'slowerSpeedYoutubeId'
    duration: 300
  normalSpeedYoutubeId:
    id: 'normalSpeedYoutubeId'
9 10
    duration: 200
  bogus:
11
    duration: 100
12 13

jasmine.stubbedCaption =
14 15
  start: [0, 10000, 20000, 30000]
  text: ['Caption at 0', 'Caption at 10000', 'Caption at 20000', 'Caption at 30000']
16 17 18 19 20 21 22

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
23
    else if settings.url.match /modx\/.+\/problem_get$/
24
      settings.success html: readFixtures('problem_content.html')
25
    else if settings.url == '/calculate' ||
26
      settings.url.match(/modx\/.+\/goto_position$/) ||
27
      settings.url.match(/event$/) ||
28
      settings.url.match(/modx\/.+\/problem_(check|reset|show|save)$/)
29 30 31 32 33 34
      # do nothing
    else
      throw "External request attempted for #{settings.url}, which is not defined."

jasmine.stubYoutubePlayer = ->
  YT.Player = -> jasmine.createSpyObj 'YT.Player', ['cueVideoById', 'getVideoEmbedCode',
35 36
    'getCurrentTime', 'getPlayerState', 'getVolume', 'setVolume', 'loadVideoById',
    'playVideo', 'pauseVideo', 'seekTo']
37

38
jasmine.stubVideoPlayer = (context, enableParts, createPlayer=true) ->
39 40 41 42 43 44
  enableParts = [enableParts] unless $.isArray(enableParts)

  suite = context.suite
  currentPartName = suite.description while suite = suite.parentSuite
  enableParts.push currentPartName

45
  for part in ['VideoCaption', 'VideoSpeedControl', 'VideoVolumeControl', 'VideoProgressSlider']
46 47 48 49 50 51
    unless $.inArray(part, enableParts) >= 0
      spyOn window, part

  loadFixtures 'video.html'
  jasmine.stubRequests()
  YT.Player = undefined
52
  context.video = new Video 'example', '.75:slowerSpeedYoutubeId,1.0:normalSpeedYoutubeId'
53
  jasmine.stubYoutubePlayer()
54
  if createPlayer
55
    return new VideoPlayer(video: context.video)
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

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'