UNPKG

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
<!DOCTYPE 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>