| Index: third_party/pkg/angular/test/directive/ng_model_validators_spec.dart
|
| diff --git a/third_party/pkg/angular/test/directive/ng_model_validators_spec.dart b/third_party/pkg/angular/test/directive/ng_model_validators_spec.dart
|
| index d42e5fb5c21310f7451cf49ae8635121a2c582df..3aa9d54ee9ac2d07a6fb80737ad8065cd32cf9e5 100644
|
| --- a/third_party/pkg/angular/test/directive/ng_model_validators_spec.dart
|
| +++ b/third_party/pkg/angular/test/directive/ng_model_validators_spec.dart
|
| @@ -2,351 +2,631 @@ library ng_model_validators;
|
|
|
| import '../_specs.dart';
|
|
|
| -main() =>
|
| -describe('ngModel validators', () {
|
| - TestBed _;
|
| +void main() {
|
| + they(should, tokens, callback, [exclusive=false]) {
|
| + tokens.forEach((token) {
|
| + describe(token, () {
|
| + (exclusive ? iit : it)(should, () => callback(token));
|
| + });
|
| + });
|
| + }
|
|
|
| - beforeEach(inject((TestBed tb) => _ = tb));
|
| + tthey(should, tokens, callback) =>
|
| + they(should, tokens, callback, true);
|
|
|
| - describe('required', () {
|
| - it('should validate the input field if the required attribute is set', inject((RootScope scope) {
|
| - _.compile('<input type="text" ng-model="val" probe="i" required />');
|
| - Probe probe = _.rootScope.context['i'];
|
| - var model = probe.directive(NgModel);
|
| + describe('ngModel validators', () {
|
| + TestBed _;
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(false);
|
| - expect(model.invalid).toEqual(true);
|
| + beforeEach((TestBed tb) => _ = tb);
|
|
|
| - _.rootScope.context['val'] = 'value';
|
| - model.validate();
|
| + describe('required', () {
|
| + it('should validate the input field if the required attribute is set', (RootScope scope) {
|
| + _.compile('<input type="text" ng-model="val" probe="i" required />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
|
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| - }));
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
|
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = 'value';
|
| + });
|
|
|
| - it('should validate a number input field if the required attribute is set', inject((RootScope scope) {
|
| - _.compile('<input type="number" ng-model="val" probe="i" required="true" />');
|
| - Probe probe = _.rootScope.context['i'];
|
| - var model = probe.directive(NgModel);
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| + });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(false);
|
| - expect(model.invalid).toEqual(true);
|
|
|
| - _.rootScope.context['val'] = 5;
|
| - model.validate();
|
| + it('should validate a number input field if the required attribute is set', (RootScope scope) {
|
| + _.compile('<input type="number" ng-model="val" probe="i" required="true" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
|
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| - }));
|
| + _.rootScope.apply();
|
|
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
|
|
| - it('should validate the input field depending on if ng-required is true', inject((RootScope scope) {
|
| - _.compile('<input type="text" ng-model="val" probe="i" ng-required="requireMe" />');
|
| - Probe probe = _.rootScope.context['i'];
|
| - var model = probe.directive(NgModel);
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = 5;
|
| + });
|
|
|
| - _.rootScope.apply();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| + });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['requireMe'] = true;
|
| - });
|
| + it('should validate the input field depending on if ng-required is true', (RootScope scope) {
|
| + _.compile('<input type="text" ng-model="val" probe="i" ng-required="requireMe" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(false);
|
| - expect(model.invalid).toEqual(true);
|
| + _.rootScope.apply();
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['requireMe'] = false;
|
| - });
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| - }));
|
| - });
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['requireMe'] = true;
|
| + });
|
|
|
| - describe('[type="url"]', () {
|
| - it('should validate the input field given a valid or invalid URL', inject((RootScope scope) {
|
| - _.compile('<input type="url" ng-model="val" probe="i" />');
|
| - Probe probe = _.rootScope.context['i'];
|
| - var model = probe.directive(NgModel);
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['requireMe'] = false;
|
| + });
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = 'googledotcom';
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| });
|
| + });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(false);
|
| - expect(model.invalid).toEqual(true);
|
| + describe('[type="url"]', () {
|
| + it('should validate the input field given a valid or invalid URL', (RootScope scope) {
|
| + _.compile('<input type="url" ng-model="val" probe="i" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = 'http://www.google.com';
|
| - });
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| - }));
|
| - });
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = 'googledotcom';
|
| + });
|
|
|
| - describe('[type="email"]', () {
|
| - it('should validate the input field given a valid or invalid email address', inject((RootScope scope) {
|
| - _.compile('<input type="email" ng-model="val" probe="i" />');
|
| - Probe probe = _.rootScope.context['i'];
|
| - var model = probe.directive(NgModel);
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = 'http://www.google.com';
|
| + });
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = 'matiasatemail.com';
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| });
|
| + });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(false);
|
| - expect(model.invalid).toEqual(true);
|
| + describe('[type="email"]', () {
|
| + it('should validate the input field given a valid or invalid email address', (RootScope scope) {
|
| + _.compile('<input type="email" ng-model="val" probe="i" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = 'matias@gmail.com';
|
| - });
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| - }));
|
| - });
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = 'matiasatemail.com';
|
| + });
|
|
|
| - describe('[type="number"]', () {
|
| - it('should validate the input field given a valid or invalid number', inject((RootScope scope) {
|
| - _.compile('<input type="number" ng-model="val" probe="i" />');
|
| - Probe probe = _.rootScope.context['i'];
|
| - var model = probe.directive(NgModel);
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = 'matias@gmail.com';
|
| + });
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = '11';
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| });
|
| + });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + describe('[type="number|range"]', () {
|
| + they('should validate the input field given a valid or invalid number',
|
| + ['range', 'number'],
|
| + (type) {
|
|
|
| + _.compile('<input type="$type" ng-model="val" probe="i" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = 10;
|
| - });
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = '11';
|
| + });
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = 'twelve';
|
| - });
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(false);
|
| - expect(model.invalid).toEqual(true);
|
| - }));
|
| - });
|
|
|
| - describe('pattern', () {
|
| - it('should validate the input field if a ng-pattern attribute is provided', inject((RootScope scope) {
|
| - _.compile('<input type="text" ng-pattern="myPattern" ng-model="val" probe="i" />');
|
| - Probe probe = _.rootScope.context['i'];
|
| - var model = probe.directive(NgModel);
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = 10;
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = 'twelve';
|
| + });
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = "abc";
|
| - _.rootScope.context['myPattern'] = "[a-z]+";
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
| });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + they('should perform a max number validation if a max attribute value is present',
|
| + ['range', 'number'],
|
| + (type) {
|
| +
|
| + _.compile('<input type="$type" ng-model="val" max="10" probe="i" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "8";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| + expect(model.hasErrorState('ng-max')).toBe(false);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "99";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
| + expect(model.hasErrorState('ng-max')).toBe(true);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "a";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
| + expect(model.hasErrorState('ng-max')).toBe(false);
|
| + expect(model.hasErrorState('ng-number')).toBe(true);
|
| + });
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = "abc";
|
| - _.rootScope.context['myPattern'] = "[0-9]+";
|
| + they('should perform a max number validation if a ng-max attribute value is present and/or changed',
|
| + ['range', 'number'],
|
| + (type) {
|
| +
|
| + _.compile('<input type="$type" ng-model="val" ng-max="maxVal" probe="i" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
| +
|
| + //should be valid even when no number is present
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| + expect(model.hasErrorState('ng-max')).toBe(false);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "20";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| + expect(model.hasErrorState('ng-max')).toBe(false);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['maxVal'] = "19";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
| + expect(model.hasErrorState('ng-max')).toBe(true);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['maxVal'] = "22";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| + expect(model.hasErrorState('ng-max')).toBe(false);
|
| });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(false);
|
| - expect(model.invalid).toEqual(true);
|
| + they('should perform a min number validation if a min attribute value is present',
|
| + ['range', 'number'],
|
| + (type) {
|
| +
|
| + _.compile('<input type="$type" ng-model="val" min="-10" probe="i" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "8";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| + expect(model.hasErrorState('ng-min')).toBe(false);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "-20";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
| + expect(model.hasErrorState('ng-min')).toBe(true);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "x";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
| + expect(model.hasErrorState('ng-min')).toBe(false);
|
| + expect(model.hasErrorState('ng-number')).toBe(true);
|
| + });
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = "123";
|
| - _.rootScope.context['myPattern'] = "123";
|
| + they('should perform a min number validation if a ng-min attribute value is present and/or changed',
|
| + ['range', 'number'],
|
| + (type) {
|
| +
|
| + _.compile('<input type="$type" ng-model="val" ng-min="minVal" probe="i" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
| +
|
| + //should be valid even when no number is present
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| + expect(model.hasErrorState('ng-min')).toBe(false);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "5";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| + expect(model.hasErrorState('ng-min')).toBe(false);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['minVal'] = "5.5";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
| + expect(model.hasErrorState('ng-min')).toBe(true);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "5.6";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| + expect(model.hasErrorState('ng-min')).toBe(false);
|
| + });
|
| + });
|
| +
|
| + describe('pattern', () {
|
| + it('should validate the input field if a ng-pattern attribute is provided', (RootScope scope) {
|
| + _.compile('<input type="text" ng-pattern="myPattern" ng-model="val" probe="i" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "abc";
|
| + _.rootScope.context['myPattern'] = "[a-z]+";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "abc";
|
| + _.rootScope.context['myPattern'] = "[0-9]+";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "123";
|
| + _.rootScope.context['myPattern'] = "123";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| - }));
|
| + it('should validate the input field if a pattern attribute is provided', (RootScope scope) {
|
| + _.compile('<input type="text" pattern="[0-5]+" ng-model="val" probe="i" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
|
|
| - it('should validate the input field if a pattern attribute is provided', inject((RootScope scope) {
|
| - _.compile('<input type="text" pattern="[0-5]+" ng-model="val" probe="i" />');
|
| - Probe probe = _.rootScope.context['i'];
|
| - var model = probe.directive(NgModel);
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "abc";
|
| + });
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = "abc";
|
| - });
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(false);
|
| - expect(model.invalid).toEqual(true);
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "012345";
|
| + });
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = "012345";
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "6789";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
| });
|
| + });
|
| +
|
| + describe('minlength', () {
|
| + it('should validate the input field if a minlength attribute is provided', (RootScope scope) {
|
| + _.compile('<input type="text" minlength="5" ng-model="val" probe="i" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "abc";
|
| + });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = "6789";
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "abcdef";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(false);
|
| - expect(model.invalid).toEqual(true);
|
| - }));
|
| - });
|
| + it('should validate the input field if a ng-minlength attribute is provided', (RootScope scope) {
|
| + _.compile('<input type="text" ng-minlength="len" ng-model="val" probe="i" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
|
|
| - describe('minlength', () {
|
| - it('should validate the input field if a minlength attribute is provided', inject((RootScope scope) {
|
| - _.compile('<input type="text" minlength="5" ng-model="val" probe="i" />');
|
| - Probe probe = _.rootScope.context['i'];
|
| - var model = probe.directive(NgModel);
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "abcdef";
|
| + _.rootScope.context['len'] = 3;
|
| + });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = "abc";
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "abc";
|
| + _.rootScope.context['len'] = 5;
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
| });
|
| + });
|
| +
|
| + describe('maxlength', () {
|
| + it('should validate the input field if a maxlength attribute is provided', (RootScope scope) {
|
| + _.compile('<input type="text" maxlength="5" ng-model="val" probe="i" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(false);
|
| - expect(model.invalid).toEqual(true);
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "abcdef";
|
| + });
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = "abcdef";
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
| +
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "abc";
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
| });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| - }));
|
| + it('should validate the input field if a ng-maxlength attribute is provided', (RootScope scope) {
|
| + _.compile('<input type="text" ng-maxlength="len" ng-model="val" probe="i" />');
|
| + Probe probe = _.rootScope.context['i'];
|
| + var model = probe.directive(NgModel);
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
|
|
| - it('should validate the input field if a ng-minlength attribute is provided', inject((RootScope scope) {
|
| - _.compile('<input type="text" ng-minlength="len" ng-model="val" probe="i" />');
|
| - Probe probe = _.rootScope.context['i'];
|
| - var model = probe.directive(NgModel);
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "abcdef";
|
| + _.rootScope.context['len'] = 6;
|
| + });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + model.validate();
|
| + expect(model.valid).toEqual(true);
|
| + expect(model.invalid).toEqual(false);
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = "abcdef";
|
| - _.rootScope.context['len'] = 3;
|
| + _.rootScope.apply(() {
|
| + _.rootScope.context['val'] = "abc";
|
| + _.rootScope.context['len'] = 1;
|
| + });
|
| +
|
| + model.validate();
|
| + expect(model.valid).toEqual(false);
|
| + expect(model.invalid).toEqual(true);
|
| + });
|
| + });
|
| +
|
| + describe('when toggled it should properly validate', () {
|
| + var build, input, scope, model;
|
| + beforeEach(() {
|
| + scope = _.rootScope;
|
| + build = (attr, type) {
|
| + input = _.compile('<input type="$type" probe="p" ng-model="value" $attr="attr" />');
|
| + model = scope.context['p'].directive(NgModel);
|
| + };
|
| });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + it('ng-required', () {
|
| + var input = build('ng-required', 'text');
|
| + scope.apply(() {
|
| + scope.context['attr'] = true;
|
| + scope.context['value'] = '';
|
| + });
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = "abc";
|
| - _.rootScope.context['len'] = 5;
|
| + expect(model.valid).toBe(false);
|
| +
|
| + scope.apply(() {
|
| + scope.context['attr'] = false;
|
| + });
|
| +
|
| + expect(model.valid).toBe(true);
|
| });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(false);
|
| - expect(model.invalid).toEqual(true);
|
| - }));
|
| - });
|
| + it('ng-pattern', () {
|
| + var input = build('ng-pattern', 'text');
|
| + scope.apply(() {
|
| + scope.context['attr'] = '^\d+\$';
|
| + scope.context['value'] = 'abc';
|
| + });
|
|
|
| - describe('maxlength', () {
|
| - it('should validate the input field if a maxlength attribute is provided', inject((RootScope scope) {
|
| - _.compile('<input type="text" maxlength="5" ng-model="val" probe="i" />');
|
| - Probe probe = _.rootScope.context['i'];
|
| - var model = probe.directive(NgModel);
|
| + expect(model.valid).toBe(false);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + scope.apply(() {
|
| + scope.context['attr'] = null;
|
| + });
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = "abcdef";
|
| + expect(model.valid).toBe(true);
|
| });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(false);
|
| - expect(model.invalid).toEqual(true);
|
| + it('ng-minlength', () {
|
| + var input = build('ng-minlength', 'text');
|
| + scope.apply(() {
|
| + scope.context['attr'] = '10';
|
| + scope.context['value'] = 'abc';
|
| + });
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = "abc";
|
| + expect(model.valid).toBe(false);
|
| +
|
| + scope.apply(() {
|
| + scope.context['attr'] = null;
|
| + });
|
| +
|
| + expect(model.valid).toBe(true);
|
| });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| - }));
|
| + it('ng-minlength', () {
|
| + var input = build('ng-maxlength', 'text');
|
| + scope.apply(() {
|
| + scope.context['attr'] = '3';
|
| + scope.context['value'] = 'abcd';
|
| + });
|
|
|
| - it('should validate the input field if a ng-maxlength attribute is provided', inject((RootScope scope) {
|
| - _.compile('<input type="text" ng-maxlength="len" ng-model="val" probe="i" />');
|
| - Probe probe = _.rootScope.context['i'];
|
| - var model = probe.directive(NgModel);
|
| + expect(model.valid).toBe(false);
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + scope.apply(() {
|
| + scope.context['attr'] = null;
|
| + });
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = "abcdef";
|
| - _.rootScope.context['len'] = 6;
|
| + expect(model.valid).toBe(true);
|
| });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(true);
|
| - expect(model.invalid).toEqual(false);
|
| + it('ng-min', () {
|
| + var input = build('ng-min', 'number');
|
| + scope.apply(() {
|
| + scope.context['attr'] = '5.0';
|
| + scope.context['value'] = 3;
|
| + });
|
| +
|
| + expect(model.valid).toBe(false);
|
|
|
| - _.rootScope.apply(() {
|
| - _.rootScope.context['val'] = "abc";
|
| - _.rootScope.context['len'] = 1;
|
| + scope.apply(() {
|
| + scope.context['attr'] = null;
|
| + });
|
| +
|
| + expect(model.valid).toBe(true);
|
| });
|
|
|
| - model.validate();
|
| - expect(model.valid).toEqual(false);
|
| - expect(model.invalid).toEqual(true);
|
| - }));
|
| + it('ng-max', () {
|
| + var input = build('ng-max', 'number');
|
| + scope.apply(() {
|
| + scope.context['attr'] = '5.0';
|
| + scope.context['value'] = 8;
|
| + });
|
| +
|
| + expect(model.valid).toBe(false);
|
| +
|
| + scope.apply(() {
|
| + scope.context['attr'] = null;
|
| + });
|
| +
|
| + expect(model.valid).toBe(true);
|
| + });
|
| + });
|
| });
|
| -});
|
| +}
|
|
|