From 7c53addcd5f05d8bcf42947e3dc1d371d922cd2f Mon Sep 17 00:00:00 2001 From: Christoph Pojer Date: Wed, 29 Jun 2016 21:52:00 -0700 Subject: [PATCH] First snapshot test, rendering "native" React component. Reviewed By: frantic Differential Revision: D3449781 fbshipit-source-id: 7abf9280f98cee06d04d7e222b884de1744afb8d --- .../__mocks__/NativeModules.js | 17 ++++++++-- .../__tests__/TouchableHighlight-test.js | 32 +++++++++++++++++++ .../TouchableHighlight-test.js.snap | 26 +++++++++++++++ Libraries/Components/View/__mocks__/View.js | 27 ++++++++++++++++ Libraries/Image/__mocks__/Image.js | 22 +++++++++++++ Libraries/Text/__mocks__/Text.js | 22 +++++++++++++ 6 files changed, 144 insertions(+), 2 deletions(-) create mode 100644 Libraries/Components/Touchable/__tests__/TouchableHighlight-test.js create mode 100644 Libraries/Components/Touchable/__tests__/__snapshots__/TouchableHighlight-test.js.snap create mode 100644 Libraries/Components/View/__mocks__/View.js create mode 100644 Libraries/Image/__mocks__/Image.js create mode 100644 Libraries/Text/__mocks__/Text.js diff --git a/Libraries/BatchedBridge/BatchedBridgedModules/__mocks__/NativeModules.js b/Libraries/BatchedBridge/BatchedBridgedModules/__mocks__/NativeModules.js index 9db8b57d2..2e59b5e7b 100644 --- a/Libraries/BatchedBridge/BatchedBridgedModules/__mocks__/NativeModules.js +++ b/Libraries/BatchedBridge/BatchedBridgedModules/__mocks__/NativeModules.js @@ -1,5 +1,11 @@ /** - * Copyright 2004-present Facebook. All Rights Reserved. + * Copyright (c) 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * */ 'use strict'; @@ -27,7 +33,14 @@ var NativeModules = { UIManager: { customBubblingEventTypes: {}, customDirectEventTypes: {}, - Dimensions: {}, + Dimensions: { + window: { + width: 750, + height: 1334, + scale: 2, + fontScale: 2, + } + }, RCTModalFullscreenView: { Constants: {}, }, diff --git a/Libraries/Components/Touchable/__tests__/TouchableHighlight-test.js b/Libraries/Components/Touchable/__tests__/TouchableHighlight-test.js new file mode 100644 index 000000000..a01482e42 --- /dev/null +++ b/Libraries/Components/Touchable/__tests__/TouchableHighlight-test.js @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +jest.disableAutomock(); + +jest.mock('NativeModules') + .mock('Text') + .mock('ensureComponentIsNative') + .mock('View'); + +const React = require('React'); +const ReactTestRenderer = require('ReactTestRenderer'); +const Text = require('Text'); +const TouchableHighlight = require('TouchableHighlight'); + +describe('TouchableHighlight', () => { + it('renders correctly', () => { + const instance = ReactTestRenderer.create( + + Touchable + + ); + + expect(instance.toJSON()).toMatchSnapshot(); + }); +}); diff --git a/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableHighlight-test.js.snap b/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableHighlight-test.js.snap new file mode 100644 index 000000000..4e79aa48c --- /dev/null +++ b/Libraries/Components/Touchable/__tests__/__snapshots__/TouchableHighlight-test.js.snap @@ -0,0 +1,26 @@ +exports[`TouchableHighlight renders correctly 0`] = ` + + + Touchable + + +`; diff --git a/Libraries/Components/View/__mocks__/View.js b/Libraries/Components/View/__mocks__/View.js new file mode 100644 index 000000000..fa3eca60c --- /dev/null +++ b/Libraries/Components/View/__mocks__/View.js @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ +'use strict'; + +const React = require('React'); +const StyleSheetPropType = require('StyleSheetPropType'); +const ViewStylePropTypes = require('ViewStylePropTypes'); + +class View extends React.Component { + render() { + const {children, ...props} = this.props; + return React.createElement('View', props, children); + } +} + +View.propTypes = { + style: StyleSheetPropType(ViewStylePropTypes), +}; + +module.exports = View; diff --git a/Libraries/Image/__mocks__/Image.js b/Libraries/Image/__mocks__/Image.js new file mode 100644 index 000000000..5e66e2e2c --- /dev/null +++ b/Libraries/Image/__mocks__/Image.js @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ +'use strict'; + +const React = require('React'); +const {Component} = React; + +class Image extends Component { + render() { + const {children, ...props} = this.props; + return React.createElement('Image', props, children); + } +} + +module.exports = Image; diff --git a/Libraries/Text/__mocks__/Text.js b/Libraries/Text/__mocks__/Text.js new file mode 100644 index 000000000..8091c122b --- /dev/null +++ b/Libraries/Text/__mocks__/Text.js @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ +'use strict'; + +const React = require('React'); +const {Component} = React; + +class Text extends Component { + render() { + const {children, ...props} = this.props; + return React.createElement('Text', props, children); + } +} + +module.exports = Text;