diff options
author | Mike Greiling <mike@pixelcog.com> | 2017-10-17 21:30:36 -0500 |
---|---|---|
committer | Mike Greiling <mike@pixelcog.com> | 2017-10-17 21:30:36 -0500 |
commit | 5e63566bf1fde65de8894f3fd588846853d139d9 (patch) | |
tree | 6e45a94edb47f731915d9b073b15bee22c5012f2 /app | |
parent | 585a2ab577bc5714817f643ce4afd72ae8d832c3 (diff) | |
download | gitlab-ce-5e63566bf1fde65de8894f3fd588846853d139d9.tar.gz |
add InputHelper rspec helper to simulate non-BMP character input
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/javascripts/test_utils/index.js | 2 | ||||
-rw-r--r-- | app/assets/javascripts/test_utils/simulate_input.js | 23 |
2 files changed, 25 insertions, 0 deletions
diff --git a/app/assets/javascripts/test_utils/index.js b/app/assets/javascripts/test_utils/index.js index 8875590f0f2..a55a338eea8 100644 --- a/app/assets/javascripts/test_utils/index.js +++ b/app/assets/javascripts/test_utils/index.js @@ -1,6 +1,8 @@ import 'core-js/es6/map'; import 'core-js/es6/set'; import simulateDrag from './simulate_drag'; +import simulateInput from './simulate_input'; // Export to global space for rspec to use window.simulateDrag = simulateDrag; +window.simulateInput = simulateInput; diff --git a/app/assets/javascripts/test_utils/simulate_input.js b/app/assets/javascripts/test_utils/simulate_input.js new file mode 100644 index 00000000000..2aa8c99cfe8 --- /dev/null +++ b/app/assets/javascripts/test_utils/simulate_input.js @@ -0,0 +1,23 @@ +function triggerEvents(input) { + input.dispatchEvent(new Event('keydown')); + input.dispatchEvent(new Event('keypress')); + input.dispatchEvent(new Event('input')); + input.dispatchEvent(new Event('keyup')); +} + +export default function simulateInput(target, text) { + const input = document.querySelector(target); + if (!input || !input.matches('textarea, input')) { + return false; + } + + if (text.length > 0) { + Array.prototype.forEach.call(text, (char) => { + input.value += char; + triggerEvents(input); + }); + } else { + triggerEvents(); + } + return true; +} |