UNPKG

handsfree

Version:

A library for creating head-controlled, handsfree user interfaces via computer vision just...like...✨...that!

66 lines (59 loc) 1.93 kB
/** * Mock each property indvidivually * - Exposes Handsfree.prototype._mock() * -- Each prop is set to _${propName} * -- Original prop is set to jest.fn() * -- Calling this method clears all mocks */ const {get, set} = require('lodash') // Make Handsfree globally accessible global.Handsfree = require('../../handsfree.js/Handsfree') global.handsfree = null Object.getOwnPropertyNames(Handsfree.prototype).forEach((propName) => { Handsfree.prototype[`_${propName}`] = Handsfree.prototype[propName] Handsfree.prototype[propName] = jest.fn() }) /** * Quick restart points */ Handsfree._mock = { // Handsfree._mock.plugins() plugins: require('./plugins'), pose: [...require('../../src/store/faces/1-wink-face.json')], // Monitor number of times things were called spy: { // Number of times plugin onStart was called onStart: 0, // Number of times plugin onStop was called onStop: 0, // Number of times plugin onFrame was called onFrame: 0, // Array containing plugins called, in order (use Handsfree._mock.spy.onUse.length for count) onUse: [] }, /** * We've mocked each prop/method individually, but internal method * calls are still made to the now mocked method. * * This restores a mocked method to what it was, by name: * Handsfree._mock.restore(handsfree, 'onStartHooks') * * @param mocked The Handsfree instance to effect * @param propName The Handsfree.prototype[propName] to restore */ restore (mocked, propName) { const mockedProp = get(mocked, `_${propName}`) set(mocked, propName, mockedProp) }, /** * Mocks BRFv4 on an instance * @param mocked The Handsfree instance to effect */ brfv4 (mocked) { mocked.brf.resolution = {width: 640, height: 480} mocked.brf.manager = { update: jest.fn(), getFaces: () => [] } } }