Evan You 12 роки тому
батько
коміт
c1206f89b3
4 змінених файлів з 47 додано та 22 видалено
  1. 4 1
      test/.jshintrc
  2. 21 0
      test/unit/runner.html
  3. 22 0
      test/unit/specs/api.js
  4. 0 21
      test/unit/specs/directives.js

+ 4 - 1
test/.jshintrc

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

+ 21 - 0
test/unit/runner.html

@@ -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
 			}

+ 22 - 0
test/unit/specs/api.js

@@ -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 () {

+ 0 - 21
test/unit/specs/directives.js

@@ -555,25 +555,4 @@ 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
 }