UNPKG

react-dnd-test-utils

Version:
72 lines (67 loc) 2.01 kB
/* eslint-disable @typescript-eslint/no-unused-vars */ import type { Identifier } from 'dnd-core' import type { ITestBackend } from 'react-dnd-test-backend' import { act } from 'react-dom/test-utils' /** * Simulates a drag/drop sequence using the Test Backend * @param source The source to drag * @param target The target to drop to * @param backend The test backend instance */ export function simulateDragDrop( source: HandlerIdProvider, target: HandlerIdProvider, backend: ITestBackend, ): void { const sourceHandlerId = getHandlerId(source) const targetHandlerId = getHandlerId(target) act(() => { backend.simulateBeginDrag([sourceHandlerId]) backend.simulateHover([targetHandlerId]) backend.simulateDrop() backend.simulateEndDrag() }) } /** * Simulates a hover sequence using the Test Backend * @param source The source draggable * @param target The target element * @param backend The test backend */ export function simulateDragHover( source: HandlerIdProvider, target: HandlerIdProvider, backend: ITestBackend, ): void { const sourceHandlerId = getHandlerId(source) const targetHandlerId = getHandlerId(target) act(() => { backend.simulateBeginDrag([sourceHandlerId]) backend.simulateHover([targetHandlerId]) }) } /** * Simulates a hover sequence using the Test Backend * @param source The source draggable * @param target The target element * @param backend The test backend */ export function simulateDrag( source: HandlerIdProvider, backend: ITestBackend, ): void { const sourceHandlerId = getHandlerId(source) act(() => { backend.simulateBeginDrag([sourceHandlerId]) }) } export function getHandlerId(provider: HandlerIdProvider): Identifier { if (typeof provider === 'string' || typeof provider === 'symbol') { return provider } else if (typeof provider === 'function') { return provider() as Identifier } else { throw new Error('Could not get handlerId from DnD source') } } export type HandlerIdProvider = () => Identifier | null