getMessage.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*!
  2. * Chai - message composition utility
  3. * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
  4. * MIT Licensed
  5. */
  6. /*!
  7. * Module dependancies
  8. */
  9. var flag = require('./flag')
  10. , getActual = require('./getActual')
  11. , inspect = require('./inspect')
  12. , objDisplay = require('./objDisplay');
  13. /**
  14. * ### .getMessage(object, message, negateMessage)
  15. *
  16. * Construct the error message based on flags
  17. * and template tags. Template tags will return
  18. * a stringified inspection of the object referenced.
  19. *
  20. * Message template tags:
  21. * - `#{this}` current asserted object
  22. * - `#{act}` actual value
  23. * - `#{exp}` expected value
  24. *
  25. * @param {Object} object (constructed Assertion)
  26. * @param {Arguments} chai.Assertion.prototype.assert arguments
  27. * @name getMessage
  28. * @api public
  29. */
  30. module.exports = function (obj, args) {
  31. var negate = flag(obj, 'negate')
  32. , val = flag(obj, 'object')
  33. , expected = args[3]
  34. , actual = getActual(obj, args)
  35. , msg = negate ? args[2] : args[1]
  36. , flagMsg = flag(obj, 'message');
  37. if(typeof msg === "function") msg = msg();
  38. msg = msg || '';
  39. msg = msg
  40. .replace(/#{this}/g, objDisplay(val))
  41. .replace(/#{act}/g, objDisplay(actual))
  42. .replace(/#{exp}/g, objDisplay(expected));
  43. return flagMsg ? flagMsg + ': ' + msg : msg;
  44. };