/** * Copyright (c) Nicolas Gallagher. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import { clearPointers, createEventTarget, describeWithPointerEvent, setPointerEvent, testWithPointerType, } from 'dom-event-testing-library' import { getActiveModality, getModality, testOnly_resetActiveModality } from '..' describeWithPointerEvent('modules/modality', (hasPointerEvent) => { let rootNode beforeEach(() => { setPointerEvent(hasPointerEvent) rootNode = document.createElement('div') document.body.appendChild(rootNode) }) afterEach(() => { document.body.removeChild(rootNode) rootNode = null clearPointers() testOnly_resetActiveModality() }) describe('getModality', () => { testWithPointerType('reflects currently-in-use modality', (pointerType) => { const target = createEventTarget(rootNode) expect(getModality()).toBe('keyboard') target.pointerdown({ pointerType }) expect(getModality()).toBe(pointerType) target.pointerup({ pointerType }) target.keydown() expect(getModality()).toBe('keyboard') if (pointerType !== 'touch') { target.pointermove({ pointerType }) expect(getModality()).toBe(pointerType) target.keydown() expect(getModality()).toBe('keyboard') } }) }) describe('getActiveModality', () => { testWithPointerType('reflects last actively used modality', (pointerType) => { const target = createEventTarget(rootNode) expect(getActiveModality()).toBe('keyboard') target.pointerdown({ pointerType }) expect(getActiveModality()).toBe(pointerType) target.pointerup({ pointerType }) target.keydown() if (pointerType !== 'touch') { target.pointermove({ pointerType }) expect(getActiveModality()).toBe('keyboard') } }) }) })