Skip to content

Commit 4031b2d

Browse files
authored
Merge pull request #1 from CodingZeal/test-coverage
Add tests
2 parents 62fce90 + 9b0aa9c commit 4031b2d

12 files changed

+1068
-48
lines changed

.babelrc

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"presets": ["react-native"]
3+
}

.eslintignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
coverage/*

.eslintrc.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,8 @@ module.exports = {
66
"prettier",
77
"prettier/react"
88
],
9-
root: true
9+
root: true,
10+
rules: {
11+
"callback-return": "off"
12+
}
1013
};

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# redux-persist-sensitive-storage
22

33
[![npm version](https://badge.fury.io/js/redux-persist-sensitive-storage.svg)](https://www.npmjs.com/package/redux-persist-sensitive-storage)
4+
[![CircleCI](https://circleci.com/gh/CodingZeal/redux-persist-sensitive-storage.svg?style=shield)](https://circleci.com/gh/CodingZeal/redux-persist-sensitive-storage)
45
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
56

67
redux-persist storage engine for react-native-sensitive-info
@@ -16,7 +17,7 @@ More details coming soon!
1617
- [ ] Mention that storage is not (yet) secure on Android, but point at branch on r-n-s-i that adds that.
1718
- [ ] Contributing
1819

19-
- [ ] Add tests
20+
- [x] Add tests
2021

2122
- [ ] Test on both iOS and Android
2223

circle.yml

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
machine:
2+
environment:
3+
PATH: "${PATH:${HOME}/${CIRCLE_PROJECT_REPONAME}/node_modules/.bin"
4+
node:
5+
version: 6.11.0
6+
7+
dependencies:
8+
cache_directories:
9+
- ~/.cache/yarn
10+
override:
11+
- yarn
12+
13+
test:
14+
override:
15+
- yarn validate

index.js

+16-11
Original file line numberDiff line numberDiff line change
@@ -28,50 +28,55 @@ export default function(options = {}) {
2828
android: Object.keys
2929
});
3030

31+
const noop = () => null;
32+
3133
return {
32-
/* eslint-disable callback-return */
33-
async getItem(key, callback) {
34+
async getItem(key, callback = noop) {
3435
try {
3536
// getItem() returns `null` on Android and `undefined` on iOS;
3637
// explicitly return `null` here as `undefined` causes an exception
3738
// upstream.
38-
const result = (await sensitiveInfo.getItem(key, options)) || null;
39+
let result = await sensitiveInfo.getItem(key, options);
40+
41+
if (typeof result === "undefined") {
42+
result = null;
43+
}
3944

40-
callback && callback(null, result);
45+
callback(null, result);
4146

4247
return result;
4348
} catch (error) {
44-
callback && callback(error);
49+
callback(error);
4550
throw error;
4651
}
4752
},
4853

49-
async setItem(key, value, callback) {
54+
async setItem(key, value, callback = noop) {
5055
try {
5156
await sensitiveInfo.setItem(key, value, options);
52-
callback && callback(null);
57+
callback(null);
5358
} catch (error) {
5459
callback(error);
5560
throw error;
5661
}
5762
},
5863

59-
async removeItem(key, callback) {
64+
async removeItem(key, callback = noop) {
6065
try {
6166
await sensitiveInfo.deleteItem(key, options);
62-
callback && callback(null);
67+
callback(null);
6368
} catch (error) {
6469
callback(error);
6570
throw error;
6671
}
6772
},
6873

69-
async getAllKeys(callback) {
74+
async getAllKeys(callback = noop) {
7075
try {
7176
const values = await sensitiveInfo.getAllItems(options);
7277
const result = extractKeys(values);
7378

74-
callback && callback(null, result);
79+
callback(null, result);
7580

7681
return result;
7782
} catch (error) {

package.json

+17-3
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@
33
"version": "0.1.0",
44
"description": "redux-persist storage engine for react-native-sensitive-info",
55
"main": "index.js",
6-
"files": ["index.js"],
6+
"files": [
7+
"index.js"
8+
],
79
"scripts": {
810
"format": "prettier --write '**/*.js'",
911
"lint": "eslint '**/*.js' --max-warnings 0",
1012
"precommit": "lint-staged",
11-
"test": "echo \"Error: no test specified\" && exit 1"
13+
"test": "jest --coverage",
14+
"test:watch": "jest --watch",
15+
"validate": "npm-run-all -p lint test"
1216
},
1317
"repository": {
1418
"type": "git",
@@ -37,17 +41,27 @@
3741
},
3842
"devDependencies": {
3943
"babel-eslint": "^7.2.3",
44+
"babel-jest": "^20.0.3",
4045
"eslint": "3.19.0",
4146
"eslint-config-prettier": "^2.1.1",
4247
"eslint-config-zeal": "^1.0.0",
4348
"eslint-plugin-import": "^2.3.0",
49+
"eslint-plugin-jest": "^20.0.3",
4450
"eslint-plugin-react": "^7.1.0",
4551
"eslint-plugin-react-native": "^2.3.2",
4652
"husky": "^0.13.4",
53+
"jest": "^20.0.4",
4754
"lint-staged": "^3.6.1",
55+
"npm-run-all": "^4.0.2",
4856
"prettier": "^1.4.4",
4957
"react": "16.0.0-alpha.12",
50-
"react-native": "^0.45.1"
58+
"react-native": "^0.45.1",
59+
"react-native-sensitive-info": "^5.1.0",
60+
"testdouble": "^3.0.0"
61+
},
62+
"jest": {
63+
"preset": "react-native",
64+
"setupTestFrameworkScriptFile": "<rootDir>/test/setupTests.js"
5165
},
5266
"lint-staged": {
5367
"*.js": "prettier --list-different"

test/.eslintrc.json

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"extends": ["zeal/jest"],
3+
"rules": {
4+
"arrow-body-style": "off",
5+
"global-require": "off"
6+
}
7+
}

0 commit comments

Comments
 (0)