FOSDEM-2025-keynote/lib/js/extra/headjs/test/unit/1.0.0/test.load.js

211 lines
No EOL
6.4 KiB
JavaScript

module("Load");
// INFO: Never link to raw.github.com since that returns text/plain instead of application-x/javascript headers ..which breaks IE
// INFO: Do not link 2 same libraries twice, or it will already be in cache
// So now for a big ass helper so we can load some libs more than once ..anyways !
var libs = (function(window, undefined) {
var counter = {};
function count(item) {
if (counter[item] === undefined) {
counter[item] = 0;
}
return counter[item]++;
}
function mootools() {
window.$$ = undefined;
return "http://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js?" + count("mootools");
}
function jquery() {
window.$ = undefined;
window.jQuery = undefined;
return "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js?" + count("jquery");
}
function jshint() {
window.JSHINT = undefined;
return "http://ajax.aspnetcdn.com/ajax/jshint/r07/jshint.js?" + count("jshint");
}
function knockout() {
window.ko = undefined;
return "http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js?" + count("knockout");
}
function spin() {
window.Spinner = undefined;
return "http://fgnass.github.io/spin.js/dist/spin.min.js?" + count("spin");
}
function stapes() {
window.Stapes = undefined;
return "http://hay.github.io/stapes/stapes.min.js?" + count("stapes");
}
function notificon() {
window.Notificon = undefined;
return "http://makeable.github.io/Notificon/notificon.js?" + count("notificon");
}
function sly() {
// depends on jQuery
window.Sly = undefined;
return "http://darsa.in/sly/js/sly.min.js?" + count("sly");
}
function underscore() {
window._ = undefined;
return "http://underscorejs.org/underscore-min.js?" + count("underscore");
}
function headjs() {
window.head = undefined;
return "http://cdnjs.cloudflare.com/ajax/libs/headjs/1.0.3/head.min.js?" + count("head");
}
// Exports
return {
mootools : mootools,
jquery : jquery,
jshint : jshint,
knockout : knockout,
spin : spin,
stapes : stapes,
notificon : notificon,
sly : sly,
underscore: underscore,
head : headjs
};
})(window);
// only sync tests use expect()
// http://qunitjs.com/cookbook/#synchronous-callbacks
asyncTest("load(jsFilePath, jsFilePath, callback)", 2, function() {
head.load(
libs.mootools(),
libs.jquery(),
function() {
$j = jQuery.noConflict();
ok(!!$j("#qunit-header").addClass, "Loaded: jQuery");
ok(!!$$("#qunit-header").addClass, "Loaded: Mootools");
start();
}
);
});
asyncTest("ready(jsFileName).load(jsFilePath)", 1, function () {
head.ready("jquery.min.js", function() {
ok(!!jQuery, "Ready: jquery.min.js");
start();
})
.load(libs.jquery());
});
asyncTest("load([ jsFilePath, jsFilePath ], callback).ready(jsFileName, callback)", 4, function (assert) {
head
.load([libs.jshint(), libs.knockout()], function () {
// we could run a CallBack() here
})
.ready("jshint.js", function () {
ok(!!JSHINT, "Ready: jshint.js");
assert.step(1, "Step 1: jshint");
})
.ready("knockout-2.2.1.js", function () {
ok(!!ko, "Ready: knockout-2.2.1.js");
assert.step(2, "Step 2: knockout");
})
.ready(function () {
// If start() is moved to above CallBack(), Travis-CI fails ...why ? Locally it works..
start();
});
});
asyncTest("load({ label: jsFilePath }, { label: jsFilePath }, callback).ready(label, callback)", 6, function (assert) {
head
.load(
{ jshint : libs.jshint() },
{ jquery : libs.jquery() },
{ knockout: libs.knockout() },
function () {
// we could run a CallBack() here
}
)
.ready("jshint", function () {
ok(!!JSHINT, "Ready: jshint");
assert.step(1, "Step 1: jshint");
})
.ready("jquery", function () {
ok(!!jQuery, "Ready: jquery");
assert.step(2, "Step 2: jquery");
})
.ready("knockout", function () {
ok(!!ko, "Ready: knockout");
assert.step(3, "Step 3: knockout");
})
.ready(function () {
// If start() is moved to above CallBack(), Travis-CI fails ...why ? Locally it works..
start();
});
});
asyncTest("load([ { label: jsFilePath }, { label: jsFilePath } ], callback).ready(label, callback)", 6, function (assert) {
head
.load([
{ jshint: libs.jshint() },
{ jquery: libs.jquery() },
{ knockout: libs.knockout() }],
function () {
// we could run a CallBack() here
}
)
.ready("jshint", function () {
ok(!!JSHINT, "Ready: jshint");
assert.step(1, "Step 1: jshint");
})
.ready("jquery", function () {
ok(!!jQuery, "Ready: jquery");
assert.step(2, "Step 2: jquery");
})
.ready("knockout", function () {
ok(!!ko, "Ready: knockout");
assert.step(3, "Step 3: knockout");
})
.ready(function () {
// If start() is moved to above CallBack(), Travis-CI fails ...why ? Locally it works..
start();
});
});
asyncTest("test(bool, [ { label: jsFilePath }, { label: jsFilePath } ], [ { label: jsFilePath }, { label: jsFilePath } ], callback).ready(callback)", 1, function (assert) {
head
.test(head.browser.ie,
[
{ jshint: libs.jshint() },
{ jquery: libs.jquery() }
],
[
{ jshint: libs.jshint() },
{ knockout: libs.knockout() }
],
function () {
// we could run a CallBack() here
}
)
.ready(function () {
ok(((!!JSHINT && !!jQuery) || (!!JSHINT && !!ko)), "Ready: jshint & (jquery || knockout)");
// If start() is moved to above CallBack(), Travis-CI fails ...why ? Locally it works..
start();
});
});