Skip to content

Commit

Permalink
feat(config): make config constructor param optional and place defaul…
Browse files Browse the repository at this point in the history
…t trigger in static property
  • Loading branch information
RomkeVdMeulen committed Nov 1, 2019
1 parent 39a4e67 commit a52f4c4
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 3 deletions.
4 changes: 3 additions & 1 deletion src/config.ts
Expand Up @@ -7,8 +7,10 @@ import { validateTrigger } from './validate-trigger';
* Aurelia Validation Configuration API * Aurelia Validation Configuration API
*/ */
export class AureliaValidationConfiguration { export class AureliaValidationConfiguration {
public static DEFAULT_VALIDATION_TRIGGER = validateTrigger.blur;

private validatorType: { new (...args: any[]): Validator } = StandardValidator; private validatorType: { new (...args: any[]): Validator } = StandardValidator;
private validationTrigger = validateTrigger.blur; private validationTrigger = AureliaValidationConfiguration.DEFAULT_VALIDATION_TRIGGER;


/** /**
* Use a custom Validator implementation. * Use a custom Validator implementation.
Expand Down
6 changes: 4 additions & 2 deletions src/validation-controller.ts
Expand Up @@ -58,9 +58,11 @@ export class ValidationController {
constructor( constructor(
private validator: Validator, private validator: Validator,
private propertyParser: PropertyAccessorParser, private propertyParser: PropertyAccessorParser,
config: AureliaValidationConfiguration, config?: AureliaValidationConfiguration,
) { ) {
this.validateTrigger = config.getDefaultValidationTrigger(); this.validateTrigger = config instanceof AureliaValidationConfiguration
? config.getDefaultValidationTrigger()
: AureliaValidationConfiguration.DEFAULT_VALIDATION_TRIGGER;
} }


/** /**
Expand Down
22 changes: 22 additions & 0 deletions test/validation-controller.ts
@@ -0,0 +1,22 @@
import {
AureliaValidationConfiguration,
PropertyAccessorParser,
ValidationController,
Validator,
validateTrigger,
} from '../src/aurelia-validation';

describe('ValidationController', () => {
it('takes a validator, a PropertyAccessorParser, and optional config', () => {
const validator = {} as any as Validator;
const parser = {} as any as PropertyAccessorParser;
const controller = new ValidationController(validator, parser);
expect(controller.validateTrigger).toBe(AureliaValidationConfiguration.DEFAULT_VALIDATION_TRIGGER);

const trigger = validateTrigger.changeOrBlur;
const config = new AureliaValidationConfiguration();
config.defaultValidationTrigger(trigger);
const controllerWithConfig = new ValidationController(validator, parser, config);
expect(controllerWithConfig.validateTrigger).toBe(trigger);
});
});

0 comments on commit a52f4c4

Please sign in to comment.