UNPKG

jaribu

Version:

a simple, full-featured, JavaScript testing framework

126 lines (117 loc) 4.13 kB
if (typeof define !== 'function') { var define = require('amdefine')(module); } define([ 'jaribu/helpers', 'jaribu/tools/Write', 'jaribu/tools/result', 'jaribu/tools/assert', 'jaribu/tools/assertType', 'jaribu/tools/Env', 'jaribu/fakes/Stub', 'jaribu/fakes/remoteStorageMock', 'jaribu/tools/HttpServer', 'jaribu/tools/Throws', 'jaribu/tools/WebSocketClient', 'jaribu/tools/WebSocketServer' ], function (helpers, Write, result, assert, assertType, Env, Stub, remoteStorageMock, HttpServer, Throws, WebSocketClient, WebSocketServer, undefined) { /* * class definitions for suites, tests, and scaffolding */ Stub.mock = {}; Stub.mock.remoteStorage = remoteStorageMock; /* * The Scaffolding objects contain all of the functions and * properties available to any test (not just the 'run' test but * also the setup, takedown, afterEach and beforeEach tests). */ var write = new Write(); function Scaffolding() { // bind all methods, so they can be used as callbacks for (var key in this) { if (typeof(this[key]) === 'function' && ! key.match(/^[A-Z]/)) { this[key] = this[key].bind(this); } } this.throws = function () { var throwsObj; if (!throwsObj) { throwsObj = new Throws(); } var args = Array.prototype.slice.call(arguments); throwsObj.run.apply(this, args); }; } Scaffolding.prototype = { constructor: Scaffolding, type: "Scaffolding", helpers: helpers.pub, write: write.func, _written: false, status: undefined, assert: assert.assertHandler, assertFail: assert.assertFailHandler, assertAnd: assert.assertAndHandler, assertFailAnd: assert.assertFailAndHandler, assertType: assertType.assertTypeHandler, assertTypeFail: assertType.assertTypeFailHandler, assertTypeAnd: assertType.assertTypeAndHandler, assertTypeFailAnd: assertType.assertTypeFailAndHandler, _assert: assert.assert, _assertType: assertType.assertType, fetch: { json: (function () { var lPromise = (typeof Promise !== 'undefined') ? Promise : helpers.pub.fetch.Promise; function status(response) { if (response.status >= 200 && response.status < 300) { return lPromise.resolve(response); } else { return lPromise.reject(response); } } function json(response) { return response.json(); } return function (url, postData) { if ((typeof postData === 'string') && (postData === 'delete')) { return helpers.pub.fetch(url, { method: 'delete', headers: { 'Accept': 'application/json' }, }) .then(status) .then(json); } else if (typeof postData === 'object') { return helpers.pub.fetch(url, { method: 'post', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify(postData) }) .then(status) .then(json); } else { return helpers.pub.fetch(url) .then(status) .then(json); } }; })() }, Stub: Stub, HttpServer: HttpServer, WebSocketClient: WebSocketClient, WebSocketServer: WebSocketServer, timeout: 10000, env: undefined, run: helpers.runFunc, _running: false, _generatingStackTrace: false, // flag to indicate wether to ignore a thrown exception _result: undefined, _message: '', // messages coming from the test tools _stackTrace: undefined, // optional stack trace added by run() failmsg: '', // the failure message, used later for summarys result: result, done: helpers.runFunc, fail: helpers.runFail }; return Scaffolding; });