Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / @skava/graphql   js

Repository URL to install this package:

Version: 9.0.35-framework 

/ scripts / jest / testSetup.js


const R = require('ramda')
const {
  toSpecies,
  cast,
  is,
  isBuiltIn,
  isNative,
  isNotEmpty,
  isSafe,
} = require('exotic')
const {
  isAction,
  isComputed,
  isBoxedObservable,
  isObservable,
  isObservableArray,
  isObservableObject,
  isObservableMap,
} = require('xmobx/mobx')
const consoleHACK = require('../../src/bootstrapper/setup/console')

require('@skava/modules/___dist/polyfil/console')

const {
  isFrozen,
  isSealed,
  toKindOf,
  isTypeEq,
  isType,
  isArguments,
  isPairs,
  isArrayOf,
  isArrayLike,
  isAsyncish,
  isArray,
  isArrayTyped,
  isArrayBuffer,
  isAsync,
  isBoolean,
  isBooleanPrimitive,
  isBooleanLike,
  isBrowser,
  isCircular,
  isCollection,
  isClass,
  isDate,
  isDataView,
  isDot,
  isError,
  isEnumerable,
  isElement,
  isEmpty,
  isExtensible,
  isFunction,
  isFalse,
  isFalsy,
  isFlattenable,
  isFinite,
  isGenerator,
  // not named is
  hasIn,
  ownPropertyIs,
  // back to it
  isNegativeInfinity,
  isIterator,
  isIn,
  isInfinity,
  isIteratable,
  isIndexable,
  isInstanceOf,
  isInteger,
  isJSON,
  isMatcher,
  isMap,
  isMapish,
  isMatch,
  isMatchWith,
  isNil,
  isNull,
  isNumber,
  isNumberPrimitive,
  isNumberish,
  isNumberishWithDecimals,
  isNaN,
  isNodeJS,
  isObj,
  isObjTag,
  isObjTypeof,
  isObjPure,
  isObjWithKeys,
  isObjNotNull,
  isObjPlain,
  isPrimitive,
  isPromise,
  isPrototypeOf,
  isRegExp,
  isReal,
  isSize,
  isStringOrNumber,
  isInfinite,
  isString,
  isSet,
  isSymbol,
  isTrue,
  isUndefined,
  isUndefinedLike,
  isUnsignedInteger,
  isURL,
  isValidArrayIndex,
  isValidIndex,
  isValidPropertyKey,
  isWeakMap,
  isWeakMapUsable,
  isWeakSet,
  isWebWorker,
  isZeroish,
  hasDecimals,
} = is

// @TODO test setup
// const stringify = x => JSON.stringify(x, null, 2)
const stringify = x => R.toString(x)

/**
 * @param {Function} predicate
 * @param {String} key
 * @param {String | Function | undefined} passMsg
 * @param {String | Function | undefined} failMsg
 */
const extend = (predicate, key, passMsg, failMsg) => {
  expect.extend({
    [key](received, expected) {
      const pass = predicate(received, expected)
      if (pass) {
        return {
          message: () =>
            isFunction(passMsg)
              ? passMsg(received, predicate)
              : passMsg ||
                `${key} pass; received: ${stringify(
                  received
                )}, expected: ${expected}`,
          pass: true,
        }
      } else {
        return {
          message: () =>
            isFunction(failMsg)
              ? failMsg(received, predicate)
              : failMsg ||
                `${key} fail; received: ${stringify(
                  received
                )}, expected: ${expected}`,
          pass: false,
        }
      }
    },
  })
}

const isSpecies = (received, expected) => {
  // when we use `is`
  if (typeof expected === 'function' && expected !== Function) {
    return expected(received)
  }

  // console.log(Typed(expected))
  return Typed(expected).is(received)
  // console.log(Typed(expected))
  if (isBuiltIn(expected)) {
    // console.log(Typed(expected))
    return Typed(expected).is(received)
  } else {
    return false
  }
}

// console.log('@TODO .at(index | prop).toBe')

const allAre = (received, expected) => {
  return received.every(value => isSpecies(value, expected))
}

// extend(fn, 'check')
// function fn() {
//   console.log(arguments)
//   return true
// }

const has = (received, expected) => {
  if (isCollection(received)) {
    return received.has(expected)
  }
  return hasIn(received, expected)
}

