saldo
Version:
Portuguese salary calculator library
47 lines (46 loc) • 2.09 kB
JavaScript
import { VALID_PERIODS } from "../config/schemas";
export const validateNumberOfHolders = (numberOfHolders) => {
if (numberOfHolders !== null && numberOfHolders !== undefined && (numberOfHolders !== 1 && numberOfHolders !== 2)) {
throw new Error("'numberOfHolders' must be null, undefined, 1 or 2");
}
};
export const validateMarriedAndNumberOfHolders = (married, numberOfHolders) => {
if (!married) {
return;
}
if (married && (numberOfHolders === null || numberOfHolders === undefined)) {
throw new Error("'numberOfHolders' is required for married workers");
}
if (married && numberOfHolders !== 1 && numberOfHolders !== 2) {
throw new Error("'numberOfHolders' must be 1 or 2 for married workers");
}
};
export const validatePartnerDisabled = (married, partnerDisabled) => {
if (!married && partnerDisabled) {
throw new Error("'partnerDisabled' is not allowed for single workers");
}
};
export const validateDependents = (numberOfDependents, numberOfDependentsDisabled) => {
/**
* Validate the number of dependents and the number of dependents disabled.
*/
if (numberOfDependentsDisabled === null || numberOfDependentsDisabled === undefined) {
return;
}
if (numberOfDependents === null || numberOfDependents === undefined) {
throw new Error("'numberOfDependents' is required when 'numberOfDependentsDisabled' is provided");
}
if (numberOfDependentsDisabled > numberOfDependents) {
throw new Error("'numberOfDependentsDisabled' must be less than or equal to 'numberOfDependents'");
}
};
export const validateLunchAllowanceMode = (lunchAllowanceMode) => {
if (lunchAllowanceMode !== "cupon" && lunchAllowanceMode !== "salary") {
throw new Error(`'lunchAllowanceMode' must be 'cupon' or 'salary'. Provided: ${lunchAllowanceMode}`);
}
};
export const validatePeriod = (period) => {
if (!VALID_PERIODS.includes(period)) {
throw new Error(`'period' must be one of ${VALID_PERIODS.join(', ')}. Provided: ${period}`);
}
};