211 lines
6.4 KiB
JavaScript
211 lines
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();
|
||
|
});
|
||
|
});
|