This basically commits the transpiled CoffeeScript JS (with minor cleanup) and removes coffee build support. A tiny amount of support for xblocks exists, because external users may have xblocks with coffee. But no coffee in our tree anyway.
96 lines
2.9 KiB
JavaScript
96 lines
2.9 KiB
JavaScript
/*
|
|
* decaffeinate suggestions:
|
|
* DS207: Consider shorter variations of null checks
|
|
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
*/
|
|
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').and.callFake(function(settings) {
|
|
let match;
|
|
if (match = settings.url.match(/youtube\.com\/.+\/videos\/(.+)\?v=2&alt=jsonc/)) {
|
|
return settings.success({data: jasmine.stubbedMetadata[match[1]]});
|
|
} else if (match = settings.url.match(/static\/subs\/(.+)\.srt\.sjson/)) {
|
|
return settings.success(jasmine.stubbedCaption);
|
|
} else if (settings.url.match(/modx\/.+\/problem_get$/)) {
|
|
return 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 = function(context, enableParts, createPlayer) {
|
|
let currentPartName;
|
|
if (createPlayer == null) { createPlayer = true; }
|
|
if (!$.isArray(enableParts)) { enableParts = [enableParts]; }
|
|
|
|
let { suite } = context;
|
|
while ((suite = suite.parentSuite)) { currentPartName = suite.description; }
|
|
enableParts.push(currentPartName);
|
|
|
|
for (let part of ['VideoCaption', 'VideoSpeedControl', 'VideoVolumeControl', 'VideoProgressSlider']) {
|
|
if (!($.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});
|
|
}
|
|
};
|
|
|
|
// 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').and.returnValue('1.0');
|
|
|
|
// Stub jQuery.qtip
|
|
$.fn.qtip = jasmine.createSpy('jQuery.qtip');
|
|
|
|
// Stub jQuery.scrollTo
|
|
$.fn.scrollTo = jasmine.createSpy('jQuery.scrollTo');
|