listtabhandler_test.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. // Copyright 2008 The Closure Library Authors. All Rights Reserved.
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS-IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. goog.provide('goog.editor.plugins.ListTabHandlerTest');
  15. goog.setTestOnly('goog.editor.plugins.ListTabHandlerTest');
  16. goog.require('goog.dom');
  17. goog.require('goog.editor.Command');
  18. goog.require('goog.editor.plugins.ListTabHandler');
  19. goog.require('goog.events.BrowserEvent');
  20. goog.require('goog.events.KeyCodes');
  21. goog.require('goog.functions');
  22. goog.require('goog.testing.StrictMock');
  23. goog.require('goog.testing.editor.FieldMock');
  24. goog.require('goog.testing.editor.TestHelper');
  25. goog.require('goog.testing.jsunit');
  26. var field;
  27. var editableField;
  28. var tabHandler;
  29. var testHelper;
  30. function setUpPage() {
  31. field = goog.dom.getElement('field');
  32. }
  33. function setUp() {
  34. editableField = new goog.testing.editor.FieldMock();
  35. // Modal mode behavior tested as part of AbstractTabHandler tests.
  36. editableField.inModalMode = goog.functions.FALSE;
  37. tabHandler = new goog.editor.plugins.ListTabHandler();
  38. tabHandler.registerFieldObject(editableField);
  39. testHelper = new goog.testing.editor.TestHelper(field);
  40. testHelper.setUpEditableElement();
  41. }
  42. function tearDown() {
  43. editableField = null;
  44. testHelper.tearDownEditableElement();
  45. tabHandler.dispose();
  46. }
  47. function testListIndentInLi() {
  48. field.innerHTML = '<ul><li>Text</li></ul>';
  49. var testText = field.firstChild.firstChild.firstChild; // div ul li Test
  50. testHelper.select(testText, 0, testText, 4);
  51. var event = new goog.testing.StrictMock(goog.events.BrowserEvent);
  52. event.keyCode = goog.events.KeyCodes.TAB;
  53. event.shiftKey = false;
  54. editableField.execCommand(goog.editor.Command.INDENT);
  55. event.preventDefault();
  56. editableField.$replay();
  57. event.$replay();
  58. assertTrue(
  59. 'Event must be handled',
  60. tabHandler.handleKeyboardShortcut(event, '', false));
  61. editableField.$verify();
  62. event.$verify();
  63. }
  64. function testListIndentContainLi() {
  65. field.innerHTML = '<ul><li>Text</li></ul>';
  66. var testText = field.firstChild.firstChild.firstChild; // div ul li Test
  67. testHelper.select(field.firstChild, 0, testText, 4);
  68. var event = new goog.testing.StrictMock(goog.events.BrowserEvent);
  69. event.keyCode = goog.events.KeyCodes.TAB;
  70. event.shiftKey = false;
  71. editableField.execCommand(goog.editor.Command.INDENT);
  72. event.preventDefault();
  73. editableField.$replay();
  74. event.$replay();
  75. assertTrue(
  76. 'Event must be handled',
  77. tabHandler.handleKeyboardShortcut(event, '', false));
  78. editableField.$verify();
  79. event.$verify();
  80. }
  81. function testListOutdentInLi() {
  82. field.innerHTML = '<ul><li>Text</li></ul>';
  83. var testText = field.firstChild.firstChild.firstChild; // div ul li Test
  84. testHelper.select(testText, 0, testText, 4);
  85. var event = new goog.testing.StrictMock(goog.events.BrowserEvent);
  86. event.keyCode = goog.events.KeyCodes.TAB;
  87. event.shiftKey = true;
  88. editableField.execCommand(goog.editor.Command.OUTDENT);
  89. event.preventDefault();
  90. editableField.$replay();
  91. event.$replay();
  92. assertTrue(
  93. 'Event must be handled',
  94. tabHandler.handleKeyboardShortcut(event, '', false));
  95. editableField.$verify();
  96. event.$verify();
  97. }
  98. function testListOutdentContainLi() {
  99. field.innerHTML = '<ul><li>Text</li></ul>';
  100. var testText = field.firstChild.firstChild.firstChild; // div ul li Test
  101. testHelper.select(field.firstChild, 0, testText, 4);
  102. var event = new goog.testing.StrictMock(goog.events.BrowserEvent);
  103. event.keyCode = goog.events.KeyCodes.TAB;
  104. event.shiftKey = true;
  105. editableField.execCommand(goog.editor.Command.OUTDENT);
  106. event.preventDefault();
  107. editableField.$replay();
  108. event.$replay();
  109. assertTrue(
  110. 'Event must be handled',
  111. tabHandler.handleKeyboardShortcut(event, '', false));
  112. editableField.$verify();
  113. event.$verify();
  114. }
  115. function testNoOp() {
  116. goog.dom.setTextContent(field, 'Text');
  117. var testText = field.firstChild;
  118. testHelper.select(testText, 0, testText, 4);
  119. var event = new goog.testing.StrictMock(goog.events.BrowserEvent);
  120. event.keyCode = goog.events.KeyCodes.TAB;
  121. event.shiftKey = true;
  122. editableField.$replay();
  123. event.$replay();
  124. assertFalse(
  125. 'Event must not be handled',
  126. tabHandler.handleKeyboardShortcut(event, '', false));
  127. editableField.$verify();
  128. event.$verify();
  129. }