From dee10946ee14deb394078fde3aa757eb1846a192 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 7 Nov 2018 15:54:03 +0100 Subject: [PATCH] Ensure typeIn has correct key option --- .../@ember/test-helpers/dom/type-in.ts | 1 + tests/unit/dom/type-in-test.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/addon-test-support/@ember/test-helpers/dom/type-in.ts b/addon-test-support/@ember/test-helpers/dom/type-in.ts index ec2286052..b230282c1 100644 --- a/addon-test-support/@ember/test-helpers/dom/type-in.ts +++ b/addon-test-support/@ember/test-helpers/dom/type-in.ts @@ -67,6 +67,7 @@ function keyEntry(element, character) { bubbles: true, cancellable: true, charCode, + key: character }; const keyEvents = { diff --git a/tests/unit/dom/type-in-test.js b/tests/unit/dom/type-in-test.js index 807c87196..4e2ec4fcf 100644 --- a/tests/unit/dom/type-in-test.js +++ b/tests/unit/dom/type-in-test.js @@ -77,6 +77,25 @@ module('DOM Helper: typeIn', function(hooks) { assert.equal(element.value, 'foo'); }); + test('it triggers key events with correct arguments', async function(assert) { + element = buildInstrumentedElement('input', ['key', 'charCode']); + await typeIn(element, 'foo'); + + let chars = ['f', 'o', 'o']; + let expectedEventsWithArguments = expectedEvents.map((eventName) => { + // Only key events get the key arguments + if (!['keydown', 'keypress', 'keyup'].includes(eventName)) { + return `${eventName} undefined undefined`; + } + // After each keyup, the next character comes up + let char = eventName === 'keyup' ? chars.shift() : chars[0]; + + return `${eventName} ${char} ${char.charCodeAt()}`; + }); + + assert.verifySteps(expectedEventsWithArguments); + }); + test('filling in an input with a delay', async function(assert) { element = buildInstrumentedElement('input'); await typeIn(element, 'foo', { delay: 150 });