Business rules for vacation approval. Vacation request validation rules:
- employee
- name -> first name + last name is required
- duration
- from and to is required
- from and to must be valid dates (expect weekends)
- from and to must be greater or equal today
- from and to must be less or equal 1 year
- from must be equal or before to field
- minimal duration (without excluded days) is 1 day
- maximal duration (without excluded days) is 25 days
- excluded days - must be in range given by from and to
- deputy
- first name + last name of deputy is required
- contact (email) is required
- can not select deputy have approved vacation at the same days (async)
- at least one deputy is required -> second deputy is optional
import moment = require('moment');
import _ = require('underscore');
import Validation = require('business-rules-engine');
import VacationApproval = require('./models/vacationApproval/node-business-rules.js');
//create test data
var data:VacationApproval.IVacationApprovalData = {
Employee: {
FirstName: 'John',
LastName: 'Smith toooooooooooooooooooooooooo long'
},
Deputy1: {
Checked:true,
FirstName: 'Paul',
LastName: 'Neuman',
Email: 'pneuman@gmai.com'
},
Duration: {
From: new Date(),
To: moment(new Date()).add('days', 1).toDate()
}
};
//business rules for vacation approval
var businessRules = new VacationApproval.BusinessRules(data);
//execute validation
businessRules.Validate();
//verify and display results
if (businessRules.Errors.HasErrors) console.log(businessRules.Errors.ErrorMessage);
Output
Please enter no more than 15 characters.
Output of all business rules for vacation are under tests.
business rules for vacation approval
employee
first name + last name
√ fill no names
√ fill empty names
√ fill long names
√ fill some names
duration
from and to fields
√ fill no dates
√ fill empty dates
√ fill dates before today
√ fill dates qreater than one year from today
√ fill dates qreater than one year from today
√ fill today
√ fill one year from today
duration in days
√ zero duration
√ negative duration
√ minimal duration
√ maximal duration 25 days (25 + 10 weekends) (108ms)
√ too big duration 26 days (26 + 10 weekends) (103ms)
excluded days are in duration range
√ is in of duration range
√ is one out of duration range
√ is more than one out of duration range
deputy
first name + last name
√ fill no names
√ fill empty names
√ fill long names
√ fill some names
email
√ fill no email
√ fill wrong email
√ fill some email
deputy check with list of all approved vacations that they are not in conflict
√ fill employee with vacation and confict in days (1012ms)
√ fill employee with vacation and confict in days (1015ms)
complex test
√ fill all fields correctly (1013ms)
duration days
range days
√ the same days - return 1 day
√ positive range - number of days
√ negative range - zero day
vacation days - exclude weekends
√ positive range - one weekend
√ negative range - zero day
√ positive range - three weekends
vacation days - specific exclude - e.g. public holiday
√ within weekdays Wednesday, July 30th 2014