diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000000..a9ce1369e6 --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["react-native"] +} diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..a77851d066 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,14 @@ +language: node_js +sudo: true +node_js: + - "4.4" + - "4.2" +cache: + directories: + - node_modules +before_install: + - npm install +script: + - npm test +after_script: + - npm run coverage diff --git a/package.json b/package.json index a457e16cb4..64b42f9116 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "react native datePicker component for both Android and IOS, useing DatePikcerAndroid, TimePickerAndroid and DatePickerIOS", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", + "test": "node ./node_modules/.bin/istanbul cover ./node_modules/mocha/bin/_mocha ./test/*.test.js", + "coverage": "cat ./coverage/lcov.info | coveralls", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s" }, "repository": { @@ -25,7 +26,18 @@ "moment": "2.x.x" }, "devDependencies": { - "cz-conventional-changelog": "^1.1.6" + "babel": "^6.5.2", + "babel-preset-react-native": "^1.8.0", + "chai": "^3.5.0", + "cz-conventional-changelog": "^1.1.6", + "enzyme": "^2.3.0", + "istanbul": "^1.0.0-alpha.2", + "mocha": "^2.5.2", + "react": "^0.14.8", + "react-addons-test-utils": "^0.14.8", + "react-dom": "^0.14.8", + "react-native": "^0.24.1", + "react-native-mock": "^0.2.0" }, "config": { "commitizen": { diff --git a/test/index.test.js b/test/index.test.js new file mode 100644 index 0000000000..77e53ebab7 --- /dev/null +++ b/test/index.test.js @@ -0,0 +1,15 @@ +import React, { View, Text, StyleSheet } from 'react-native'; +import { shallow } from 'enzyme'; +import Moment from 'moment'; +import DatePicker from '../index'; +import { expect } from 'chai'; + + +let icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAABA9JREFUeJztm81vG0UYxp+ZdRzsqAmtjZBV81kKEmrPVEpDcSNRCSGkXihcOMIBCQTqH0CPDTlSCf4ApJLe2kpIUORGNBECWgVICyWtDXVKYpo6/og33vXOvhyCIMYrxjvZeJ1kfjfPvvO+zzya2X0VTQDNzoapTpyYnY3uLlWPGkS0lBjKvnrggB2kMBnT09MxU7AXiIgiwrqcyWQaKnmUDMhmv0+6EWsS4M/+PfRTFM6RkZGRZZV8fpmc/C5lw/mac+xbG3HnHI7Dx4aH//Sbi6sIEEbz/XWLB4CDNiLvquRSocmd9/5dPADw/REX76jkUjKAMdrfPkrPqORSqg96wmN0X/uYHCUDyOvoECm/T8Ksr2TAdqJj1xbOjJ9g+dyYW8in5188zmtPH2x5PvTzDPae/zRwgV4Ujr8Br/qpS+eJP/LYXTz51MnU2yc/6yRXRzug+OGpj/HlxbP0y4+PsnqtZ3cNN2sMN2fT+OLC2eLYB590NEcWsHBm/IQ7lX0LjrNxhd1CCLhT2TfvfjT+uixUagDL58b+u/imEG1xtnD9SNwQHdUXAsZvudOyXFID3EI+vf531bbR8BBgOQJVa/ObQT/13Tu398ryyXeAudISUzIbYB4CyHWwvKrUjfqiZDbAHI/6or0+M+vS9clfaEQtP20hwG7eaI/79TosD2OCxhYC7MZM2zi/PqNUP+J3gsE56OoU2J4EaHgUjAi4cgn82jcw+OZ/IAzOQTPfgu9Ogo4cAxGBX/4cmL2qVF/aByy8fLhlC9wzTZRWLc/YROwBJOMx3yL84Ld+6uKV/12jb8uSsTjife0bJ97Xh0Rscxe/GfV9HwHGgPTgLtQsG6bT/Kf4rmhU/Y8LIdb3bQCwdm4G+6MY7I+qTN8wQdbv2ba2W2gDwhYQNjveAOmLc6lcIVlML5N8cCjYPmC7oQ0IW0DY7HgDlDrBe0v3UTfNlrGBgTgeSiR64rkflAyomyYqlVrLGAcDEr3x3A87/ghoA8IWEDZK74CBgfjamVtHPB7vmed+0K1wt4T0KroP8D0D4X/ndR8QINqAsAWEje4DZAG6D9jm6D7A9wyE/53XfUCAaAPCFhA2ug+QBSzeL1HEMJSSh41wHDycTGysD1hZqQenqMvUVkxpjNSA4mLRJdp6zSARYbFYlF5flRpgNpr5wvwCtpIJRITC/B+wbOuWLFZ+U5TRueVyGXO38yhXqnA8bmn2CsJxUC5XMXcrh+VyBQDOyeZIvwKGsE47kehrq6uNx3+/Mx+Ezu7gUs7qN8ZkYdIdkMlkykDfqOvSD8Eo6wrXuMtGXzp0qCoL7Phq3cTEhLEnlX6FETsKRslu/o9QJ7iMuwxY4i77avL55y6cYqx79/c1Go1mq/IXVr8zUhJfa5MAAAAASUVORK5CYII='; + +describe('', () => { + it('should render stuff', () => { + const wrapper = shallow(); + expect(wrapper.length).to.equal(1); + }); +}); diff --git a/test/mocha.opts b/test/mocha.opts new file mode 100644 index 0000000000..0a76b8936d --- /dev/null +++ b/test/mocha.opts @@ -0,0 +1,4 @@ +--colors +--require ./node_modules/react-native-mock/mock.js +--compilers js:babel-core/register +--recursive