extend(has, 'has')
extend(hasIn, 'toHaveIn')
// extend(beKind, 'toBeKind')
// extend(beKind, 'toBeType')
extend(isSpecies, 'toBeSpecies')
extend(isSpecies, 'is')
extend(allAre, 'allAre')
extend(isArguments, 'toBeArguments')
extend(isPairs, 'toBePairs')
extend(isArray, 'toBeArray')
extend(isAsync, 'toBeAsync')
extend(isBooleanLike, 'toBeBoolean')
extend(isDate, 'toBeDate')
extend(isError, 'toBeError')
extend(isEmpty, 'toBeEmpty')
extend(isFunction, 'toBeFunction')
extend(isGenerator, 'toBeGenerator')
extend(isInfinite, 'toBeInfinite')
extend(isExtensible, 'toBeExtensible')
extend(isPrimitive, 'toBePrimitive')
extend(isEnumerable, 'toBeEnumerable')
extend(isInstanceOf, 'toBeInstanceOf')
extend(isNaN, 'toBeNaN')
extend(isNil, 'toBeNull')
extend(isNil, 'toBeNil')
extend(isNumber, 'toBeNumber')
extend(isReal, 'toBeReal')
extend(isSymbol, 'toBeSymbol')
extend(isZeroish, 'toBeZero')
extend(isFalse, 'false')
extend(isTrue, 'true')
extend(isRegExp, 'toBeRegExp')
extend(isString, 'toBeString')
extend(isObj, 'toBeObj')
extend(isObj, 'toBeFlattenable')
extend(hasDecimals, 'toBeFloat')
extend(isArrayTyped, 'toBeTypedArray')
extend(isWeakSet, 'toBeWeakSet')
extend(isWeakMap, 'toBeWeakMap')
extend(isSet, 'toBeSet')
extend(isMap, 'toBeMap')
extend(isCollection, 'toBeCollection')
extend(isSize, 'toBeSize')
extend(isFrozen, 'toBeFrozen')
extend(isSealed, 'toBeSealed')

// alias as is
extend(isSpecies, 'isSpecies')
extend(isArguments, 'isArguments')
extend(isPairs, 'isPairs')
extend(isArray, 'isArray')
extend(isAsync, 'isAsync')
extend(isBooleanLike, 'isBoolean')
extend(isDate, 'isDate')
extend(isError, 'isError')
extend(isEmpty, 'isEmpty')
extend(isFunction, 'isFunction')
extend(isGenerator, 'isGenerator')
extend(isInfinite, 'isInfinite')
extend(isExtensible, 'isExtensible')
extend(isPrimitive, 'isPrimitive')
extend(isEnumerable, 'isEnumerable')
extend(isInstanceOf, 'isInstanceOf')
extend(isNaN, 'isNaN')
extend(isNil, 'isNull')
extend(isNil, 'isNil')
extend(isNumber, 'isNumber')
extend(isReal, 'isReal')
extend(isSymbol, 'isSymbol')
extend(isZeroish, 'isZero')
extend(isFalse, 'isFalse')
extend(isTrue, 'isTrue')
extend(isRegExp, 'isRegExp')
extend(isString, 'isString')
extend(isObj, 'isObj')
extend(isObj, 'isFlattenable')
extend(hasDecimals, 'isFloat')
extend(isArrayTyped, 'isTypedArray')
extend(isWeakSet, 'isWeakSet')
extend(isWeakMap, 'isWeakMap')
extend(isSet, 'isSet')
extend(isMap, 'isMap')
extend(isCollection, 'isCollection')
extend(isSize, 'isSize')
extend(isFrozen, 'isFrozen')
extend(isSealed, 'isSealed')
//
extend(isSafe, 'isSafe')
extend(isNotEmpty, 'isNotEmpty')
//
extend(isAction, 'isAction')
// extend(isStrictModeEnabled, 'isStrictModeEnabled')
// extend(isModifierDescriptor, 'isModifierDescriptor')
extend(isComputed, 'isComputed')
extend(isBoxedObservable, 'isBoxedObservable')
extend(isObservable, 'isObservable')
extend(isObservableArray, 'isObservableArray')
extend(isObservableObject, 'isObservableObject')
extend(isObservableMap, 'isObservableMap')
// extend(isPromiseBasedObservable, 'isPromiseBasedObservable')
//
extend(isStringOrNumber, 'isStringOrNumber')
extend(isUndefined, 'isUndefined')
extend(isUndefinedLike, 'isUndefinedLike')
extend(isURL, 'isURL')
extend(isValidArrayIndex, 'isValidArrayIndex')