fix(scenario): don't trigger input events on IE9
input.enter() should trigger 'change' rather than 'input' event on IE9 because input events on IE9 are broken and angular doesn't rely on them
This commit is contained in:
@@ -198,13 +198,13 @@ angular.scenario.dsl('binding', function() {
|
||||
*/
|
||||
angular.scenario.dsl('input', function() {
|
||||
var chain = {};
|
||||
var supportInputEvent = 'oninput' in document.createElement('div');
|
||||
var supportInputEvent = 'oninput' in document.createElement('div') && msie != 9;
|
||||
|
||||
chain.enter = function(value, event) {
|
||||
return this.addFutureAction("input '" + this.name + "' enter '" + value + "'", function($window, $document, done) {
|
||||
var input = $document.elements('[ng\\:model="$1"]', this.name).filter(':input');
|
||||
input.val(value);
|
||||
input.trigger(event || supportInputEvent && 'input' || 'change');
|
||||
input.trigger(event || (supportInputEvent ? 'input' : 'change'));
|
||||
done();
|
||||
});
|
||||
};
|
||||
|
||||
@@ -269,6 +269,7 @@ describe("angular.scenario.dsl", function() {
|
||||
$root.dsl.select('test').options('A', 'B');
|
||||
expect($root.futureError).toMatch(/did not match/);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('Element', function() {
|
||||
@@ -553,12 +554,22 @@ describe("angular.scenario.dsl", function() {
|
||||
});
|
||||
|
||||
describe('Input', function() {
|
||||
it('should change value in text input', function() {
|
||||
doc.append('<input ng-model="test.input" value="something">');
|
||||
var chain = $root.dsl.input('test.input');
|
||||
chain.enter('foo');
|
||||
expect(_jQuery('input[ng-model="test.input"]').val()).toEqual('foo');
|
||||
});
|
||||
it('should change value in text input', inject(function($compile) {
|
||||
runs(function() {
|
||||
element = $compile('<input ng-model="test.input" value="something">')($root);
|
||||
doc.append(element);
|
||||
var chain = $root.dsl.input('test.input');
|
||||
chain.enter('foo');
|
||||
expect(_jQuery('input[ng-model="test.input"]').val()).toEqual('foo');
|
||||
});
|
||||
|
||||
// cleanup the event queue
|
||||
waits(0);
|
||||
|
||||
runs(function() {
|
||||
expect($root.test.input).toBe('foo');
|
||||
});
|
||||
}));
|
||||
|
||||
it('should change value in text input in dash form', function() {
|
||||
doc.append('<input ng-model="test.input" value="something">');
|
||||
|
||||
Reference in New Issue
Block a user