unit.js
Version:
Simple, intuitive and flexible unit testing framework for javascript / Node.js (browser and server). Integrates awesome assertions libraries like Must.js, Should.js, Assert of Node.js, Sinon.js and other friendly features (promise, IoC, plugins, ...).
79 lines (60 loc) • 1.94 kB
JavaScript
/**
* This file is part of the Unit.js testing framework.
*
* (c) Nicolas Tallefourtane <dev@nicolab.net>
*
* For the full copyright and license information, please view
* the LICENSE file distributed with this source code
* or visit http://unitjs.com.
*
* @author Nicolas Tallefourtane <dev@nicolab.net>
*/
;
var _ = require('lodash');
// constructor
var RawControlFlow = require('../control-flow');
// object
var rawAssertions = require('../assertions');
// array
var commonAssertions = require('../common-assertions');
// list the assertions to the current asserter (specific and common)
var useAssertions = commonAssertions.concat([
// matchers
'matchEach', 'notMatchEach',
// types augmented
'isEmpty', 'isNotEmpty',
// quantifications
'hasLength', 'hasNotLength',
// string
'startsWith', 'notStartsWith', 'endsWith', 'notEndsWith',
'hasValue', 'notHasValue', 'hasValues', 'notHasValues',
'contains', 'notContains'
]);
/**
* Expose all assertions
* @type {function}
* @param {mixed} actual Actual value tested
* @return {Object} The current asserter
*/
module.exports = function StringAsserter(actual) {
// actual value tested
this.actual = actual;
// assertions with the current context
var assertions = rawAssertions.call(this, actual);
// Build the common API with the current context
var ControlFlow = RawControlFlow.bind(this);
var commonApi = new ControlFlow();
// provides the common API in the current asserter
for (var method in commonApi) {
this[method] = commonApi[method];
}
// assert the type
assertions.isString(this.actual);
// provides the assertions to the current asserter (specific and common)
var asserterAssertions = _.pick(assertions, useAssertions);
for (var method in asserterAssertions) {
this[method] = asserterAssertions[method];
}
// return this asserter
return this;
};