@@ -163,6 +163,160 @@ void main() {
163
163
expect (model.valid).toEqual (false );
164
164
expect (model.invalid).toEqual (true );
165
165
}));
166
+
167
+ it ('should perform a max number validation if a max attribute value is present' ,
168
+ inject ((RootScope scope) {
169
+
170
+ _.compile ('<input type="number" ng-model="val" max="10" probe="i" />' );
171
+ Probe probe = _.rootScope.context['i' ];
172
+ var model = probe.directive (NgModel );
173
+
174
+ _.rootScope.apply (() {
175
+ _.rootScope.context['val' ] = "8" ;
176
+ });
177
+
178
+ model.validate ();
179
+ expect (model.valid).toEqual (true );
180
+ expect (model.invalid).toEqual (false );
181
+ expect (model.hasError ('max' )).toBe (false );
182
+
183
+ _.rootScope.apply (() {
184
+ _.rootScope.context['val' ] = "99" ;
185
+ });
186
+
187
+ model.validate ();
188
+ expect (model.valid).toEqual (false );
189
+ expect (model.invalid).toEqual (true );
190
+ expect (model.hasError ('max' )).toBe (true );
191
+
192
+ _.rootScope.apply (() {
193
+ _.rootScope.context['val' ] = "a" ;
194
+ });
195
+
196
+ model.validate ();
197
+ expect (model.valid).toEqual (false );
198
+ expect (model.invalid).toEqual (true );
199
+ expect (model.hasError ('max' )).toBe (false );
200
+ expect (model.hasError ('number' )).toBe (true );
201
+ }));
202
+
203
+ it ('should perform a max number validation if a ng-max attribute value is present and/or changed' ,
204
+ inject ((RootScope scope) {
205
+
206
+ _.compile ('<input type="number" ng-model="val" ng-max="maxVal" probe="i" />' );
207
+ Probe probe = _.rootScope.context['i' ];
208
+ var model = probe.directive (NgModel );
209
+
210
+ //should be valid even when no number is present
211
+ model.validate ();
212
+ expect (model.valid).toEqual (true );
213
+ expect (model.invalid).toEqual (false );
214
+ expect (model.hasError ('max' )).toBe (false );
215
+
216
+ _.rootScope.apply (() {
217
+ _.rootScope.context['val' ] = "20" ;
218
+ });
219
+
220
+ model.validate ();
221
+ expect (model.valid).toEqual (true );
222
+ expect (model.invalid).toEqual (false );
223
+ expect (model.hasError ('max' )).toBe (false );
224
+
225
+ _.rootScope.apply (() {
226
+ _.rootScope.context['maxVal' ] = "19" ;
227
+ });
228
+
229
+ model.validate ();
230
+ expect (model.valid).toEqual (false );
231
+ expect (model.invalid).toEqual (true );
232
+ expect (model.hasError ('max' )).toBe (true );
233
+
234
+ _.rootScope.apply (() {
235
+ _.rootScope.context['maxVal' ] = "22" ;
236
+ });
237
+
238
+ model.validate ();
239
+ expect (model.valid).toEqual (true );
240
+ expect (model.invalid).toEqual (false );
241
+ expect (model.hasError ('max' )).toBe (false );
242
+ }));
243
+
244
+ it ('should perform a min number validation if a min attribute value is present' ,
245
+ inject ((RootScope scope) {
246
+
247
+ _.compile ('<input type="number" ng-model="val" min="-10" probe="i" />' );
248
+ Probe probe = _.rootScope.context['i' ];
249
+ var model = probe.directive (NgModel );
250
+
251
+ _.rootScope.apply (() {
252
+ _.rootScope.context['val' ] = "8" ;
253
+ });
254
+
255
+ model.validate ();
256
+ expect (model.valid).toEqual (true );
257
+ expect (model.invalid).toEqual (false );
258
+ expect (model.hasError ('min' )).toBe (false );
259
+
260
+ _.rootScope.apply (() {
261
+ _.rootScope.context['val' ] = "-20" ;
262
+ });
263
+
264
+ model.validate ();
265
+ expect (model.valid).toEqual (false );
266
+ expect (model.invalid).toEqual (true );
267
+ expect (model.hasError ('min' )).toBe (true );
268
+
269
+ _.rootScope.apply (() {
270
+ _.rootScope.context['val' ] = "x" ;
271
+ });
272
+
273
+ model.validate ();
274
+ expect (model.valid).toEqual (false );
275
+ expect (model.invalid).toEqual (true );
276
+ expect (model.hasError ('min' )).toBe (false );
277
+ expect (model.hasError ('number' )).toBe (true );
278
+ }));
279
+
280
+ it ('should perform a min number validation if a ng-min attribute value is present and/or changed' ,
281
+ inject ((RootScope scope) {
282
+
283
+ _.compile ('<input type="number" ng-model="val" ng-min="minVal" probe="i" />' );
284
+ Probe probe = _.rootScope.context['i' ];
285
+ var model = probe.directive (NgModel );
286
+
287
+ //should be valid even when no number is present
288
+ model.validate ();
289
+ expect (model.valid).toEqual (true );
290
+ expect (model.invalid).toEqual (false );
291
+ expect (model.hasError ('min' )).toBe (false );
292
+
293
+ _.rootScope.apply (() {
294
+ _.rootScope.context['val' ] = "5" ;
295
+ });
296
+
297
+ model.validate ();
298
+ expect (model.valid).toEqual (true );
299
+ expect (model.invalid).toEqual (false );
300
+ expect (model.hasError ('min' )).toBe (false );
301
+
302
+ _.rootScope.apply (() {
303
+ _.rootScope.context['minVal' ] = "5.5" ;
304
+ });
305
+
306
+ model.validate ();
307
+ expect (model.valid).toEqual (false );
308
+ expect (model.invalid).toEqual (true );
309
+ expect (model.hasError ('min' )).toBe (true );
310
+
311
+ _.rootScope.apply (() {
312
+ _.rootScope.context['val' ] = "5.6" ;
313
+ });
314
+
315
+ model.validate ();
316
+ expect (model.valid).toEqual (true );
317
+ expect (model.invalid).toEqual (false );
318
+ expect (model.hasError ('min' )).toBe (false );
319
+ }));
166
320
});
167
321
168
322
describe ('pattern' , () {
0 commit comments