Skip to content

Commit 4b3cf75

Browse files
authored
More coverage (#12)
* updates * more tests * version bump
1 parent 4c89f53 commit 4b3cf75

File tree

5 files changed

+95
-7
lines changed

5 files changed

+95
-7
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# PubNub Functions Mock
22

33
[![Build Status](https://travis-ci.org/ajb413/pubnub-functions-mock.svg?branch=master)](https://travis-ci.org/ajb413/pubnub-functions-mock)
4-
[![Coverage Status](https://coveralls.io/repos/github/ajb413/pubnub-functions-mock/badge.svg?branch=master)](https://coveralls.io/github/ajb413/pubnub-functions-mock?branch=master)
4+
[![Coverage Status](https://coveralls.io/repos/github/ajb413/pubnub-functions-mock/badge.svg?branch=master&c=b)](https://coveralls.io/github/ajb413/pubnub-functions-mock?branch=master&c=b)
55
[![Known Vulnerabilities](https://snyk.io/test/github/ajb413/pubnub-functions-mock/badge.svg)](https://snyk.io/test/github/ajb413/pubnub-functions-mock)
66

77
Unit test PubNub Functions event handlers on your local machine

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "pubnub-functions-mock",
3-
"version": "0.0.11",
3+
"version": "0.0.12",
44
"description": "Mocks PubNub Functions modules for unit testing",
55
"main": "src/index.js",
66
"repository": {

src/modules/kvstore.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,15 @@ const kvInterface = {
3939
kvInterface.keyValueCounters[key] += value || 1;
4040
}
4141

42-
resolve(null);
42+
resolve(kvInterface.keyValueCounters[key]);
4343
});
4444
},
4545
getCounter: (key) => {
4646
return new Promise((resolve) => {
4747
if (typeof(key) !== "string") {
4848
throw Error("not a valid key. kvstore.get expects a string.");
4949
}
50-
resolve(kvInterface.keyValueCounters[key]);
50+
resolve(kvInterface.keyValueCounters[key] || 0);
5151
});
5252
},
5353
removeItem: (key) => {

test/endpointEventHandler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export default (request, response) => {
5959
if (request.incKvValue) {
6060
let key = request.key;
6161
let value = request.value;
62-
return kvstore.incrCounter(key, value, 123).then((value) => {
62+
return kvstore.incrCounter(key, value).then((value) => {
6363
response.status = 200;
6464
return response.send(value);
6565
}).catch(testFail);

test/unit.test.js

Lines changed: 90 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,26 @@ describe('#endpoint', () => {
111111
});
112112
});
113113

114-
it('returns a kvstore "get" value that has been mocked', function (done) {
114+
it('fails to kvstore.get', function (done) {
115+
116+
let request = Object.assign({}, endpointRequestObject);
117+
let response = Object.assign({}, endpointResponseObject);
118+
119+
request.getKvValue = true;
120+
request.key = 123;
121+
122+
let correctResult = {
123+
"status": 500
124+
};
125+
126+
endpoint(request, response).then((testResult) => {
127+
assert.equal(testResult.status, correctResult.status, 'status');
128+
})
129+
130+
done();
131+
});
132+
133+
it('returns a kvstore.get value that has been mocked', function (done) {
115134

116135
let request = Object.assign({}, endpointRequestObject);
117136
let response = Object.assign({}, endpointResponseObject);
@@ -297,6 +316,47 @@ describe('#endpoint', () => {
297316
});
298317
});
299318

319+
it('fails to kvstore.getCounter', function (done) {
320+
321+
let request = Object.assign({}, endpointRequestObject);
322+
let response = Object.assign({}, endpointResponseObject);
323+
324+
request.getKvCounter = true;
325+
request.key = 123;
326+
327+
let correctResult = {
328+
"status": 500
329+
};
330+
331+
endpoint(request, response).then((testResult) => {
332+
assert.equal(testResult.status, correctResult.status, 'status');
333+
done();
334+
});
335+
336+
});
337+
338+
it('kvstore.getCounter', function (done) {
339+
340+
let request = Object.assign({}, endpointRequestObject);
341+
let response = Object.assign({}, endpointResponseObject);
342+
343+
request.getKvCounter = true;
344+
request.key = 'key';
345+
346+
let correctResult = {
347+
"body": 0,
348+
"status": 200
349+
};
350+
351+
endpoint(request, response).then((testResult) => {
352+
353+
assert.equal(testResult.status, correctResult.status, 'status');
354+
assert.equal(testResult.body, correctResult.body, 'response body');
355+
356+
done();
357+
});
358+
});
359+
300360
it('fails to kvstore.incrCounter', function (done) {
301361

302362
let request = Object.assign({}, endpointRequestObject);
@@ -333,7 +393,35 @@ describe('#endpoint', () => {
333393
request.value = 123;
334394

335395
let correctResult = {
336-
"body": null,
396+
"body": 123,
397+
"status": 200
398+
};
399+
400+
endpoint(request, response).then((testResult) => {
401+
402+
assert.equal(testResult.status, correctResult.status, 'status');
403+
assert.equal(testResult.body, correctResult.body, 'response body');
404+
405+
done();
406+
});
407+
});
408+
409+
it('increments a kvstore "incrCounter" value that has been mocked', function (done) {
410+
411+
let request = Object.assign({}, endpointRequestObject);
412+
let response = Object.assign({}, endpointResponseObject);
413+
414+
let preExistingValue = { "key" : 10 };
415+
416+
// Mock a pre-existing KVStore value for this test only
417+
endpoint.mockKVStoreCounters(preExistingValue);
418+
419+
request.incKvValue = true;
420+
request.key = 'key';
421+
request.value = 3;
422+
423+
let correctResult = {
424+
"body": 13,
337425
"status": 200
338426
};
339427

0 commit comments

Comments
 (0)