diff options
| author | Stephen Blott | 2015-01-11 07:15:06 +0000 | 
|---|---|---|
| committer | Stephen Blott | 2015-01-11 07:15:06 +0000 | 
| commit | d65075a3b66fae93a10b849162fa907d0eb99846 (patch) | |
| tree | 721de43d14028cea46b53b792eaf907912c044c8 /tests/dom_tests | |
| parent | 06a2ea5ccdef3703df23fe4233921bd2a6af3abf (diff) | |
| download | vimium-d65075a3b66fae93a10b849162fa907d0eb99846.tar.bz2 | |
Modes; add DOM tests.
Diffstat (limited to 'tests/dom_tests')
| -rw-r--r-- | tests/dom_tests/dom_tests.coffee | 111 | 
1 files changed, 108 insertions, 3 deletions
diff --git a/tests/dom_tests/dom_tests.coffee b/tests/dom_tests/dom_tests.coffee index 4a61877c..ce54190a 100644 --- a/tests/dom_tests/dom_tests.coffee +++ b/tests/dom_tests/dom_tests.coffee @@ -8,10 +8,15 @@ mockKeyboardEvent = (keyChar) ->    event.charCode = (if keyCodes[keyChar] isnt undefined then keyCodes[keyChar] else keyChar.charCodeAt(0))    event.keyIdentifier = "U+00" + event.charCode.toString(16)    event.keyCode = event.charCode -  event.stopImmediatePropagation = -> -  event.preventDefault = -> +  event.stopImmediatePropagation = (event) -> @suppressed = true +  event.preventDefault = (event) -> @suppressed = true    event +# Some of these tests have side effects on the handler stack.  Therefore, we take backups of the stack, and +# restore them later. +backupHandlerStack = -> handlerStack.backup = handlerStack.stack +restoreHandlerStack = -> handlerStack.stack = handlerStack.backup +  #  # Retrieve the hint markers as an array object.  # @@ -170,9 +175,11 @@ context "Input focus",      testContent = "<input type='text' id='first'/><input style='display:none;' id='second'/>        <input type='password' id='third' value='some value'/>"      document.getElementById("test-div").innerHTML = testContent +    backupHandlerStack()    tearDown ->      document.getElementById("test-div").innerHTML = "" +    restoreHandlerStack()    should "focus the right element", ->      focusInput 1 @@ -243,9 +250,107 @@ context "Find prev / next links",      goNext()      assert.equal '#first', window.location.hash -  createLinks = (n) ->    for i in [0...n] by 1      link = document.createElement("a")      link.textContent = "test"      document.getElementById("test-div").appendChild link + +context "Normal mode", +  setup -> +    backupHandlerStack() +    refreshCompletionKeys +      completionKeys: "o" +      validFirstKeys: "o" + +  tearDown -> +    restoreHandlerStack() + +  should "suppress mapped keys", -> +    for event in [ "keydown", "keypress", "keyup" ] +      key = mockKeyboardEvent "o" +      handlerStack.bubbleEvent event, key +      assert.isTrue key.suppressed + +  should "not suppress unmapped keys", -> +    for event in [ "keydown", "keypress", "keyup" ] +      key = mockKeyboardEvent "a" +      handlerStack.bubbleEvent event, key +      assert.isFalse key.suppressed + +context "Passkeys mode", +  setup -> +    backupHandlerStack() +    refreshCompletionKeys +      completionKeys: "oj" +      validFirstKeys: "oj" + +    handlerStack.bubbleEvent "registerStateChange", +      enabled: true +      passKeys: "j" + +  tearDown -> +    restoreHandlerStack() +    handlerStack.bubbleEvent "registerStateChange", +      enabled: true +      passKeys: "" + +  should "not suppress passKeys", -> +    # First check normal-mode key (just to verify the framework). +    for event in [ "keydown", "keypress", "keyup" ] +      key = mockKeyboardEvent "o" +      handlerStack.bubbleEvent event, key +      assert.isTrue key.suppressed + +    # Then check passKey. +    for event in [ "keydown", "keypress", "keyup" ] +      key = mockKeyboardEvent "j" +      handlerStack.bubbleEvent event, key +      assert.isFalse key.suppressed + +context "Insert mode", +  setup -> +    backupHandlerStack() +    refreshCompletionKeys +      completionKeys: "o" +      validFirstKeys: "o" + +  tearDown -> +    backupHandlerStack() + +  should "not suppress mapped keys in insert mode", -> +    # First check normal-mode key (just to verify the framework). +    for event in [ "keydown", "keypress", "keyup" ] +      key = mockKeyboardEvent "o" +      handlerStack.bubbleEvent event, key +      assert.isTrue key.suppressed + +    # Install insert mode. +    insertMode = new InsertMode() + +    # Then verify insert mode. +    for event in [ "keydown", "keypress", "keyup" ] +      key = mockKeyboardEvent "o" +      handlerStack.bubbleEvent event, key +      assert.isFalse key.suppressed + +    insertMode.exit() + +    # Then check insert mode has been successfully removed. +    for event in [ "keydown", "keypress", "keyup" ] +      key = mockKeyboardEvent "o" +      handlerStack.bubbleEvent event, key +      assert.isTrue key.suppressed + +context "Insert mode trigger", +  setup -> +    backupHandlerStack() +    refreshCompletionKeys +      completionKeys: "o" +      validFirstKeys: "o" + +  tearDown -> +    backupHandlerStack() + +  should "trigger insert mode on input-focus events", -> +  | 
