-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.spec.js
51 lines (40 loc) · 1.43 KB
/
index.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
"use strict";
const Throxy = require('./index');
const proxee = {
foo: () => Promise.resolve(new Date().getTime()),
bar: n => Promise.resolve(n * 2),
exception: () => 'exception',
nonFunction: 'non function',
errorMaker: function () {
throw new Error('this is an error');
}
}
describe('Throxy', function () {
const start = new Date().getTime();
const proxy = new Throxy(proxee, 1000, ['exception']);
it("copies functions of the proxee to the proxy", function () {
expect(typeof proxy.foo).toEqual('function');
expect(typeof proxy.bar).toEqual('function');
});
it("throttles proxee functions", function (done) {
Promise.all([proxy.foo(), proxy.foo(), proxy.foo()]).then(ends => {
expect(ends[ends.length - 1] - start).toBeGreaterThanOrEqual(3000);
done();
});
});
it("throttles proxee functions with arguments", function (done) {
proxy.bar(3).then(result => {
expect(result).toEqual(6);
done();
})
});
it("puts exceptions in the proxy as is", function () {
expect(proxy.exception()).toEqual('exception');
});
it("puts non functions in the proxy as is", function () {
expect(proxy.nonFunction).toEqual('non function');
});
it("rejects promise if there is an error", function (done) {
proxy.errorMaker().then(result => fail(), error => done());
});
});