@jrh-works/assure

1.0.0 • Public • Published

@jrh-works/assure

Simple Node.js object property validations, with companion Chai assertions.

Installation

npm install @jrh-works/assure

The Validation Function

Usage

const { assureProperties } = require('@jrh-works/assure')

Syntax

assureProperties(properties, target)

Example Usage

const object = { a: 1, b: 2, c: 3 }

assureProperties([ 'a', 'b', 'c' ], { of: object, type: 'arbitrary' })

Arguments

Name Type Description
properties Array A list of properties to validate.
target Object: Target Information about the object to validate.

Returns

Type Description
Object The targeted object.

Exceptions

Throws a standard Error if all properties are not present in the target object.


The Target Object

Attribute Type Description
of Object The object to validate.
type String (optional) A name for the type of object to include in error messages.

Chai Assertions

const chai = require('chai')
const { isAssured } = require('@jrh-works/assure')

chai.use(isAssured)

.assuredBy()

Checks if all an object's properties are assured within a test function.

Syntax

assuredBy(test, exclusions)

Arguments

Name Type Description
test Function A testing function which will be passed one or more invalid version(s) of an object.
exclusions Object: Exclusions Fields not to validate.

Example Usage

function eat(food) {
  assureProperties([ 'flavor', 'temperature' ], { of: food })
}

// Passing test.
it('only accepts valid foods', () => {
  expect({ flavor: 'salty', temperature: 'hot', texture: 'smooth' }).to.be.assuredBy(invalidObject => {
    eat(invalidObject)
  }, { exclude: 'texture' })
})

// Failing test.
it('only accepts valid foods', () => {
  expect({ color: 'brown' }).to.be.assuredBy(invalidObject => {
    eat(invalidObject)
  })
})

The Exclusions Object

Attribute Type Description
exclude Array A list of fields to exclude from validation.

.assuredByAsync()

The same as .assuredBy(), but accepts an asynchronous test function.

Example Usage

async function sendDataAbout(food) {
  assureProperties([ 'flavor', 'temperature' ], { of: food })
  await MyFoodAPI.post({ food })
}

// Passing test.
it('only accepts valid foods', () => {
  return expect({ flavor: 'salty', temperature: 'hot', texture: 'smooth' }).to.be.assuredByAsync(async (invalidObject) => {
    await sendDataAbout(invalidObject)
  }, { exclude: 'texture' })
})

// Failing test.
it('only accepts valid foods', () => {
  return expect({ color: 'brown' }).to.be.assuredByAsync(async (invalidObject) => {
    await sendDataAbout(invalidObject)
  })
})

Readme

Keywords

none

Package Sidebar

Install

npm i @jrh-works/assure

Weekly Downloads

0

Version

1.0.0

License

none

Unpacked Size

11.8 kB

Total Files

8

Last publish

Collaborators

  • jrh-works