Sha256: 159202b664e7f60accbd807e3a7a3078eaf16642aece33a847df2877fb924b9d

Contents?: true

Size: 1.29 KB

Versions: 26

Compression:

Stored size: 1.29 KB

Contents

import {flag} from './flag.js';
import {type} from './type-detect.js';

/**
 * @param {unknown} obj
 * @returns {boolean}
 */
function isObjectType(obj) {
  var objectType = type(obj);
  var objectTypes = ['Array', 'Object', 'Function'];

  return objectTypes.indexOf(objectType) !== -1;
}

/**
 * ### .getOperator(message)
 *
 * Extract the operator from error message.
 * Operator defined is based on below link
 * https://nodejs.org/api/assert.html#assert_assert.
 *
 * Returns the `operator` or `undefined` value for an Assertion.
 *
 * @param {object} obj object (constructed Assertion)
 * @param {unknown} args chai.Assertion.prototype.assert arguments
 * @returns {unknown}
 * @namespace Utils
 * @name getOperator
 * @public
 */
export function getOperator(obj, args) {
  var operator = flag(obj, 'operator');
  var negate = flag(obj, 'negate');
  var expected = args[3];
  var msg = negate ? args[2] : args[1];

  if (operator) {
    return operator;
  }

  if (typeof msg === 'function') msg = msg();

  msg = msg || '';
  if (!msg) {
    return undefined;
  }

  if (/\shave\s/.test(msg)) {
    return undefined;
  }

  var isObject = isObjectType(expected);
  if (/\snot\s/.test(msg)) {
    return isObject ? 'notDeepStrictEqual' : 'notStrictEqual';
  }

  return isObject ? 'deepStrictEqual' : 'strictEqual';
}

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
clapton-0.0.26 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.25 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.24 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.23 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.22 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.21 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.20 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.19 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.18 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.17 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.16 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.15 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.14 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.13 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.12 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.11 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.10 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.9 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.8 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js
clapton-0.0.7 lib/clapton/javascripts/node_modules/chai/lib/chai/utils/getOperator.js