51 lines
1.3 KiB
Plaintext
51 lines
1.3 KiB
Plaintext
|
/*!
|
||
|
* Chai - message composition utility
|
||
|
* Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
|
||
|
* MIT Licensed
|
||
|
*/
|
||
|
|
||
|
/*!
|
||
|
* Module dependencies
|
||
|
*/
|
||
|
|
||
|
var flag = require('./flag')
|
||
|
, getActual = require('./getActual')
|
||
|
, objDisplay = require('./objDisplay');
|
||
|
|
||
|
/**
|
||
|
* ### .getMessage(object, message, negateMessage)
|
||
|
*
|
||
|
* Construct the error message based on flags
|
||
|
* and template tags. Template tags will return
|
||
|
* a stringified inspection of the object referenced.
|
||
|
*
|
||
|
* Message template tags:
|
||
|
* - `#{this}` current asserted object
|
||
|
* - `#{act}` actual value
|
||
|
* - `#{exp}` expected value
|
||
|
*
|
||
|
* @param {Object} object (constructed Assertion)
|
||
|
* @param {Arguments} chai.Assertion.prototype.assert arguments
|
||
|
* @namespace Utils
|
||
|
* @name getMessage
|
||
|
* @api public
|
||
|
*/
|
||
|
|
||
|
module.exports = function getMessage(obj, args) {
|
||
|
var negate = flag(obj, 'negate')
|
||
|
, val = flag(obj, 'object')
|
||
|
, expected = args[3]
|
||
|
, actual = getActual(obj, args)
|
||
|
, msg = negate ? args[2] : args[1]
|
||
|
, flagMsg = flag(obj, 'message');
|
||
|
|
||
|
if(typeof msg === "function") msg = msg();
|
||
|
msg = msg || '';
|
||
|
msg = msg
|
||
|
.replace(/#\{this\}/g, function () { return objDisplay(val); })
|
||
|
.replace(/#\{act\}/g, function () { return objDisplay(actual); })
|
||
|
.replace(/#\{exp\}/g, function () { return objDisplay(expected); });
|
||
|
|
||
|
return flagMsg ? flagMsg + ': ' + msg : msg;
|
||
|
};
|