tests for lazy option

This commit is contained in:
Evan You 2013-10-12 20:32:21 -04:00
parent b8781c54eb
commit c1206f89b3
4 changed files with 47 additions and 22 deletions

View File

@ -18,6 +18,9 @@
"assert": true,
"mock": true,
"Seed": true,
"$": true
"$": true,
"mockChangeEvent": true,
"mockMouseEvent": true,
"mockKeyEvent": true
}
}

View File

@ -29,6 +29,27 @@
return el
}
function mockChangeEvent () {
var e = document.createEvent('HTMLEvents')
e.initEvent('change', true, true)
return e
}
function mockKeyEvent (type) {
var e = document.createEvent('KeyboardEvent'),
initMethod = e.initKeyboardEvent
? 'initKeyboardEvent'
: 'initKeyEvent'
e[initMethod](type, true, true, null, false, false, false, false, 9, 0)
return e
}
function mockMouseEvent (type) {
var e = document.createEvent('MouseEvent')
e.initMouseEvent(type, true, true, null, 1, 0, 0, 0, 0, false, false, false, false, 0, null)
return e
}
function $ (selector) {
return document.querySelector(selector).innerHTML
}

View File

@ -299,6 +299,28 @@ describe('UNIT: API', function () {
})
describe('lazy', function () {
it('should make text input fields only trigger on change', function () {
var Test = Seed.extend({
template: '<input type="text" sd-model="test">',
lazy: true
})
var t = new Test({
scope: {
test: 'hi'
}
})
var input = t.$el.querySelector('input')
input.value = 'hohoho'
input.dispatchEvent(mockKeyEvent('keyup'))
assert.strictEqual(t.test, 'hi')
input.dispatchEvent(mockChangeEvent())
assert.strictEqual(t.test, 'hohoho')
})
})
describe('element options', function () {
it('should not accept el as an extension option', function () {

View File

@ -556,24 +556,3 @@ function mockDirective (dirName, tag, type) {
if (tag === 'input') ret.el.type = type || 'text'
return ret
}
function mockChangeEvent () {
var e = document.createEvent('HTMLEvents')
e.initEvent('change', true, true)
return e
}
function mockKeyEvent (type) {
var e = document.createEvent('KeyboardEvent'),
initMethod = e.initKeyboardEvent
? 'initKeyboardEvent'
: 'initKeyEvent'
e[initMethod](type, true, true, null, false, false, false, false, 9, 0)
return e
}
function mockMouseEvent (type) {
var e = document.createEvent('MouseEvent')
e.initMouseEvent(type, true, true, null, 1, 0, 0, 0, 0, false, false, false, false, 0, null)
return e
}