All files / lib/dynamic-form-error dynamic-form-error.handler.ts

100% Statements 11/11
100% Branches 4/4
100% Functions 3/3
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              1x   109x   109x   109x       38x 38x 17x             82x 23x 14x   59x      
import { Inject, Injectable, Optional } from '@angular/core';
import { DynamicFormError } from './dynamic-form-error';
import { DynamicFormErrorSettings, dynamicFormErrorSettingsDefault, DYNAMIC_FORM_ERROR_SETTINGS } from './dynamic-form-error-settings';
import { DynamicFormErrorType } from './dynamic-form-error-type';
import { DynamicFormLogger } from './dynamic-form.logger';
 
@Injectable()
export class DynamicFormErrorHandler {
  constructor(
    private logger: DynamicFormLogger,
    @Optional() @Inject(DYNAMIC_FORM_ERROR_SETTINGS)
    readonly settings: DynamicFormErrorSettings,
  ) {
    this.settings = this.settings || dynamicFormErrorSettingsDefault;
  }
 
  handle<ErrorType extends DynamicFormErrorType = DynamicFormErrorType>(error: DynamicFormError<ErrorType>): void {
    this.logger.error(error.type, error.message);
    if (this.settings.throw) {
      throw error;
    }
  }
 
  handleUndefined<Value, ErrorType extends DynamicFormErrorType = DynamicFormErrorType>(
    value: Value | undefined, createError: () => DynamicFormError<ErrorType>,
  ): Value | undefined {
    if (!value) {
      this.handle(createError());
      return undefined;
    }
    return value;
  }
}