From f6f6ecae40a8b78b3f833b7716698b5505b1090f Mon Sep 17 00:00:00 2001 From: Pete Gleeson Date: Wed, 2 May 2018 15:06:27 +1000 Subject: [PATCH] most basic implementation of adapter calling toTree from react-test-renderer --- .../enzyme-adapter-react-renderer/.babelrc | 6 ++ .../.eslintignore | 2 + .../enzyme-adapter-react-renderer/.eslintrc | 12 ++++ .../enzyme-adapter-react-renderer/.npmignore | 1 + packages/enzyme-adapter-react-renderer/.npmrc | 1 + .../enzyme-adapter-react-renderer/README.md | 1 + .../package.json | 56 +++++++++++++++++++ .../src/ReactTestRendererAdapter.js | 31 ++++++++++ .../src/index.js | 2 + 9 files changed, 112 insertions(+) create mode 100644 packages/enzyme-adapter-react-renderer/.babelrc create mode 100644 packages/enzyme-adapter-react-renderer/.eslintignore create mode 100644 packages/enzyme-adapter-react-renderer/.eslintrc create mode 120000 packages/enzyme-adapter-react-renderer/.npmignore create mode 100644 packages/enzyme-adapter-react-renderer/.npmrc create mode 120000 packages/enzyme-adapter-react-renderer/README.md create mode 100644 packages/enzyme-adapter-react-renderer/package.json create mode 100644 packages/enzyme-adapter-react-renderer/src/ReactTestRendererAdapter.js create mode 100644 packages/enzyme-adapter-react-renderer/src/index.js diff --git a/packages/enzyme-adapter-react-renderer/.babelrc b/packages/enzyme-adapter-react-renderer/.babelrc new file mode 100644 index 000000000..b7a8b2f5a --- /dev/null +++ b/packages/enzyme-adapter-react-renderer/.babelrc @@ -0,0 +1,6 @@ +{ + "presets": ["airbnb"], + "plugins": [ + ["transform-replace-object-assign", "object.assign"], + ], +} diff --git a/packages/enzyme-adapter-react-renderer/.eslintignore b/packages/enzyme-adapter-react-renderer/.eslintignore new file mode 100644 index 000000000..121f8b489 --- /dev/null +++ b/packages/enzyme-adapter-react-renderer/.eslintignore @@ -0,0 +1,2 @@ +_book/ +build/ diff --git a/packages/enzyme-adapter-react-renderer/.eslintrc b/packages/enzyme-adapter-react-renderer/.eslintrc new file mode 100644 index 000000000..557c66e59 --- /dev/null +++ b/packages/enzyme-adapter-react-renderer/.eslintrc @@ -0,0 +1,12 @@ +{ + "rules": { + "import/no-extraneous-dependencies": 0, + "import/no-unresolved": 0, + "import/extensions": 0, + "react/no-deprecated": 0, + "react/no-find-dom-node": 0, + "react/no-multi-comp": 0, + "no-underscore-dangle": 0, + "class-methods-use-this": 0 + } +} diff --git a/packages/enzyme-adapter-react-renderer/.npmignore b/packages/enzyme-adapter-react-renderer/.npmignore new file mode 120000 index 000000000..bc62d9df1 --- /dev/null +++ b/packages/enzyme-adapter-react-renderer/.npmignore @@ -0,0 +1 @@ +../enzyme/.npmignore \ No newline at end of file diff --git a/packages/enzyme-adapter-react-renderer/.npmrc b/packages/enzyme-adapter-react-renderer/.npmrc new file mode 100644 index 000000000..43c97e719 --- /dev/null +++ b/packages/enzyme-adapter-react-renderer/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/packages/enzyme-adapter-react-renderer/README.md b/packages/enzyme-adapter-react-renderer/README.md new file mode 120000 index 000000000..fe8400541 --- /dev/null +++ b/packages/enzyme-adapter-react-renderer/README.md @@ -0,0 +1 @@ +../../README.md \ No newline at end of file diff --git a/packages/enzyme-adapter-react-renderer/package.json b/packages/enzyme-adapter-react-renderer/package.json new file mode 100644 index 000000000..9bc9218e9 --- /dev/null +++ b/packages/enzyme-adapter-react-renderer/package.json @@ -0,0 +1,56 @@ +{ + "name": "enzyme-adapter-react-renderer", + "version": "0.0.1", + "description": "JavaScript Testing utilities for React", + "homepage": "http://airbnb.io/enzyme/", + "main": "build", + "scripts": { + "clean": "rimraf build", + "lint": "eslint --ext js,jsx .", + "pretest": "npm run lint", + "prebuild": "npm run clean", + "build": "babel src --out-dir build", + "watch": "npm run build -- -w", + "prepublish": "npm run build && safe-publish-latest" + }, + "repository": { + "type": "git", + "url": "https://github.com/airbnb/enzyme.git" + }, + "keywords": [ + "javascript", + "shallow rendering", + "shallowRender", + "test", + "reactjs", + "react", + "flux", + "testing", + "test utils", + "assertion helpers", + "tdd", + "mocha" + ], + "author": "Leland Richardson ", + "license": "MIT", + "dependencies": { + "react-test-renderer": "^16.3.2" + }, + "peerDependencies": { + "enzyme": "^3.0.0", + "react": "^16.3.2", + "react-dom": "^16.3.2" + }, + "devDependencies": { + "babel-cli": "^6.26.0", + "enzyme": "^3.0.0", + "eslint": "^4.18.0", + "eslint-config-airbnb": "^16.1.0", + "eslint-plugin-import": "^2.8.0", + "eslint-plugin-jsx-a11y": "^6.0.3", + "eslint-plugin-react": "^7.6.1", + "in-publish": "^2.0.0", + "rimraf": "^2.6.2", + "safe-publish-latest": "^1.1.1" + } +} diff --git a/packages/enzyme-adapter-react-renderer/src/ReactTestRendererAdapter.js b/packages/enzyme-adapter-react-renderer/src/ReactTestRendererAdapter.js new file mode 100644 index 000000000..62f7b574a --- /dev/null +++ b/packages/enzyme-adapter-react-renderer/src/ReactTestRendererAdapter.js @@ -0,0 +1,31 @@ +import { EnzymeAdapter } from 'enzyme'; +import ReactTestRenderer from 'react-test-renderer'; + +class ReactTestRendererAdapter extends EnzymeAdapter { + constructor() { + super(); + } + createMountRenderer(options) { + let instance = null; + return { + render(element) { + instance = ReactTestRenderer.create(element); + }, + getNode() { + return instance.toTree(); + }, + unmount() { + instance.unmount(); + } + }; + } + createRenderer(options) { + switch (options.mode) { + case EnzymeAdapter.MODES.MOUNT: return this.createMountRenderer(options); + default: + throw new Error(`Enzyme Internal Error: Unrecognized mode: ${options.mode}`); + } + } +} + +module.exports = ReactTestRendererAdapter; diff --git a/packages/enzyme-adapter-react-renderer/src/index.js b/packages/enzyme-adapter-react-renderer/src/index.js new file mode 100644 index 000000000..e187e6db3 --- /dev/null +++ b/packages/enzyme-adapter-react-renderer/src/index.js @@ -0,0 +1,2 @@ +/* eslint global-require: 0 */ +module.exports = require('./ReactTestRendererAdapter');