-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
77 lines (74 loc) · 2.36 KB
/
test.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
var sinon = require('sinon');
var expect = require('sinon-expect').enhance(require('expect.js'), sinon, 'was');
var objMap = require('./');
describe('objMap', function() {
it('should call iterator with each key', function() {
var iter = sinon.stub();
objMap({a:1, b:2, c:3}, iter);
expect(iter).was.calledThrice();
expect(iter).was.calledWith('a');
expect(iter).was.calledWith('b');
expect(iter).was.calledWith('c');
});
it('should call iterator with each key and value', function() {
var iter = sinon.spy();
objMap({a:1, b:2, c:3}, iter);
expect(iter).was.calledThrice();
expect(iter).was.calledWith('a', 1);
expect(iter).was.calledWith('b', 2);
expect(iter).was.calledWith('c', 3);
});
it('should call iterator with each key, value, and the object they rode in on', function() {
var iter = sinon.spy();
var o = {a:1, b:2, c:3};
objMap(o, iter);
expect(iter).was.calledThrice();
expect(iter).was.calledWith('a', 1, o);
expect(iter).was.calledWith('b', 2, o);
expect(iter).was.calledWith('c', 3, o);
});
it('should return new object with values transformed by iterator', function() {
expect(objMap({a:1, b:2, c:3}, function(k, v) {
return v * 2;
})).to.eql({a:2, b:4, c:6});
});
});
describe('objMap.async', function() {
it('should call iterator with each key', function(done) {
var iter = sinon.stub().yields();
objMap.async({a:1, b:2, c:3}, iter, function(e) {
expect(iter).was.calledThrice();
expect(iter).was.calledWith('a');
expect(iter).was.calledWith('b');
expect(iter).was.calledWith('c');
done(e);
});
});
it('should call iterator with each key and value', function(done) {
var iter = sinon.stub().yields();
objMap.async({a:1, b:2, c:3}, iter, function(e) {
expect(iter).was.calledThrice();
expect(iter).was.calledWith('a', 1);
expect(iter).was.calledWith('b', 2);
expect(iter).was.calledWith('c', 3);
done(e);
});
});
it('should call back new object with values transformed by iterator', function(done) {
objMap.async({a:1, b:2, c:3}, function(k, v, cb) {
cb(null, v * 2);
}, function(e, ys) {
expect(ys).to.eql({a:2, b:4, c:6});
done(e);
});
});
it('should exit on first error', function(done) {
var o = {};
var iter = sinon.stub().yields(o);
objMap.async({a:1, b:2, c:3}, iter, function(e, ys) {
expect(e).to.be(o);
expect(iter).was.calledOnce();
done();
});
});
});