UNPKG

robbie-sdk

Version:

Robbie Visio SDK to send events for analaysis

109 lines (108 loc) 3.02 kB
import RobbieApi, { CREATE_SESSION_ROUTE, REQUEST_EMOTIONS_ROUTE, CLOSE_SESSION_ROUTE } from '../../src/RobbieApi'; import jsdom from 'jsdom'; import sinon from 'sinon'; import canvasMockify from 'canvas-mock'; import RobbieVisio from '../../src'; import MockResponse from './MockResponse.json'; export default { /** * Mock browser devices. * @param kinds {array} List of devices to mock. Ex: videoinput, audio:input */ navigatorDevices: (kinds) => { if (!navigator) { throw new Error('No navigator present to mock devices'); } navigator.mediaDevices = { enumerateDevices: (callback) => { const devices = kinds.map(kind => { return {kind} }); return callback(devices); } } }, cameraPermissionAllowed: (isAllowed) => { navigator.getUserMedia = (params, onSuccess, onError) => { if (isAllowed) { onSuccess(); return; } onError(); } }, sinon: { /** * 1st parameter: REST method * 2nd parameter: url * 3rd parameter: response status, response headers and response body */ okCreateSession: [ 'POST', RobbieApi.baseUrl + CREATE_SESSION_ROUTE, [ 201, { 'Content-type': 'application/json' }, JSON.stringify({id: "mock-session-id"}) ] ], okRequestFrame: [ 'POST', `${RobbieApi.baseUrl}${REQUEST_EMOTIONS_ROUTE}?single=true&persist=false&gender=false`, [ 201, { 'Content-type': 'application/json' }, JSON.stringify(MockResponse["REQUEST_EMOTIONS"]) ] ], okCloseSession: [ 'POST', new RegExp(RobbieApi.baseUrl+CLOSE_SESSION_ROUTE+"\\w+"), [ 200, { 'Content-type': 'application/json' }, JSON.stringify(MockResponse["CLOSE_SESSION"]), ] ] }, mockWindow() { global.document = jsdom.jsdom('<!doctype html><html><body></body></html>'); global.window = document.defaultView; global.window.URL = { createObjectURL: () => {} } }, mockNavigator() { if (typeof window === 'undefined') { throw new Error('No window present, mock it first') } global.navigator = window.navigator; }, canvas() { if (typeof window === 'undefined') { throw new Error('No window present, mock it first') } const canvas = window.document.createElement('canvas'); canvasMockify(canvas); canvas.toDataURL = () => ('ABCD1234'); return canvas; }, video() { if (typeof window === 'undefined') { throw new Error('No window present, mock it first') } const video = window.document.createElement('video'); video.width = 1234; video.height = 1234; return video; }, mockImageCreators() { RobbieVisio._createImageCaptureElements = () => { RobbieVisio._video = this.video(); RobbieVisio._canvas = this.canvas(); } }, mockXMLHttpRequest() { global.XMLHttpRequest = sinon.useFakeXMLHttpRequest(); } }