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
|
var assert = require('assert');
var mockery = require('mockery');
var sinon = require('sinon');
var PodcastView; // Subject of the test
var dynamoStub = {
getItem: sinon.stub()
};
describe('PodcastView', function() {
before(function() {
mockery.enable();
});
beforeEach(function() {
mockery.registerAllowable('underscore');
mockery.registerMock('dynamodb-doc', { DynamoDB: function() { return dynamoStub } });
mockery.registerAllowable('../lib/PodcastView', true);
PodcastView = require('../lib/PodcastView');
});
it('calls the callback with a view when findById is called with a valid viewId', function() {
// Setup stubs
dynamoStub
.getItem
.withArgs({
TableName: 'podcast-views',
Key: { feedId: '123', viewId: '456' }
})
.callsArgWith(1, null, {
Item: {
feedId: '123',
viewId: '456',
name: 'Test View',
template: 'Hello World'
}
});
var callback = sinon.spy();
// Call findById
PodcastView.findById({ feedId: '123', viewId: '456' }, callback);
// Assertions
assert(callback.calledOnce);
var error = callback.getCall(0).args[0];
var view = callback.getCall(0).args[1];
assert.equal(error, null);
assert.equal(view.feedId, '123');
assert.equal(view.viewId, '456');
assert.equal(view.name, 'Test View');
assert.equal(view.template, 'Hello World');
});
after(function() {
mockery.deregisterAll();
mockery.disable();
});
});
|