jest-isa.js

Basic instanceof, but with slightly more advanced checking
git clone git://git.finwo.net/lib/jest-isa.js
Log | Files | Refs | README

index.js (895B)


      1 module.exports = {
      2   isA: function (actual, expected) {
      3     const result = {
      4       message: () => `Expected ${actual} to be a ${expected.name}`,
      5       pass   : false
      6     };
      7     switch (expected) {
      8       case Object:
      9         result.pass = (!!actual) && ('object' === typeof actual);
     10         return result;
     11       case Function:
     12       case Number:
     13       case String:
     14         if ('object' === typeof actual) {
     15           result.pass = actual instanceof expected;
     16           return result;
     17         } else {
     18           result.pass = expected.name.toLowerCase() === typeof actual;
     19           return result;
     20         }
     21       default:
     22         if ('function' === typeof expected['is' + expected.name]) {
     23           result.pass = expected['is' + expected.name](actual);
     24           return result;
     25         } else {
     26           result.pass = actual instanceof expected;
     27           return result;
     28         }
     29     }
     30   }
     31 };