Skip to content
Snippets Groups Projects
Commit cc77c47b authored by Jack Reed's avatar Jack Reed
Browse files

More basic project setup stuff

parent e4a3b6c2
No related branches found
No related tags found
No related merge requests found
{
"env": {
"jest/globals": true
},
"extends": ["airbnb","react-app"],
"globals": {
"page": true,
"document": true
},
"parser": "babel-eslint",
"plugins": ["jest"],
"rules": {
"import/prefer-default-export": "off",
"no-console": "off",
"react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],
"require-jsdoc": ["error", {
"require": {
"FunctionDeclaration": true,
"MethodDefinition": true,
"ClassDeclaration": true,
"ArrowFunctionExpression": true,
"FunctionExpression": true
}
}],
"react/prefer-stateless-function": "off",
"sort-keys": ["error", "asc", {
"caseSensitive": false,
"natural": false
}]
}
}
{
"rules": {
"react/jsx-props-no-spreading": [0],
}
}
import React from 'react';
import { shallow } from 'enzyme';
import miradorAnnotationPlugin from '../src/plugins/miradorAnnotationPlugin';
/** */
function createWrapper(props) {
return shallow(
<miradorAnnotationPlugin.component
TargetComponent={'<div>hello</div>'}
targetProps={{}}
{...props}
/>,
);
}
describe('MiradorAnnotation', () => {
let wrapper;
it('renders MiradorAnnotation', () => {
wrapper = createWrapper();
expect(wrapper.text()).toBe('HelloWorld');
});
});
module.exports = {
presets: [
[
'@babel/preset-env',
{
targets: {
node: 'current',
},
},
],
'@babel/preset-react',
],
};
// For a detailed explanation regarding each configuration property, visit:
// https://jestjs.io/docs/en/configuration.html
module.exports = {
// Automatically clear mock calls and instances between every test
clearMocks: true,
// The directory where Jest should output its coverage files
coverageDirectory: 'coverage',
setupFiles: [
'<rootDir>/setupJest.js',
],
// Ignore Mirador code from jest transforms
transformIgnorePatterns: [
'<rootDir>/node_modules/(?!mirador)',
],
};
const path = require('path');
module.exports = { module.exports = {
type: 'react-component', type: 'react-component',
npm: { npm: {
esModules: true, esModules: true,
umd: false umd: {
} global: 'MiradorAnnotation',
} externals: {
react: 'React',
},
},
},
webpack: {
aliases: {
'@material-ui/core': path.resolve('./', 'node_modules', '@material-ui/core'),
'@material-ui/styles': path.resolve('./', 'node_modules', '@material-ui/styles'),
react: path.resolve('./', 'node_modules', 'react'),
'react-dom': path.resolve('./', 'node_modules', 'react-dom'),
},
},
};
...@@ -13,11 +13,12 @@ ...@@ -13,11 +13,12 @@
"scripts": { "scripts": {
"build": "nwb build-react-component", "build": "nwb build-react-component",
"clean": "nwb clean-module && nwb clean-demo", "clean": "nwb clean-module && nwb clean-demo",
"lint": "eslint ./src ./__tests__",
"prepublishOnly": "npm run build", "prepublishOnly": "npm run build",
"start": "nwb serve-react-demo", "start": "nwb serve-react-demo",
"test": "nwb test-react", "test": "npm run lint && jest",
"test:coverage": "nwb test-react --coverage", "test:coverage": "jest --coverage",
"test:watch": "nwb test-react --server" "test:watch": "jest --watch"
}, },
"dependencies": {}, "dependencies": {},
"peerDependencies": { "peerDependencies": {
...@@ -25,6 +26,22 @@ ...@@ -25,6 +26,22 @@
"react": "16.x" "react": "16.x"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.9.6",
"@babel/preset-env": "^7.9.6",
"@babel/preset-react": "^7.9.4",
"babel-eslint": "^10.1.0",
"enzyme": "^3.11.0",
"enzyme-adapter-react-16": "^1.15.2",
"eslint": "^6.8.0",
"eslint-config-airbnb": "^18.1.0",
"eslint-config-react-app": "^5.2.1",
"eslint-plugin-flowtype": "^4.7.0",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-jest": "^23.9.0",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.19.0",
"eslint-plugin-react-hooks": "^4.0.0",
"jest": "^26.0.1",
"mirador": "^3.0.0-beta.8", "mirador": "^3.0.0-beta.8",
"nwb": "0.24.x", "nwb": "0.24.x",
"react": "^16.13.1", "react": "^16.13.1",
......
import Enzyme from 'enzyme'; // eslint-disable-line import/no-extraneous-dependencies
import Adapter from 'enzyme-adapter-react-16'; // eslint-disable-line import/no-extraneous-dependencies
Enzyme.configure({ adapter: new Adapter() });
import React, { Component } from 'react' import React, { Component } from 'react';
class MiradorImageTools extends Component { /** */
class MiradorAnnotation extends Component {
/** */
render() { render() {
return ( return (
<div>HelloWorld</div> <div>HelloWorld</div>
) );
} }
} }
export default { export default {
target: 'WindowTopMenu', component: MiradorAnnotation,
mode: 'add', mode: 'add',
component: MiradorImageTools, target: 'WindowTopMenu',
} };
{
"env": {
"mocha": true
}
}
import expect from 'expect'
import React from 'react'
import {render, unmountComponentAtNode} from 'react-dom'
import Component from 'src/'
describe('Component', () => {
let node
beforeEach(() => {
node = document.createElement('div')
})
afterEach(() => {
unmountComponentAtNode(node)
})
it('displays a welcome message', () => {
render(<Component/>, node, () => {
expect(node.innerHTML).toContain('Welcome to React components')
})
})
})
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment