-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathsendgrid-stub-test.js
135 lines (125 loc) · 2.55 KB
/
sendgrid-stub-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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*
Test the SendGrid stub
*/
var should = require('should');
var stub = require('./sendgrid-stub.js');
var async = require('async');
describe("The SendGrid stub", function(){
var sendgrid;
var mailclient;
beforeEach(function(done){
sendgrid = new stub.SendGrid(null, null, true);
mailclient = new stub.MailClient();
done();
})
afterEach(function(done){
mailclient.deleteAll(done);
})
it("can send e-mail and the client can read it", function(done){
var delay = 0; // Seems to not need a delay
var email = {test: "Ooh yes"};
async.series(
[function(complete){
setTimeout(function() {
complete(null);
}, delay);
},
function(complete){
sendgrid.send(email,
function(success, message){
if(success)
complete()
else
complete(message)
});
},
function(complete){
setTimeout(function() {
complete(null);
}, delay);
},
function(complete){
mailclient.getLatest(function(err, data){
should.not.exist(err)
JSON.parse(data).should.eql(email);
complete();
})
}
],
function(err){
done(err);
}
)
})
it("can send e-mails and the client can read them", function(done){
var delay = 50; // Seems to not need a delay
var email = {test: "Ooh yes"};
async.series(
[function(complete){
setTimeout(function() {
complete(null);
}, delay);
},
function(complete){
sendgrid.send(email,
function(success, message){
if(success)
complete()
else
complete(message)
});
},
function(complete){
setTimeout(function() {
complete(null);
}, delay);
},
function(complete){
sendgrid.send(email,
function(success, message){
if(success)
complete()
else
complete(message)
});
},
function(complete){
setTimeout(function() {
complete(null);
}, delay);
},
function(complete){
mailclient.getAll(function(err, data){
(data.length == 2).should.be.true
complete(err);
})
}
],
function(err){
done(err);
}
)
})
it("Client can read emails even when there are none", function(done){
var delay = 10; // Seems to not need a delay
var email = {test: "Ooh yes"};
async.series(
[function(complete){
setTimeout(function() {
complete(null);
}, delay);
},
function(complete){
mailclient.getLatest(function(err, data){
should.not.exist(err)
should.not.exist(data)
complete(err);
})
}
],
function(err){
done(err);
}
)
})
})