GithubHelp home page GithubHelp logo

easy-assertions's Introduction

easy-assertions.js

Easy assertions is a tiny library just with three simple functions to make easier validate any data.

Feel free to fork/copy this project and use it to your own project.

Install

Principle

I'm based this project in functional programming, so i recommend to you have the basics knowledge about FP (compose and curry functions).

Why

I want an easy way to validate my form values and using inmutable values.

How

This library works in two sections.

The first is create an assertion that should validate a primitive value:

import { createAssert } from 'easy-assertions';
const toBe = createAssert(
  (condition, value) => condition === value,
  condition => `TO_BE_${condition}`,
)
const toBe0 = toBe(0);
// => returns a function that will validate to be 0;
console.log(toBe0(0)) // => true
console.log(toBe0(1)) // => false

createAssert will receive a validator function and a custom message that could be a string or a function that will receive the same params that the validator function.

Once we have our assert functions we could use the expectations function.

import { expectationsFP } from 'easy-assertions';
const validateToBe0 = expectationsFP([toBe(0)]);
console.log(validateToBe0(0)) // => [];
console.log(validateToBe0(1)) // => ['TO_BE_0'];

expectationsFP will receive an array of assert functions, then will receive the primitive value to validate by the assert functions and will return an empty array if there are any errors, or will return an array with the code errors of every assert function.

Addtional you can map this code errors to a more legible errors.

import { pipe, expectationsFP, mapErrorsFP, createAssert } from 'easy-assertions';

const toBeGreaterThan = createAssert(
  (maxValue, value) => parseInt(value, 10) > maxValue,
  (maxValue) => `BE_GREATER_THAN_${maxValue}`,
);

const validate = pipe(
  expectationsFP([toBeGreaterThan(15), not(toBeGreaterThan(22))]),
  mapErrorsFP({
    'BE_GREATER_THAN_15': 'Should be major than 15',
    'NOT_BE_GREATER_THAN_22': 'Should be less than 22',
  }),
);

console.log(validate(14)) // => ["Should be major than 15"]
console.log(validate(23)) // => ["Should be less than 22"]
console.log(validate(20)) // => []

Contributors

Mike Romero

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.