UNPKG

robbie-sdk

Version:

Robbie Visio SDK to send events for analaysis

75 lines (65 loc) 2.12 kB
import chai, { expect } from 'chai'; import spies from 'chai-spies'; import { describe, it, beforeEach, afterEach } from 'mocha'; import { fakeServer } from 'sinon'; import Session from '../src/Session'; import Mock from './mock/index'; import RobbieVisio from '../src'; chai.use(spies); describe('Session', () => { let server; beforeEach(() => { Mock.navigatorDevices(['videoinput']); Mock.mockWindow(); RobbieVisio._video = Mock.video(); RobbieVisio._canvas = Mock.canvas(); server = fakeServer.create(); server.respondWith(...Mock.sinon.okCreateSession); server.respondWith(...Mock.sinon.okRequestFrame); server.respondWith(...Mock.sinon.okCloseSession); server.autoRespond = true; }); afterEach(() => { server.restore(); }); it('contains a session id', () => { const session = new Session('fake-id', RobbieVisio); expect(session.id).to.exist; }); it('can send events', (done) => { const session = new Session('fakeId', RobbieVisio); session.startRecording() .then(() => done()) .catch(error => done(error)); }); it('does not let send events if session does not have id', (done) => { const session = new Session(null, RobbieVisio); session.startRecording() .then(() => done(new Error('No event should have been sent'))) .catch((error) => { expect(error).to.be.an('error'); done(); }); }); it('does not let send events if session is closed', (done) => { const session = new Session('random-id', RobbieVisio); session.close(); session.startRecording() .then(() => done(new Error('No event should have been sent'))) .catch((error) => { expect(error).to.be.an('error'); done(); }); }); it('extracts frames when it\'s recording', (done) => { const session = new Session('random-id', RobbieVisio); const spy = chai.spy(); session._getVideoFrameString = spy; session.startRecording() .then(() => { expect(spy).to.have.been.called(); done(); }) .catch(error => done(error)); }); });