Skip to content

Commit 7bcdb37

Browse files
committed
feat(queue): completed tests for the queue system
1 parent a78408c commit 7bcdb37

File tree

7 files changed

+132
-5
lines changed

7 files changed

+132
-5
lines changed

TODO.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
### TODOs
22
| Filename | line # | TODO
33
|:------|:------:|:------
4-
| routes/index.js | 208 | Implement API Generator
4+
| controllers/Initialize.js | 18 | Test initialize controller
5+
| controllers/Users.js | 49 | Finish users controller
6+
| controllers/Users.js | 50 | Finish users route
7+
| routes/index.js | 208 | Implement API Generator
8+
| routes/initialize.js | 10 | Test initialize route
9+
| services/queue/index.js | 61 | work on a clock functionality so kue can support scheduled jobs

controllers/Initialize.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,5 @@ module.exports = {
1414
});
1515
}
1616
};
17+
18+
// Todo: Test initialize controller

controllers/Users.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,6 @@ UsersController.restore = function(query){
4545
};
4646

4747
module.exports = UsersController;
48+
49+
// Todo: Finish users controller
50+
// Todo: Finish users route

routes/initialize.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ var initializeController = require('../controllers/Initialize');
77
router.get('/initialize', initializeController.init);
88

99
module.exports = router;
10+
// Todo: Test initialize route

services/queue/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ queue
1313
log.info( 'Job %s got queued of type %s', id, type );
1414
})
1515
.on('job complete', function(id, result){
16+
log.info('ID: ',id,' Result: ',result);
1617
kue.Job.get(id, function(err, job){
1718
if (err) {
1819
return false;
@@ -56,3 +57,5 @@ queue.watchStuckJobs(1000);
5657
// Process Jobs Here
5758
module.exports = queue;
5859
module.exports.kue = kue;
60+
61+
// ToDo: work on a clock functionality so kue can support scheduled jobs

services/queue/jobs.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs.createRequestLog = function(request, done){
1111
log.info('logging API request: ',request.RequestId);
1212
models.RequestLogs.create(request)
1313
.then(function(res){
14-
return done();
14+
return done(false, res);
1515
})
1616
.catch(function(err){
1717
log.error(err);
@@ -23,10 +23,10 @@ jobs.createRequestLog = function(request, done){
2323
jobs.updateRequestLog = function(response, done){
2424
log.info('logging API response: ',response.requestId);
2525
var requestId = response.requestId;
26-
delete response.RequestId;
26+
delete response.requestId;
2727
models.RequestLogs.update({RequestId: requestId},response)
2828
.then(function(res){
29-
return done();
29+
return done(false, res);
3030
})
3131
.catch(function(err){
3232
log.error(err);
@@ -36,6 +36,7 @@ jobs.updateRequestLog = function(response, done){
3636

3737
// Creates search tags for all db records
3838
jobs.createSearchTags = function(data, done){
39+
log.info('Creating search index for: ', data._id);
3940
var model = data.model;
4041
var update = data.update ? true : false;
4142
if(data.update){
@@ -63,7 +64,7 @@ if(update){
6364

6465
task
6566
.then(function(res){
66-
return done();
67+
return done(false, res);
6768
})
6869
.catch(function(err){
6970
log.error(err);

test/services/queue.js

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
"use strict";
2+
3+
var chai = require('chai');
4+
chai.should();
5+
var config = require('../../config');
6+
var chaiAsPromised = require("chai-as-promised");
7+
chai.use(chaiAsPromised);
8+
var queue = require('../../services/queue');
9+
10+
var workers = require('../../services/queue/workers');
11+
var sinon = require("sinon");
12+
var sinonChai = require("sinon-chai");
13+
chai.use(sinonChai);
14+
15+
// Test Index
16+
var jobs;
17+
describe('#Queue service', function(){
18+
before(function() { /* jslint ignore:line */
19+
queue.testMode.enter();
20+
jobs = require('../../services/queue/jobs');
21+
});
22+
23+
afterEach(function() { /* jslint ignore:line */
24+
queue.testMode.clear();
25+
});
26+
27+
after(function() { /* jslint ignore:line */
28+
queue.testMode.exit();
29+
});
30+
31+
it('should return an object', function(done){
32+
queue.should.be.an('object');
33+
queue.should.be.have.property('kue');
34+
jobs.should.be.an('object');
35+
workers.should.be.an('object');
36+
done();
37+
});
38+
39+
it('should pass basic smoke test', function() {
40+
queue.createJob('myJob', 'foo').save();
41+
queue.createJob('anotherJob', { baz: 'bip' }).save();
42+
queue.testMode.jobs.length.should.equal(2);
43+
queue.testMode.jobs[0].type.should.equal('myJob');
44+
queue.testMode.jobs[0].data.should.equal('foo');
45+
});
46+
47+
it('should load processes', function() {
48+
var process = require('../../services/queue/workers');
49+
// We have configured queue to create 2 workers per job making a total of 6 workers for 3 jobs that we currently have
50+
process.workers.length.should.equal(6);
51+
});
52+
53+
54+
55+
// Test Jobs
56+
describe('#Testing Jobs', function(){
57+
it('should run createRequestLog successfully', function(done){
58+
var myrequestlog = {
59+
RequestId: 'gdfd6563',
60+
ipAddress: '192.168.90.9',
61+
url: 'http://google.com',
62+
method: 'POST',
63+
body: {name: 'femi'},
64+
createdAt: new Date()
65+
};
66+
jobs.createRequestLog(myrequestlog,done);
67+
});
68+
69+
it('should run updateRequestLog successfully', function(done){
70+
var myrequestlog = {
71+
requestId: 'gdfd6563',
72+
response: {
73+
ipAddress: '192.168.90.9',
74+
url: 'http://google.com',
75+
method: 'POST',
76+
body: {name: 'femi'},
77+
createdAt: new Date()
78+
}
79+
};
80+
jobs.updateRequestLog(myrequestlog,done);
81+
});
82+
it('should run createSearchTags successfully for saving data', function(done){
83+
var myrequestlog = {
84+
RequestId: 'gdfd6563',
85+
ipAddress: '192.168.90.9',
86+
url: 'http://google.com',
87+
method: 'POST',
88+
body: {name: 'femi'},
89+
createdAt: new Date()
90+
};
91+
92+
myrequestlog.model = 'RequestLogs';
93+
jobs.createSearchTags(myrequestlog,done);
94+
});
95+
96+
it('should run createSearchTags successfully for updating data', function(done){
97+
var myrequestlog = {
98+
RequestId: 'gdfd6563',
99+
ipAddress: '192.168.90.9',
100+
url: 'http://google.com',
101+
method: 'POST',
102+
body: {name: 'femi'},
103+
createdAt: new Date()
104+
};
105+
106+
myrequestlog.model = 'RequestLogs';
107+
myrequestlog.update = true;
108+
jobs.createSearchTags(myrequestlog,done);
109+
});
110+
111+
});
112+
});

0 commit comments

Comments
 (0)