npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

br-vacation-approval

v1.0.4

Published

Vacation approval business rules

Downloads

6

Readme

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: '[email protected]'
                },
                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