diff --git a/.gitignore b/.gitignore index 7b17ed42d3..50dba449c0 100644 --- a/.gitignore +++ b/.gitignore @@ -37,4 +37,6 @@ Example/Pods Example/compile_commands.json Example/Emission/Configuration.h .vscode/launchReactNative.js -.vscode/.react/ \ No newline at end of file +.vscode/.react/ +typings + diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..d5e060cf5c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +language: node_js +node_js: + - "6.1" + +before_install: + - rvm install 2.2 + - rvm use 2.2 --fuzzy + +install: + - bundle install + - npm install + +before_script: + - bundle exec danger + - npm run lint diff --git a/Dangerfile.js b/Dangerfile.js new file mode 100644 index 0000000000..f573d41f60 --- /dev/null +++ b/Dangerfile.js @@ -0,0 +1 @@ +message("Hello, world.") diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000000..34446128b6 --- /dev/null +++ b/Gemfile @@ -0,0 +1,7 @@ +# Once danger-js is shipped, I'm happy to move this to a `gem install danger-js` step in travis if we want. +source "https://rubygems.org" + +gem "danger", git: "https://github.com/danger/danger", :branch => "js" +gem "danger-js" + +gem "danger-junit" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000000..93f58fe834 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,67 @@ +GIT + remote: https://github.com/danger/danger + revision: b5ceb81c029eee496f746b4039b2801d5cc4b9c0 + branch: js + specs: + danger (2.1.2) + claide (~> 1.0) + claide-plugins (> 0.9.0) + colored (~> 1.2) + cork (~> 0.1) + faraday (~> 0) + faraday-http-cache (~> 1.0) + git (~> 1) + kramdown (~> 1.5) + octokit (~> 4.2) + terminal-table (~> 1) + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.4.0) + claide (1.0.0) + claide-plugins (0.9.1) + cork + nap + open4 (~> 1.3) + colored (1.2) + cork (0.1.0) + colored (~> 1.2) + danger-js (1.0.0) + danger (> 2.0) + therubyracer (~> 0.12) + danger-junit (0.7.0) + danger (~> 2.0) + ox (~> 2.0) + faraday (0.9.2) + multipart-post (>= 1.2, < 3) + faraday-http-cache (1.3.1) + faraday (~> 0.8) + git (1.3.0) + kramdown (1.11.1) + libv8 (3.16.14.15) + multipart-post (2.0.0) + nap (1.1.0) + octokit (4.3.0) + sawyer (~> 0.7.0, >= 0.5.3) + open4 (1.3.4) + ox (2.4.4) + ref (2.0.0) + sawyer (0.7.0) + addressable (>= 2.3.5, < 2.5) + faraday (~> 0.8, < 0.10) + terminal-table (1.6.0) + therubyracer (0.12.2) + libv8 (~> 3.16.14.0) + ref + +PLATFORMS + ruby + +DEPENDENCIES + danger! + danger-js + danger-junit + +BUNDLED WITH + 1.12.5 diff --git a/dependencyci.yml b/dependencyci.yml index bf79edfe2d..93aff3a15e 100644 --- a/dependencyci.yml +++ b/dependencyci.yml @@ -1,5 +1,9 @@ platforms: + rubygems: + colored: + tests: + unmaintained: skip NPM: jade: tests: - deprecated: skip \ No newline at end of file + deprecated: skip diff --git a/jsconfig.json b/jsconfig.json index 825156ba50..8180efb77c 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -7,6 +7,7 @@ "exclude": [ "node_modules", "Pod/Assets", - "Example/Build" + "Example/Build", + ".vscode/typings" ] } diff --git a/lib/components/__tests__/__snapshots__/seperator-tests.js.snap b/lib/components/__tests__/__snapshots__/seperator-tests.js.snap new file mode 100644 index 0000000000..cc890c8aca --- /dev/null +++ b/lib/components/__tests__/__snapshots__/seperator-tests.js.snap @@ -0,0 +1,14 @@ +exports[`test looks like expected 1`] = ` + +`; diff --git a/lib/components/__tests__/__snapshots__/tab_view-tests.js.snap b/lib/components/__tests__/__snapshots__/tab_view-tests.js.snap new file mode 100644 index 0000000000..58062e7e3b --- /dev/null +++ b/lib/components/__tests__/__snapshots__/tab_view-tests.js.snap @@ -0,0 +1,26 @@ +exports[`test looks like expected 1`] = ` + + + + +`; diff --git a/lib/components/__tests__/seperator-tests.js b/lib/components/__tests__/seperator-tests.js new file mode 100644 index 0000000000..71216beece --- /dev/null +++ b/lib/components/__tests__/seperator-tests.js @@ -0,0 +1,13 @@ +import 'react-native' +import React from 'react' +import renderer from 'react-test-renderer' +import Separator from '..//separator' + +it('looks like expected', () => { + const tree = renderer.create( + + ).toJSON() + expect(tree).toMatchSnapshot() +}) + + diff --git a/lib/components/__tests__/tab_view-tests.js b/lib/components/__tests__/tab_view-tests.js new file mode 100644 index 0000000000..21f43b3c70 --- /dev/null +++ b/lib/components/__tests__/tab_view-tests.js @@ -0,0 +1,11 @@ +import 'react-native' +import React from 'react' +import renderer from 'react-test-renderer' +import TabView from '../tab_view' + +it('looks like expected', () => { + const tree = renderer.create( + {}} /> + ).toJSON() + expect(tree).toMatchSnapshot() +}) diff --git a/package.json b/package.json index 3b97e0b0ca..8b55098b73 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,11 @@ "sync-colors": "cd externals/elan && git fetch && git checkout origin/master && cp components/lib/variables/colors.json ../../data", "sync-externals": "npm run-script sync-schema && npm run-script sync-colors", "sync-schema": "cd externals/metaphysics && git fetch && git checkout origin/master && npm install && npm run dump-schema -- ../../data && rm -rf node_modules", - "test": "env NODE_ENV=test NODE_PATH=./lib mocha --recursive ./test" + "test": "jest", + "testing": "jest --watch" + }, + "jest": { + "preset": "jest-react-native" }, "repository": { "type": "git", @@ -49,22 +53,21 @@ "devDependencies": { "@kadira/react-native-storybook": "^1.11.3", "babel-eslint": "^6.0.0", + "babel-jest": "^14.1.0", + "babel-polyfill": "^6.13.0", + "babel-preset-react-native": "^1.9.0", "babel-relay-plugin": "^0.9.0", - "chai": "^3.5.0", - "chai-as-promised": "^5.3.0", - "chai-enzyme": "^0.4.2", - "concurrently": "^2.2.0", - "enzyme": "^2.2.0", "eslint": "^2.5.3", "eslint-plugin-flow-vars": "^0.2.1", "eslint-plugin-flowtype": "^2.3.1", "eslint-plugin-react": "^4.2.1", "flow-bin": "0.29.0", - "mocha": "^2.4.5", - "react-addons-test-utils": "^15.1.0", - "react-dom": "^15.1.0", + "jest": "^14.1.0", + "jest-cli": "^14.1.0", + "jest-react-native": "^14.1.2", "react-storybooks-relay-container": "^1.0.0", - "sinon": "^1.17.3" + "react-test-renderer": "^15.3.0", + "typings": "^1.3.2" }, "peerDependencies": { "babel-relay-plugin": "^0.9.0" diff --git a/test/components/artist/header.test.js b/test/components/artist/header.test.js deleted file mode 100644 index 5c586785c6..0000000000 --- a/test/components/artist/header.test.js +++ /dev/null @@ -1,13 +0,0 @@ -import common from '../../support/common' -const { expect, MockComponents } = common -const { Text } = MockComponents - -import { shallow } from 'enzyme' - -import Header from 'components/artist/header' - -describe('Artist Header', function () { - it('renders', function () { - expect(shallow(
)).to.contain(Kevin Beasley) - }) -}) diff --git a/test/containers/artist.test.js b/test/containers/artist.test.js deleted file mode 100644 index 276aa8dc13..0000000000 --- a/test/containers/artist.test.js +++ /dev/null @@ -1,16 +0,0 @@ -import common from '../support/common' -const { React, expect, MockComponents } = common -const { ScrollView } = MockComponents - -import { shallow, render } from 'enzyme' - -import Artist from 'containers/artist' -import Header from 'components/artist/header' - -describe('Artist container', function () { - it('renders', function () { - // expect(shallow().first().type().displayName).to.equal('ScrollView'); - // console.log(shallow().length); - // expect(shallow().find('Header').text()).to.equal('Kevin Beasley'); - }) -}) diff --git a/test/mocha.opts b/test/mocha.opts deleted file mode 100644 index c0f4014223..0000000000 --- a/test/mocha.opts +++ /dev/null @@ -1,2 +0,0 @@ ---compilers js:./test/support/compiler ---require ./test/support/common diff --git a/test/sanity.test.js b/test/sanity.test.js deleted file mode 100644 index 5a5c10e65f..0000000000 --- a/test/sanity.test.js +++ /dev/null @@ -1,33 +0,0 @@ -/* eslint-env node, mocha */ - -// https://medium.com/@jcfrancisco/unit-testing-react-native-components-a-firsthand-guide-cea561df242b#.ym5r45t78 - -import common from './support/common' -const { createShallowRenderer, React, expect, MockComponents } = common - -class TestFixture extends React.Component { - render() { - return - } -} - -function setup() { - const props = {} - - const renderer = createShallowRenderer() - renderer.render() - const output = renderer.getRenderOutput() - - return { - props, - output, - renderer, - } -} - -describe('TestFixture', () => { - it('should render a scrollview', () => { - const { output } = setup() - expect(output.type.displayName).to.equal(MockComponents.ScrollView.displayName) - }) -}) diff --git a/test/support/common.js b/test/support/common.js deleted file mode 100644 index 771b18595c..0000000000 --- a/test/support/common.js +++ /dev/null @@ -1,14 +0,0 @@ -import chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -import React from 'react' -import ReactTestUtils from 'react-addons-test-utils' -import { MockComponents } from './mocks/react-native' - -chai.use(chaiAsPromised) - -export default { - expect: chai.expect, - createShallowRenderer: ReactTestUtils.createRenderer, - React, - MockComponents, -} diff --git a/test/support/compiler.js b/test/support/compiler.js deleted file mode 100644 index e3fbd8c033..0000000000 --- a/test/support/compiler.js +++ /dev/null @@ -1,22 +0,0 @@ -var fs = require('fs') -var path = require('path') -var babel = require('babel-core') -var origJs = require.extensions['.js'] - -require.extensions['.js'] = function (module, fileName) { - var output - if (fileName === path.resolve('./node_modules/react-native/Libraries/react-native/react-native.js')) { - fileName = path.resolve('./test/support/mocks/react-native.js') - } - if (fileName.indexOf('node_modules/') >= 0) { - return (origJs || require.extensions['.js'])(module, fileName) - } - var src = fs.readFileSync(fileName, 'utf8') - output = babel.transform(src, { - filename: fileName, - sourceFileName: fileName, - presets: ['react-native'], - }).code - - return module._compile(output, fileName) -} diff --git a/test/support/mocks/react-native.js b/test/support/mocks/react-native.js deleted file mode 100644 index 17f67c2415..0000000000 --- a/test/support/mocks/react-native.js +++ /dev/null @@ -1,32 +0,0 @@ -import React from 'react' - -function mockComponent(type) { - const Component = React.createClass({ - displayName: type, - propTypes: { children: React.PropTypes.node }, - render() { return React.createElement(React.DOM.div, this.props, this.props.children) }, - }) - return Component -} - -const componentsToMock = [ - 'View', - 'Text', - 'Component', - 'ScrollView', - 'TextInput', -] - -export const MockComponents = componentsToMock.reduce((agg, type) => { - agg[type] = mockComponent(type) - return agg -}, {}) - -export default { - ...React, - ...MockComponents, - StyleSheet: { - create: (ss) => ss, - }, - PropTypes: React.PropTypes, -} diff --git a/tsconfig.json b/tsconfig.json index 29809a934c..90aabbabf8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,4 +7,4 @@ "Pod/Assets", "Example/Build" ] -} \ No newline at end of file +} diff --git a/typings.json b/typings.json new file mode 100644 index 0000000000..e1113fddfd --- /dev/null +++ b/typings.json @@ -0,0 +1,8 @@ +{ + "globalDependencies": { + "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", + "lodash": "registry:dt/lodash#4.14.0+20160802150749", + "react": "registry:dt/react#0.14.0+20160805125551", + "react-native": "registry:dt/react-native#0.29.0+20160728152643" + } +}