diff options
Diffstat (limited to 'test/ng/directive/inputSpec.js')
| -rw-r--r-- | test/ng/directive/inputSpec.js | 57 |
1 files changed, 15 insertions, 42 deletions
diff --git a/test/ng/directive/inputSpec.js b/test/ng/directive/inputSpec.js index 734cb34d..395f37c3 100644 --- a/test/ng/directive/inputSpec.js +++ b/test/ng/directive/inputSpec.js @@ -236,7 +236,7 @@ describe('NgModelController', function() { describe('ng-model', function() { it('should set css classes (ng-valid, ng-invalid, ng-pristine, ng-dirty)', - inject(function($compile, $rootScope) { + inject(function($compile, $rootScope, $sniffer) { var element = $compile('<input type="email" ng-model="value" />')($rootScope); $rootScope.$digest(); @@ -254,14 +254,14 @@ describe('ng-model', function() { expect(element.hasClass('ng-invalid-email')).toBe(true); element.val('invalid-again'); - browserTrigger(element, 'blur'); + browserTrigger(element, $sniffer.hasEvent('input') ? 'input' : 'change'); expect(element).toBeInvalid(); expect(element).toBeDirty(); expect(element.hasClass('ng-valid-email')).toBe(false); expect(element.hasClass('ng-invalid-email')).toBe(true); element.val('vojta@google.com'); - browserTrigger(element, 'blur'); + browserTrigger(element, $sniffer.hasEvent('input') ? 'input' : 'change'); expect(element).toBeValid(); expect(element).toBeDirty(); expect(element.hasClass('ng-valid-email')).toBe(true); @@ -282,7 +282,7 @@ describe('ng-model', function() { describe('input', function() { - var formElm, inputElm, scope, $compile; + var formElm, inputElm, scope, $compile, changeInputValueTo; function compileInput(inputHtml) { formElm = jqLite('<form name="form">' + inputHtml + '</form>'); @@ -290,14 +290,14 @@ describe('input', function() { $compile(formElm)(scope); } - function changeInputValueTo(value) { - inputElm.val(value); - browserTrigger(inputElm, 'blur'); - } - - beforeEach(inject(function($injector) { + beforeEach(inject(function($injector, $sniffer) { $compile = $injector.get('$compile'); scope = $injector.get('$rootScope'); + + changeInputValueTo = function(value) { + inputElm.val(value); + browserTrigger(inputElm, $sniffer.hasEvent('input') ? 'input' : 'change'); + }; })); afterEach(function() { @@ -379,7 +379,7 @@ describe('input', function() { it('should ignore input without ng-model attr', function() { compileInput('<input type="text" name="whatever" required />'); - browserTrigger(inputElm, 'blur'); + changeInputValueTo(''); expect(inputElm.hasClass('ng-valid')).toBe(false); expect(inputElm.hasClass('ng-invalid')).toBe(false); expect(inputElm.hasClass('ng-pristine')).toBe(false); @@ -715,7 +715,7 @@ describe('input', function() { expect(inputElm[1].checked).toBe(true); expect(inputElm[2].checked).toBe(false); - browserTrigger(inputElm[2]); + browserTrigger(inputElm[2], 'click'); expect(scope.color).toBe('blue'); }); @@ -735,7 +735,7 @@ describe('input', function() { expect(inputElm[0].checked).toBe(true); expect(inputElm[1].checked).toBe(false); - browserTrigger(inputElm[1]); + browserTrigger(inputElm[1], 'click'); expect(scope.value).toBe('red'); scope.$apply(function() { @@ -753,7 +753,7 @@ describe('input', function() { it('should ignore checkbox without ng-model attr', function() { compileInput('<input type="checkbox" name="whatever" required />'); - browserTrigger(inputElm, 'blur'); + changeInputValueTo(''); expect(inputElm.hasClass('ng-valid')).toBe(false); expect(inputElm.hasClass('ng-invalid')).toBe(false); expect(inputElm.hasClass('ng-pristine')).toBe(false); @@ -851,7 +851,7 @@ describe('input', function() { compileInput('<textarea name="whatever" required></textarea>'); inputElm = formElm.find('textarea'); - browserTrigger(inputElm, 'blur'); + changeInputValueTo(''); expect(inputElm.hasClass('ng-valid')).toBe(false); expect(inputElm.hasClass('ng-invalid')).toBe(false); expect(inputElm.hasClass('ng-pristine')).toBe(false); @@ -1053,33 +1053,6 @@ describe('input', function() { }); - describe('ng-model-instant', function() { - - it('should bind keydown, change, input events', inject(function($browser) { - compileInput('<input type="text" ng-model="value" ng-model-instant />'); - - inputElm.val('value1'); - browserTrigger(inputElm, 'keydown'); - - // should be async (because of keydown) - expect(scope.value).toBeUndefined(); - - $browser.defer.flush(); - expect(scope.value).toBe('value1'); - - inputElm.val('value2'); - browserTrigger(inputElm, 'change'); - expect(scope.value).toBe('value2'); - - if (msie < 9) return; - - inputElm.val('value3'); - browserTrigger(inputElm, 'input'); - expect(scope.value).toBe('value3'); - })); - }); - - describe('ng-value', function() { it('should evaluate and set constant expressions', function() { |
