Giter Club home page Giter Club logo

vest's Introduction

Vest

Vest - Validation Testing

npm version Build Status Known Vulnerabilities

What is Vest?

Vest is a validations library for JS apps that derives its syntax from modern JS frameworks such as Mocha or Jest. It is easy to learn due to its use of already common declarative patterns. It works great with user-input validation and with validating upon user interaction to provide the best possible user experience.

The idea behind Vest is that your validations can be described as a 'spec' or a contract that reflects your form or feature structure. Your validations run in production, and they are framework agnostic - meaning Vest works well with React, Angular, Vue, or even without a framework at all.

Example code:

// validation.js
import vest, { test, enforce } from 'vest';

const validate = vest.create('NewUserForm', data => {
  test('username', 'Must be at least 3 chars', () => {
    enforce(data.username).longerThanOrEquals(3);
  });

  test('email', 'Is not a valid email address', () => {
    enforce(data.email)
      .isNotEmpty()
      .matches(/[^@]+@[^\.]+\..+/g);
  });
});

export default validate;
// myFeature.js
import validate from './validation.js';

const res = validate({
  username: 'example',
  email: '[email protected]',
});

res.hasErrors(); // returns whether the form has errors
res.hasErrors('username'); // returns whether the 'username' field has errors
res.getErrors(); // returns an object with an array of errors per field
res.getErrors('username'); // returns an array of errors for the `username` field

Why Vest?

  • Vest is really easy to learn, and you can easily take your existing knowledge of unit tests and transfer it to validations.
  • Vest takes into account user interaction and warn only validations.
  • Your validations are structured, making it very easy to read and write. All validation files look the same.
  • Your validation logic is separate from your feature logic, preventing the spaghetti code that's usually involved with writing validations.
  • Validation logic is easy to share and reuse across features.
  • If your backend is node, you can use the same Vest modules for both client-side and server-side validations.

Vest is a continuation of Passable by Fiverr.

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.