rest-methods
Version:
Declaratively publish functions for remote invocation.
50 lines (39 loc) • 1.3 kB
JavaScript
import { expect } from 'chai';
import util from 'js-util';
import http from 'http-promises/browser';
import { FakeXMLHttpRequest } from 'sinon';
import { registerMethods, STATE } from '../../src/client/Client';
import Client from '../../src/client/Client';
describe('Client:init (constructor)', () => {
let fakeXhr, client;
before(() => {
// Inject a fake XHR object.
http.createXhr = () => {
fakeXhr = new FakeXMLHttpRequest();
return fakeXhr;
};
});
beforeEach(() => { client = Client({ http:http, host:'localhost' }); });
it('is not ready by default', () => {
expect(client.isReady).to.equal(false);
expect(client.methods).to.eql({});
});
describe('[onReady] callbacks', () => {
it('invokes callbacks when methods are registered', (done) => {
let count = 0;
client.onReady(() => count += 1);
registerMethods(client, { 'foo': { get:{} }});
util.delay(100, () => {
expect(count).to.equal(1);
expect(client.isReady).to.equal(true);
done();
});
});
it('invokes callbacks immediately if already [isReady === true]', () => {
let count = 0;
client.isReady = true;
client.onReady(() => count += 1);
expect(count).to.equal(1);
});
});
});