Neoclassical Programming Multitude

    br-vacation-approval

    1.0.4 • Public • Published

    vacationApproval

    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

    Basic usage

    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.

    Tests

    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
     

    Install

    npm i br-vacation-approval

    DownloadsWeekly Downloads

    5

    Version

    1.0.4

    License

    MIT

    Last publish

    Collaborators

    • rsamec