sn-controls-aurelia
Version:
Aurelia controls for sensenet ECM
86 lines (73 loc) • 3.14 kB
text/typescript
import { expect } from 'chai';
import { suite, test } from 'mocha-typescript';
import { FieldSettings } from 'sn-client-js';
import { SettingsValidationCustomAttribute } from '../../src/attributes';
import 'jsdom';
export class SettingsValidationTests {
private element: HTMLElement;
private attribute: SettingsValidationCustomAttribute;
before() {
this.element = document.createElement('input'); //new HTMLElement();
this.attribute = new SettingsValidationCustomAttribute(this.element);
}
public async 'Can be constructed'() {
expect(this.attribute).to.be.instanceof(SettingsValidationCustomAttribute);
}
public async 'Setting can be bound'() {
const s = {} as FieldSettings.FieldSetting;
this.attribute.settings = s;
expect(this.attribute.settings).to.be.eq(s);
}
public async 'Sets required attribute on input element based on the complusory setting'() {
this.attribute.settingsChanged({
Compulsory: true
} as FieldSettings.FieldSetting);
expect(this.element.getAttribute('required')).to.be.eq('required');
this.attribute.settingsChanged({
Compulsory: false
} as FieldSettings.FieldSetting);
expect(this.element.getAttribute('required')).to.be.null;
}
public async 'Sets minlength attribute on input element based on the minLength setting'() {
this.attribute.settingsChanged({
MinLength: 10,
Type: 'TextFieldSetting'
} as FieldSettings.TextFieldSetting);
expect(this.element.getAttribute('minlength')).to.be.eq('10');
this.attribute.settingsChanged({
MinLength: undefined
} as FieldSettings.TextFieldSetting);
expect(this.element.getAttribute('minlength')).to.be.null;
}
public async 'Sets maxlength attribute on input element based on the maxLength setting'() {
this.attribute.settingsChanged({
MaxLength: 10,
Type: 'TextFieldSetting'
} as FieldSettings.TextFieldSetting);
expect(this.element.getAttribute('maxlength')).to.be.eq('10');
this.attribute.settingsChanged({
MaxLength: undefined
} as FieldSettings.TextFieldSetting);
expect(this.element.getAttribute('maxlength')).to.be.null;
}
public async 'Sets pattern attribute on input element based on the regex setting'() {
this.attribute.settingsChanged({
Name: 'Example',
Type: 'ShortTextFieldSetting',
Regex: 'example'
} as FieldSettings.ShortTextFieldSetting);
expect(this.element.getAttribute('pattern')).to.be.eq('example');
this.attribute.settingsChanged({
Name: 'Example',
Type: 'ShortTextFieldSetting'
} as FieldSettings.ShortTextFieldSetting);
expect(this.element.getAttribute('pattern')).to.be.null;
}
}