curl-amd
Version:
curl.js is small, fast, extensible module loader that handles AMD, CommonJS Modules/1.1, CSS, HTML/text, and legacy scripts.
171 lines (141 loc) • 4.09 kB
HTML
<html>
<head>
<title>tdd runner test</title>
<script>
curl = {
baseUrl: '',
paths: {
curl: '../src/curl'
}
};
</script>
<script src="../src/curl.js" type="text/javascript"></script>
<script type="text/javascript">
curl(
['curl/tdd/runner', 'require'],
function (runner, require) {
var runCtx, one, callbackRecorder, result;
one = 6;
callbackRecorder = [];
try {
// test if functions are run in the right order
function setup1 () {
callbackRecorder.push('setup');
}
function test1 () {
callbackRecorder.push('test');
}
function teardown1 () {
callbackRecorder.push('teardown');
}
runCtx = runner(require, setup1, teardown1);
runCtx.run(test1).then(function () {
result = callbackRecorder[0] == 'setup'
&& callbackRecorder[1] == 'test'
&& callbackRecorder[2] == 'teardown';
if (result) {
write('SUCCESS: runner should execute setup then test then teardown.');
}
else {
write('FAILED: runner should execute setup then test then teardown.');
write('- expected: setup, test, teardown. got: ' + callbackRecorder.toString());
}
});
// test that a mock define in setup provides a mock value
function setup2 (require) {
// mock of stuff/one
define('stuff/one', function () { return one; });
}
function test2 (require) {
require(['stuff/three'], function (three) {
// stuff/three requires stuff/one and stuff/two
// stuff/two also requires stuff/one
// let's see if they got our mock stuff/one
if (three == 13) {
write('SUCCESS: mock should override actual module');
}
else {
write('FAILED: mock should override actual module');
write('- expected: 13. got: ' + three);
}
});
}
runCtx = runner(require, setup2);
runCtx.run(test2).then(function () {
// test that mock and other modules are no longer defined
// sync require will fetch from cache
try {
require('stuff/one');
write('FAILED: runner should remove mocks declared using `define`');
write('- expected: exception. got: nuthin');
}
catch (ex) {
write('SUCCESS: runner should remove mocks declared using `define`');
}
try {
require('stuff/two');
write('FAILED: runner should remove modules fetched indirectly via `require`');
write('- expected: exception. got: nuthin');
}
catch (ex) {
write('SUCCESS: runner should remove modules fetched indirectly via `require`');
}
try {
require('stuff/three');
write('FAILED: runner should remove modules fetched via `require`');
write('- expected: exception. got: nuthin');
}
catch (ex) {
write('SUCCESS: runner should remove modules fetched via `require`');
}
});
// test that the teardown function is run afterwards
function setup3 () {
result = 42;
}
function teardown3 () {
result = void 0;
}
runCtx = runner(require, setup3, teardown3);
runCtx.run(function () {}).then(function () {
if (result) {
write('FAILED: should run teardown after test.');
write('- expected: undefined. got: ' + result);
}
else {
write('SUCCESS: should run teardown after test.');
}
});
// test that callback (2nd arg to run method) is executed
runCtx = runner();
runCtx.run(function () {}, function () {
result = 27;
}).then(function () {
if (result == 27) {
write('SUCCESS: should exec callback argument of run()');
}
else {
write('FAILED: should exec callback argument of run()');
write('- expected: 27. got: ', result);
}
});
}
catch (ex) {
write('FAILED: ' + ex.message);
}
},
function (ex) {
write('ERROR: ' + ex.message);
}
);
function write (msg) {
curl('domReady!', function () {
document.body.appendChild(document.createElement('div')).innerHTML = msg;
});
}
</script>
</head>
<body>
</body>
</html>