Add tests for #1870

This commit is contained in:
Pierre-Yves Gérardy 2017-06-12 18:26:45 +02:00
parent 6c06d41f94
commit 894152440b
3 changed files with 63 additions and 6 deletions

View file

@ -345,18 +345,22 @@ module.exports = function(options) {
if (element.nodeName === "TEXTAREA") {
var wasNeverSet = true
var value = ""
var valueSetter = spy(function(v) {
wasNeverSet = false
/*eslint-disable no-implicit-coercion*/
value = v === null ? "" : "" + v
/*eslint-enable no-implicit-coercion*/
})
Object.defineProperty(element, "value", {
get: function() {
return wasNeverSet && this.firstChild ? this.firstChild.nodeValue : value
},
set: function(v) {
wasNeverSet = false
/*eslint-disable no-implicit-coercion*/
value = v === null ? "" : "" + v
/*eslint-enable no-implicit-coercion*/
},
set: valueSetter,
enumerable: true,
})
registerSpies(element, {
valueSetter: valueSetter
})
}
/* eslint-disable radix */

View file

@ -1237,5 +1237,21 @@ o.spec("domMock", function() {
o(spies.valueSetter.this).equals(option)
o(spies.valueSetter.args[0]).equals("aaa")
})
o("textarea elements have spies on value setters", function() {
var textarea = $window.document.createElement("textarea")
var spies = $window.__getSpies(textarea)
o(typeof spies).equals("object")
o(spies).notEquals(null)
o(typeof spies.valueSetter).equals("function")
o(spies.valueSetter.callCount).equals(0)
textarea.value = "aaa"
o(spies.valueSetter.callCount).equals(1)
o(spies.valueSetter.this).equals(textarea)
o(spies.valueSetter.args[0]).equals("aaa")
})
})
})