From 55218bc1836c2fb8ed684a8dffaa3ad88d500e3f Mon Sep 17 00:00:00 2001 From: tema4uk Date: Tue, 27 Dec 2016 18:04:35 +0200 Subject: [PATCH] add tests --- .babelrc | 4 ++++ Tests/Setup.js | 39 +++++++++++++++++++++++++++++++++++++++ Tests/WheelPicker.test.js | 27 +++++++++++++++++++++++++++ package.json | 19 +++++++++++++------ test/WheelPicker.test.js | 8 -------- 5 files changed, 83 insertions(+), 14 deletions(-) create mode 100644 .babelrc create mode 100644 Tests/Setup.js create mode 100644 Tests/WheelPicker.test.js delete mode 100644 test/WheelPicker.test.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 00000000..d2fe5996 --- /dev/null +++ b/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["react-native"], + "ignore": false +} diff --git a/Tests/Setup.js b/Tests/Setup.js new file mode 100644 index 00000000..4b3db644 --- /dev/null +++ b/Tests/Setup.js @@ -0,0 +1,39 @@ +import mockery from 'mockery'; +import m from 'module'; + +// inject __DEV__ as it is not available when running through the tests +global.__DEV__ = true; + +// We enable mockery and leave it on. +mockery.enable(); + +// Silence the warnings when *real* modules load... this is a change from +// the norm. We want to opt-in instead of opt-out because not everything +// will be mocked. +mockery.warnOnUnregistered(false); + +// Mock any libs that get called in here +// I'm looking at you react-native-router-flux, reactotron etc! +mockery.registerMock('reactotron-react-native', {}); +mockery.registerMock('reactotron-redux', {}); +mockery.registerMock('reactotron-apisauce', {}); +mockery.registerMock('react-native-animatable', { View: 'Animatable.View' }); +mockery.registerMock('react-native-vector-icons/Ionicons', {}); + +// mock i18n as it uses react native stufff +mockery.registerMock('react-native-i18n', { + t: key => key, +}); + +mockery.registerMock('react-native-router-flux', {}); + + +// Mock all images for React Native +const originalLoader = m._load; +m._load = (request, parent, isMain) => { + if (request.match(/.jpeg|.jpg|.png|.gif$/)) { + return { uri: request }; + } + + return originalLoader(request, parent, isMain); +}; diff --git a/Tests/WheelPicker.test.js b/Tests/WheelPicker.test.js new file mode 100644 index 00000000..60e142b8 --- /dev/null +++ b/Tests/WheelPicker.test.js @@ -0,0 +1,27 @@ +import React from 'react'; + +import test from 'ava'; +import { shallow } from 'enzyme'; +import WheelPicker from '../WheelPicker'; +const wrapper = shallow(); + +test('component exists', (t) => { + t.is(wrapper.length, 1); // exists +}); + +test('component structure', (t) => { + t.is(wrapper.name(), 'WheelPicker'); // the right root component + t.is(wrapper.children().length, 0); // has 1 child +}); + +test('data', (t) => { + const data = [1, 2, 3]; + const wrapperPress = shallow(); + + t.is(wrapperPress.prop('data').length, 3); + t.is(wrapperPress.prop('isCurved'), true); + t.is(wrapperPress.prop('isAtmospheric'), true); + t.is(wrapperPress.prop('isCyclic'), false); + t.is(wrapperPress.prop('visibleItemCount'), 4); + t.is(wrapperPress.prop('backgroundColor'), 'black'); +}); diff --git a/package.json b/package.json index ddbb86d6..54a67d45 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-wheel-picker-android", - "version": "0.1.5", + "version": "0.1.6", "description": "Simple Wheel Picker for Android to use with react-native", "main": "index.js", "repository": { @@ -25,18 +25,25 @@ "lint": "eslint .", "test": "ava" }, + "ava": { + "babel": "inherit", + "files": [ "Tests/**/*.js", "!Tests/Setup.js" ], + "require": [ + "babel-register", + "babel-polyfill", + "react-native-mock/mock", + "./Tests/Setup" + ] + }, "devDependencies": { "ava": "^0.17.0", - "react": "~15.3.0", - "react-native": "^0.34.0", - "react-dom": "^15.3.1", - "react-addons-test-utils": "^15.3.1", "eslint": "^3.12.2", "eslint-config-airbnb": "^13.0.0", "eslint-plugin-import": "^2.2.0", "eslint-plugin-jsx-a11y": "^2.2.3", "eslint-plugin-react": "^6.8.0", - "pre-commit": "^1.2.2" + "pre-commit": "^1.2.2", + "react-native-mock": "^0.2.9" }, "pre-commit": [ "test" diff --git a/test/WheelPicker.test.js b/test/WheelPicker.test.js deleted file mode 100644 index a151fb41..00000000 --- a/test/WheelPicker.test.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; - -import test from 'ava'; -import { shallow } from 'enzyme'; - -test('test', (t) => { - t.is(1, 1); // exists -});