All files / utils/validation/validators/field RegexValidator.ts

100% Statements 11/11
100% Branches 4/4
100% Functions 2/2
100% Lines 11/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42  1x             1x           3x   3x               3x     3x   1x     2x   2x   1x     2x    
import { ValidatorOptions } from "../Validator";
import SingleValueFieldValidator, { SingleValueFieldValidationContext } from "./SingleValueFieldValidator";
 
export interface RegexValidatorOptions extends ValidatorOptions {
 
    regex: RegExp;
}
 
export default abstract class RegexValidator extends SingleValueFieldValidator {
 
    _regex: RegExp;
 
    constructor(options: RegexValidatorOptions) {
 
        super(options);
 
        this._regex = options.regex!;
    }
 
    validate(context: SingleValueFieldValidationContext): boolean {
 
        const {
            label,
            value
        } = context;
 
        // Assume valid if the valid is undefined
        if (value === undefined)
        {
            return true;
        }
 
        var valid = this._regex.test(value);
 
        if (!valid) {
 
            this.emitErrors(context, { label });
        }
 
        return valid;
    }
}