# Installation

Use npm command in order to install bh-web-service-form:

```bash
npm install [--save] bh-web-service-form
```

# Usage

Extend bh-web-service-form to create your own form:

```js
const BHWebServiceForm = require('bh-web-service-form');

class MyForm extends BHWebServiceForm {
  constructor() {
    super();
  }
}

var form = new MyForm();
```

# Examples

## Using native asserts

```js
const Assert = require('assert');
const BHWebServiceForm = require('bh-web-service-form');

class MyForm extends BHWebServiceForm {
  constructor() {
    super();
    this.asserts = {
      label : ['string']
    };
  }
}

var form = new MyForm();
var test1 = form.isValid({label: 'test'});
var test2 = form.isValid({label: 123});
var test3 = form.isValid({});

Assert.equal(0, test1.length);
Assert.equal(1, test2.length); // Label should be a string
Assert.equal(1, test3.length); // Label must exist
```

## Using simple asserts

```js
const Assert = require('assert');
const BHWebServiceForm = require('bh-web-service-form');

var assert_array = function assert_array(key, value) {
  return (value instanceof Array === true)
    ? true
    : `${key} must be an array`
  ;
};

class MyForm extends BHWebServiceForm {
  constructor() {
    super();
    this.asserts = {
      test : [assert_array]
    };
  }
}

var form = new MyForm();
var test1 = form.isValid({test: []});
var test2 = form.isValid({test: 123});
var test3 = form.isValid({});

Assert.equal(0, test1.length);
Assert.equal(1, test2.length); // Test should be an array
Assert.equal(1, test3.length); // Test must exist
```

## Using complex asserts

```js
const Assert = require('assert');
const BHWebServiceForm = require('bh-web-service-form');

var assert_min = function assert_min(key, value, args) {
  return (value >= args[0])
    ? true
    : `${key} must be greater or equal to ${args[0]}`
  ;
};

class MyForm extends BHWebServiceForm {
  constructor() {
    super();
    this.asserts = {
      test : [[assert_min, [0]]]
    };
  }
}

var form = new MyForm();
var test1 = form.isValid({test: 10});
var test2 = form.isValid({test: -5});
var test3 = form.isValid({});

Assert.equal(0, test1.length);
Assert.equal(1, test2.length); // Test should be greater or equal to 0
Assert.equal(1, test3.length); // Test must exist
```
