Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Unified Diff: third_party/pkg/angular/test/directive/ng_model_validators_spec.dart

Issue 257423008: Update all Angular libs (run update_all.sh). (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
+ });
+ });
});
-});
+}

Powered by Google App Engine
This is Rietveld 408576698