Skip to content
This repository has been archived by the owner on May 10, 2020. It is now read-only.

Commit

Permalink
Improve test coverage to 100%.
Browse files Browse the repository at this point in the history
  • Loading branch information
cliffano committed Nov 22, 2014
1 parent b8a5151 commit c756ed6
Show file tree
Hide file tree
Showing 3 changed files with 130 additions and 7 deletions.
1 change: 1 addition & 0 deletions lib/baker.js
@@ -1,4 +1,5 @@
var async = require('async');
var p = require('path');
var webshot = require('webshot');

/**
Expand Down
3 changes: 2 additions & 1 deletion package.json
Expand Up @@ -26,7 +26,7 @@
},
"dependencies": {
"async": "~0.9.0",
"bagofcli": "~0.2.0",
"bagofcli": "~0.2.1",
"bagofrequest": "~0.1.0",
"lodash": "~2.4.1",
"validator": "~3.22.1",
Expand All @@ -35,6 +35,7 @@
},
"devDependencies": {
"buster-node": "~0.7.0",
"proxyquire": "~1.1.0",
"referee": "~1.1.0"
},
"scripts": {},
Expand Down
133 changes: 127 additions & 6 deletions test/baker.js
@@ -1,10 +1,110 @@
var Baker = require('../lib/baker');
var buster = require('buster-node');
var referee = require('referee');
var webshot = require('webshot');
var assert = referee.assert;
var Baker = require('../lib/baker');
var buster = require('buster-node');
var proxyquire = require('proxyquire');
var referee = require('referee');
var webshot = require('webshot');
var assert = referee.assert;

buster.testCase('breaker - _iterPostsByTags', {
buster.testCase('baker - delete', {
setUp: function () {
this.mockConsole = this.mock(console);
},
'should delegate to eggtart delete api': function (done) {
this.mockConsole.expects('log').once().withExactArgs('%s - Deleted %s', 'success'.green, 'http://someurl');
var mockEggtart = {
posts: function () {
return {
delete: function (post, cb) {
assert.equals(post.url, 'http://someurl');
cb();
}
};
}
};
var baker = new Baker(mockEggtart);
baker._iterPostsByTags = function (tags, postCb, cb) {
var post = {
'$': {
href: 'http://someurl'
}
};
postCb(post, done);
};
baker.delete(['tag1'], done);
}
});

buster.testCase('baker - screenshot', {
setUp: function () {
this.mockConsole = this.mock(console);
},
'should delegate to webshot to capture screenshot': function (done) {
this.mockConsole.expects('log').once().withExactArgs('%s - Created %s', 'success'.green, 'tag1-somedesc.png');
var mockEggtart = {
posts: function () {
return {
delete: function (post, cb) {
assert.equals(post.url, 'http://someurl');
cb();
}
};
}
};
var mockWebshot = function (url, file, opts, cb) {
assert.equals(url, 'http://someurl');
assert.equals(file, 'tag1-somedesc.png');
assert.defined(opts.shotSize);
cb();
};
var Baker = proxyquire('../lib/baker', { webshot: mockWebshot });
var baker = new Baker(mockEggtart);
baker._iterPostsByTags = function (tags, postCb, cb) {
var post = {
'$': {
href: 'http://someurl',
description: 'somedesc'
},
_tag: 'tag1'
};
postCb(post, done);
};
baker.screenshot(['tag1'], done);
},
'should log error message when an error occurred': function (done) {
this.mockConsole.expects('error').once().withExactArgs('%s - %s %s', 'error'.red, 'some error', 'tag1-somedesc.png');
var mockEggtart = {
posts: function () {
return {
delete: function (post, cb) {
assert.equals(post.url, 'http://someurl');
cb();
}
};
}
};
var mockWebshot = function (url, file, opts, cb) {
assert.equals(url, 'http://someurl');
assert.equals(file, 'tag1-somedesc.png');
assert.defined(opts.shotSize);
cb(new Error('some error'));
};
var Baker = proxyquire('../lib/baker', { webshot: mockWebshot });
var baker = new Baker(mockEggtart);
baker._iterPostsByTags = function (tags, postCb, cb) {
var post = {
'$': {
href: 'http://someurl',
description: 'somedesc'
},
_tag: 'tag1'
};
postCb(post, done);
};
baker.screenshot(['tag1'], done);
}
});

buster.testCase('baker - _iterPostsByTags', {
setUp: function () {
this.mockConsole = this.mock(console);
},
Expand All @@ -25,6 +125,27 @@ buster.testCase('breaker - _iterPostsByTags', {
done();
});
},
'should process each post when posts are found': function (done) {
this.mockConsole.expects('log').once().withExactArgs('* tag: %s', 'tag1'.cyan);
var mockEggtart = {
posts: function () {
return {
recent: function (opts, cb) {
cb(null, { posts: { post: [{}] }});
}
};
}
};
var postCb = function (post, cb) {
assert.equals(post._tag, 'tag1');
cb();
};
var baker = new Baker(mockEggtart);
baker._iterPostsByTags(['tag1'], postCb, function (err, result) {
assert.equals(err, undefined);
done();
});
},
'should log message when no posts found': function (done) {
this.mockConsole.expects('log').once().withExactArgs('* tag: %s', 'tag1'.cyan);
this.mockConsole.expects('log').once().withExactArgs('* tag: %s', 'tag2'.cyan);
Expand Down

0 comments on commit c756ed6

Please sign in to comment.