UNPKG

@testing-library/user-event

Version:
31 lines (27 loc) 1.57 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); const Interceptor = Symbol('Interceptor for programmatical calls'); function prepareInterceptor(element, propName, interceptorImpl) { const prototypeDescriptor = Object.getOwnPropertyDescriptor(element.constructor.prototype, propName); const objectDescriptor = Object.getOwnPropertyDescriptor(element, propName); const target = (prototypeDescriptor === null || prototypeDescriptor === void 0 ? void 0 : prototypeDescriptor.set) ? 'set' : 'value'; /* istanbul ignore if */ if (typeof (prototypeDescriptor === null || prototypeDescriptor === void 0 ? void 0 : prototypeDescriptor[target]) !== 'function' || prototypeDescriptor[target][Interceptor]) { throw new Error(`Element ${element.tagName} does not implement "${String(propName)}".`); } function intercept(...args) { const { applyNative =false , realArgs , then , } = interceptorImpl.call(this, ...args); const realFunc = (!applyNative && objectDescriptor || prototypeDescriptor)[target]; if (target === 'set') { realFunc.call(this, realArgs); } else { realFunc.call(this, ...realArgs); } then === null || then === void 0 ? void 0 : then(); } intercept[Interceptor] = Interceptor; Object.defineProperty(element, propName, { ...objectDescriptor !== null && objectDescriptor !== void 0 ? objectDescriptor : prototypeDescriptor, [target]: intercept }); } exports.prepareInterceptor = prepareInterceptor;