robbie-sdk
Version:
Robbie Visio SDK to send events for analaysis
75 lines (65 loc) • 2.12 kB
JavaScript
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));
});
});