Prefinem/nativemodels

View on GitHub
src/datatypes/int.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
const createType = require('./../createType');

const isValidInt = (key, value, strict = false) => {
  if (Number.isInteger(value)) {
    return true;
  }

  if (!strict && Number.isInteger(parseInt(value)) && parseInt(value) === parseFloat(value)) {
    return true;
  }

  throw new Error(`NativeModels - Property ${key} is not an int`);
};

const int = () =>
  createType({
    name: 'int',
    parse: (key, value) => parseInt(value),
    requiredCheck: (key, value) => {
      if (value || value === 0) {
        return true;
      }

      throw new Error(`NativeModels - Property: '${key}' is required`);
    },
    strictCheck: (key, value) => isValidInt(key, value, true),
    validCheck: (key, value) => isValidInt(key, value),
  });

module.exports = int;