validation-result

1.0.0 • Public • Published

validation-result

Wrapper for unified client-server and function-function communication with methods to simplify validation and error handling.

function ValidationResult(data) {
    // Wrapped data
    this.data = data;
    // Validity flag
    this.isValid;
    // Lists of messages
    this.errors = [];
    this.warnings = [];
    this.messages = [];
 
    // ...validation functions...
}

Installation

npm install validation-result

Usage

Include validation-result in your file:

var ValidationResult = require('validation-result');

Then use it to wrap any object

var validation = new ValidationResult(data);

Basic functions and properties

// Check if data are valid
if (!validation.isValid) {
    // Data are not valid
}
 
// Add error to list of errors
// sets isValid to false
validation.addError(error);
 
// Add message to message list
validation.addMessage(message);
 
// Add warning to warnings list
validation.addWarning(warning);
 
// Append other validations
if (!validation.append(otherValidation)) {
    // Data are not valid
}

Validation functions

Each validation function returns its result. If the result is false, validation.addError(error) is called.

// Check if given property is number
validation.isNumber('path.to.property', error));
 
// Check if given property is lesser or equal than given value
validation.isLesserOrEqual('path.to.property', value, error));
 
// Check if given property is greater or equal than given value
validation.isGreaterOrEqual('path.to.property', value, error));
 
// Check if given property is equal to given value
validation.isEqual('path.to.property', value, error));
 
// Check if given expression is true
validation.isTrue(expression, error);
 
// Check if given property is not empty
validation.notEmpty('path.to.property', error));
 
// Check if given property is defined
validation.isDefined('path.to.property', error));
 
// Check if given property matches given regex
validation.matches('path.to.property', regex, error));
 
// Check if given property contains given value
validation.contains('path.to.property', value, error));

Example

// Require module
var ValidationResult = require('validation-result');
 
// Create example data
var user = {
    Name: "Bob",
    Age: 17,
    Local: {
        Password: "ucantgetme"
    }
}
 
// Wrap user in validation
var validation = new ValidationResult(user);
 
// Make validation controls
validation.notEmpty('Name', 'Name field is required');
validation.isGreaterOrEqual('Age', 18, 'You are too young');
validation.isDefined('Hobbies', 'Don\' you have a hobby?');
 
// Does it make sense to keep going?
if (!validation.isValid) {
    return validation;
}
 
// Nested validation to avoid access to undefined properties
// If we do not want to append error message, dont
if (validation.isDefined('Local')) {
    validation.notEmpty('Local.Password', 'Password field is required');
}
 
// Use your own checks
if (myMoodIsBlue) {
    validation.addError('You shall not pass');
}
 
// Return validation
return validation;

Testing

npm test

Package Sidebar

Install

npm i validation-result

Weekly Downloads

1

Version

1.0.0

License

MIT

Last publish

Collaborators

  • xmatys10