diff options
| author | Mark Dalgleish | 2013-03-21 18:07:49 +1100 |
|---|---|---|
| committer | Pete Bacon Darwin | 2013-04-17 21:20:08 +0100 |
| commit | 363e4cbf649de4c5206f1904ee76f89301ceaab0 (patch) | |
| tree | 34ae51c17ec2698732332f5a2975df282b71c85e /test/ng/directive/inputSpec.js | |
| parent | c4d5631f1a3d66340f82a0cd6a50d53057110c1a (diff) | |
| download | angular.js-363e4cbf649de4c5206f1904ee76f89301ceaab0.tar.bz2 | |
fix(ngModel): use paste/cut events in IE to support context menu
In IE the model is not updated when the input value is modified using the context
menu, e.g. pasting from the clipboard, or cutting all or part of the current value.
To capture these changes, we bind to the proprietary 'paste' and 'cut' events.
Closes #1462
Diffstat (limited to 'test/ng/directive/inputSpec.js')
| -rw-r--r-- | test/ng/directive/inputSpec.js | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/test/ng/directive/inputSpec.js b/test/ng/directive/inputSpec.js index d69be27c..f8898074 100644 --- a/test/ng/directive/inputSpec.js +++ b/test/ng/directive/inputSpec.js @@ -309,7 +309,7 @@ describe('ngModel', function() { describe('input', function() { - var formElm, inputElm, scope, $compile, changeInputValueTo; + var formElm, inputElm, scope, $compile, $sniffer, $browser, changeInputValueTo; function compileInput(inputHtml) { inputElm = jqLite(inputHtml); @@ -318,7 +318,9 @@ describe('input', function() { $compile(formElm)(scope); } - beforeEach(inject(function($injector, $sniffer) { + beforeEach(inject(function($injector, _$sniffer_, _$browser_) { + $sniffer = _$sniffer_; + $browser = _$browser_; $compile = $injector.get('$compile'); scope = $injector.get('$rootScope'); @@ -385,6 +387,34 @@ describe('input', function() { expect(scope.name).toEqual('adam'); }); + describe('"paste" and "cut" events', function() { + beforeEach(function() { + // Force browser to report a lack of an 'input' event + $sniffer.hasEvent = function(eventName) { + return eventName !== 'input'; + }; + }); + + it('should update the model on "paste" event', function() { + compileInput('<input type="text" ng-model="name" name="alias" ng-change="change()" />'); + + inputElm.val('mark'); + browserTrigger(inputElm, 'paste'); + $browser.defer.flush(); + expect(scope.name).toEqual('mark'); + }); + + it('should update the model on "cut" event', function() { + compileInput('<input type="text" ng-model="name" name="alias" ng-change="change()" />'); + + inputElm.val('john'); + browserTrigger(inputElm, 'cut'); + $browser.defer.flush(); + expect(scope.name).toEqual('john'); + }); + + }); + it('should update the model and trim the value', function() { compileInput('<input type="text" ng-model="name" name="alias" ng-change="change()" />'); |
