@elitemike You’re actually running your tests in node.js context or in a browser instance using something like karma-chrome-launcher
?
I’ve tried both. I believe I can get the Aurelia context working, but that isn’t doing me much good.
I’m getting these errors
`
Unable to parse accessor function:
function © {
/* istanbul ignore next */cov_eexd7hncx.f[9]++;cov_eexd7hncx.s[44]++;return c.value;
}
at getAccessorExpression (node_modules/aurelia-validation/dist/commonjs/property-accessor-parser.js:32:15)
at PropertyAccessorParser.Object..PropertyAccessorParser.parse (node_modules/aurelia-validation/dist/commonjs/property-accessor-parser.js:13:28)
at FluentEnsure.Object..FluentEnsure.ensure (node_modules/aurelia-validation/dist/commonjs/implementation/validation-rules.js:332:42)
at Function.Object..ValidationRules.ensure (node_modules/aurelia-validation/dist/commonjs/implementation/validation-rules.js:399:58)
`
while trying to do this
ValidationRules.ensure((c: StringControlConfiguration) => c.value)
.required().when(() => control.required && control.isVisible && !control.isDisabled).withMessage(control.errorMessage !== null ? control.errorMessage : control.label + ' is required')
.then()
.maxLength(control.maxLength).when(() => control.maxLength !== null)
.matches(control.regEx).when(() => control.regEx !== null)
.minLength(control.minLength).when(() => control.minLength !== null)
.on(control);
control.controlFactory.validationController.addObject(control);
To run the tests on node do you have to use aurelia-pal-nodejs
?
I have it included.
This is what the test in the plugin does
import 'aurelia-polyfills';
import { initialize } from 'aurelia-pal-nodejs';
import { Container } from 'aurelia-dependency-injection';
import { configure as configureBindingLanguage } from 'aurelia-templating-binding';
import {
configure as configureValidation,
ValidationRules,
Validator
} from '../src/aurelia-validation';
import * as assert from 'assert';
initialize();
const container = new Container();
configureBindingLanguage({ container });
configureValidation({ container });
I am doing something very similar
The issue is with the regex in getAccesorExpression in aurelia-validation.js,Replace the regex used in parsing the “classic” function with:
/^function\s*\([$_\w\d]+\)\s*\{(?:\s*"use strict";)?(?:[$_\s\w\d\/\*.['"\]+;]+)?\s*return\s+[$_\w\d]+\.([$_\w\d]+)\s*;?\s*\}$/
alternatively u can specify a single property in ValidationRules like
ValidationRules.ensure((this.message)).required()
or add
/* istanbul ignore next */
ValidationRules.ensure((c: StringControlConfiguration) => c.value)