mirror of
https://github.com/yldio/copilot.git
synced 2024-11-28 14:10:04 +02:00
add example tests for each type
This commit is contained in:
parent
382f184580
commit
4f50e56e00
@ -22,7 +22,7 @@ ui:
|
||||
|
||||
.PHONY: test
|
||||
test: ui
|
||||
NODE_ENV=test BABEL_DISABLE_CACHE=1 CONFIG=$(shell pwd)/webpack/index.js $(NYC) $(AVA) test/*.js $(TEST_ARGS)
|
||||
NODE_ENV=test BABEL_DISABLE_CACHE=1 CONFIG=$(shell pwd)/webpack/index.js $(NYC) $(AVA) test/**/*.js $(TEST_ARGS)
|
||||
|
||||
XUNIT_DIR := ${CIRCLE_TEST_REPORTS}/tap-xunit
|
||||
XUNIT := $(bindir)/tap-xunit
|
||||
@ -30,7 +30,7 @@ XUNIT_OUTPUT := >> ${CIRCLE_TEST_REPORTS}/tap-xunit/xunit-$(NAME)
|
||||
.PHONY: test-ci
|
||||
test-ci: ui
|
||||
mkdir -p $(XUNIT_DIR)
|
||||
BABEL_DISABLE_CACHE=1 NODE_ENV=test CONFIG=$(shell pwd)/webpack/index.js $(NYC) $(AVA) test/*.js -t | $(XUNIT) $(XUNIT_OUTPUT).xml
|
||||
BABEL_DISABLE_CACHE=1 NODE_ENV=test CONFIG=$(shell pwd)/webpack/index.js $(NYC) $(AVA) test/**/*.js -t | $(XUNIT) $(XUNIT_OUTPUT).xml
|
||||
|
||||
.PHONY: compile
|
||||
compile: ui install
|
||||
|
@ -25,6 +25,7 @@
|
||||
"inherits": "^2.0.3",
|
||||
"locale": "^0.1.0",
|
||||
"lodash.find": "^4.6.0",
|
||||
"lodash.get": "^4.4.2",
|
||||
"lodash.isempty": "^4.4.0",
|
||||
"lodash.template": "^4.4.0",
|
||||
"lodash.uniq": "^4.5.0",
|
||||
@ -76,12 +77,15 @@
|
||||
"eslint-plugin-react": "^6.8.0",
|
||||
"eslint-plugin-standard": "^2.0.1",
|
||||
"fast-async": "^6.1.2",
|
||||
"jsdom": "^9.9.1",
|
||||
"json-loader": "^0.5.4",
|
||||
"ncp": "^2.0.0",
|
||||
"node-hook": "^0.4.0",
|
||||
"nyc": "^10.0.0",
|
||||
"pre-commit": "^1.2.2",
|
||||
"react-addons-test-utils": "^15.4.1",
|
||||
"redux-ava": "^2.2.0",
|
||||
"simple-mock": "^0.7.3",
|
||||
"tap-xunit": "^1.5.0",
|
||||
"thenify": "^3.2.1",
|
||||
"webpack": "^2.1.0-beta.25",
|
||||
|
@ -23,7 +23,7 @@ const Projects = ({
|
||||
const empty = projects.length ? null : (
|
||||
<Row>
|
||||
<Column xs={12}>
|
||||
<p>
|
||||
<p name='empty'>
|
||||
<FormattedMessage id='no-personal-projects' />
|
||||
</p>
|
||||
</Column>
|
||||
@ -48,7 +48,7 @@ const Projects = ({
|
||||
</Column>
|
||||
</Row>
|
||||
<Row>
|
||||
<ul>
|
||||
<ul name='projects'>
|
||||
{_projects}
|
||||
</ul>
|
||||
</Row>
|
||||
|
@ -11,8 +11,14 @@ const {
|
||||
} = selectors;
|
||||
|
||||
|
||||
const mapStateToProps = (state, ownProps) => ({
|
||||
projects: projectsByOrgIdSelector(ownProps.params.org)(state)
|
||||
const mapStateToProps = (state, {
|
||||
params = {}
|
||||
}) => ({
|
||||
projects: projectsByOrgIdSelector(params.org)(state)
|
||||
});
|
||||
|
||||
module.exports = connect(mapStateToProps)(Projects);
|
||||
module.exports = connect(
|
||||
mapStateToProps
|
||||
)(Projects);
|
||||
|
||||
module.exports.mapStateToProps = mapStateToProps;
|
||||
|
@ -1,15 +1,16 @@
|
||||
const find = require('lodash.find');
|
||||
const forceArray = require('force-array');
|
||||
const get = require('lodash.get');
|
||||
const reselect = require('reselect');
|
||||
|
||||
const {
|
||||
createSelector
|
||||
} = reselect;
|
||||
|
||||
const account = (state) => state.account.data;
|
||||
const orgUiSections = (state) => state.orgs.ui.sections;
|
||||
const orgs = (state) => state.orgs.data;
|
||||
const projects = (state) => state.projects.data;
|
||||
const account = (state) => get(state, 'account.data', {});
|
||||
const orgUiSections = (state) => get(state, 'orgs.ui.sections', []);
|
||||
const orgs = (state) => get(state, 'orgs.data', []);
|
||||
const projects = (state) => get(state, 'projects.data', []);
|
||||
|
||||
const orgById = (id) => createSelector(
|
||||
orgs,
|
||||
|
@ -7,7 +7,10 @@ const transitionTo = (pathname) => (dispatch, getState) => {
|
||||
}
|
||||
} = getState();
|
||||
|
||||
return transitionTo(pathname);
|
||||
return dispatch({
|
||||
type: 'TRANSITION_TO',
|
||||
PAYLOAD: transitionTo(pathname)
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
|
@ -1,4 +1,5 @@
|
||||
const hook = require('node-hook');
|
||||
const jsdom = require('jsdom');
|
||||
const register = require('babel-register');
|
||||
|
||||
hook.hook('.png', () => '');
|
||||
@ -6,3 +7,11 @@ hook.hook('.png', () => '');
|
||||
register({
|
||||
extensions: ['.js']
|
||||
});
|
||||
|
||||
// import ExecutionEnvironment from 'react/lib/ExecutionEnvironment';
|
||||
|
||||
if (!global.document || !global.window) {
|
||||
global.document = jsdom.jsdom('<!doctype html><html><body></body></html>');
|
||||
global.window = global.document.defaultView;
|
||||
global.navigator = global.window.navigator;
|
||||
}
|
25
frontend/test/actions/index.js
Normal file
25
frontend/test/actions/index.js
Normal file
@ -0,0 +1,25 @@
|
||||
const ReduxAva = require('redux-ava');
|
||||
const test = require('ava');
|
||||
|
||||
const actions = require('@state/actions');
|
||||
|
||||
const {
|
||||
actionTest
|
||||
} = ReduxAva;
|
||||
|
||||
const {
|
||||
updateRouter
|
||||
} = actions;
|
||||
|
||||
test('updateRouter action', actionTest(updateRouter, {
|
||||
type: '/APP/UPDATE_ROUTER'
|
||||
}));
|
||||
|
||||
test('updateRouter action', actionTest(updateRouter, {
|
||||
transitionTo: '[Function]'
|
||||
}, {
|
||||
type: '/APP/UPDATE_ROUTER',
|
||||
payload: {
|
||||
transitionTo: '[Function]'
|
||||
}
|
||||
}));
|
@ -7,19 +7,19 @@ const {
|
||||
} = enzyme;
|
||||
|
||||
test('renders <App> without exploding', (t) => {
|
||||
const App = require('../src/containers/app');
|
||||
const App = require('@containers/app');
|
||||
const wrapper = shallow(<App />);
|
||||
t.deepEqual(wrapper.length, 1);
|
||||
});
|
||||
|
||||
test('renders <Home> without exploding', (t) => {
|
||||
const Home = require('../src/containers/home').WrappedComponent;
|
||||
const Home = require('@containers/home').WrappedComponent;
|
||||
const wrapper = shallow(<Home />);
|
||||
t.deepEqual(wrapper.length, 1);
|
||||
});
|
||||
|
||||
test('renders <NotFound> without exploding', (t) => {
|
||||
const NotFound = require('../src/containers/not-found');
|
||||
const NotFound = require('@containers/not-found');
|
||||
const wrapper = shallow(<NotFound />);
|
||||
t.deepEqual(wrapper.length, 1);
|
||||
});
|
61
frontend/test/components/projects.js
Normal file
61
frontend/test/components/projects.js
Normal file
@ -0,0 +1,61 @@
|
||||
const test = require('ava');
|
||||
const enzyme = require('enzyme');
|
||||
const React = require('react');
|
||||
|
||||
const create = require('../helpers/create');
|
||||
|
||||
const {
|
||||
render
|
||||
} = enzyme;
|
||||
|
||||
test('renders <Projects> without exploding', (t) => {
|
||||
const Projects = require('@containers/org/projects').WrappedComponent;
|
||||
const wrapper = render(create.withIntl(<Projects />));
|
||||
t.deepEqual(wrapper.length, 1);
|
||||
});
|
||||
|
||||
test('renders connected <Projects> without exploding', (t) => {
|
||||
const Projects = require('@containers/org/projects');
|
||||
const wrapper = render(create(<Projects />));
|
||||
t.deepEqual(wrapper.length, 1);
|
||||
});
|
||||
|
||||
test('renders <Projects>\'s list of projects ', (t) => {
|
||||
const projects = [{
|
||||
id: 'forest-foundation-dev',
|
||||
name: 'Forest Foundation Dev',
|
||||
plan: '20.05$ per day'
|
||||
}, {
|
||||
id: 'forest-foundation-testing',
|
||||
name: 'Forest Foundation Testing',
|
||||
plan: '20.05$ per day'
|
||||
}, {
|
||||
id: 'forest-foundation-production',
|
||||
name: 'Forest Foundation Production',
|
||||
plan: '100.17$ per day'
|
||||
}];
|
||||
|
||||
const Projects = require('@containers/org/projects').WrappedComponent;
|
||||
const wrapper = render(create.withIntl(<Projects projects={projects} />));
|
||||
|
||||
const empty = wrapper.find('p[name=empty]');
|
||||
const ul = wrapper.find('ul[name=projects]');
|
||||
const li = ul.find('li');
|
||||
|
||||
t.deepEqual(wrapper.length, 1);
|
||||
t.deepEqual(li.length, projects.length);
|
||||
t.deepEqual(empty.length, 0);
|
||||
});
|
||||
|
||||
test('renders <Projects>\'s empty <p> when no projects ', (t) => {
|
||||
const Projects = require('@containers/org/projects').WrappedComponent;
|
||||
const wrapper = render(create.withIntl(<Projects />));
|
||||
|
||||
const empty = wrapper.find('p[name=empty]');
|
||||
const ul = wrapper.find('ul[name=projects]');
|
||||
const li = ul.find('li');
|
||||
|
||||
t.deepEqual(wrapper.length, 1);
|
||||
t.deepEqual(li.length, 0);
|
||||
t.deepEqual(empty.length, 1);
|
||||
});
|
61
frontend/test/helpers/create.js
Normal file
61
frontend/test/helpers/create.js
Normal file
@ -0,0 +1,61 @@
|
||||
const React = require('react');
|
||||
const ReactRedux = require('react-redux');
|
||||
const ReactIntl = require('react-intl');
|
||||
const createStore = require('@state/store');
|
||||
|
||||
const {
|
||||
addLocaleData,
|
||||
IntlProvider
|
||||
} = ReactIntl;
|
||||
|
||||
const {
|
||||
Provider
|
||||
} = ReactRedux;
|
||||
|
||||
const Messages = {
|
||||
'en-us': require('../../locales/en-us.json'),
|
||||
'pt-pt': require('../../locales/pt-pt.json')
|
||||
};
|
||||
|
||||
const Locales = {
|
||||
'en': require('react-intl/locale-data/en'),
|
||||
'pt': require('react-intl/locale-data/pt')
|
||||
};
|
||||
|
||||
const LocalesMessages = {
|
||||
'en-us': {
|
||||
messages: Messages['en-us'],
|
||||
locale: 'en'
|
||||
},
|
||||
'pt-pt': {
|
||||
messages: Messages['pt-pt'],
|
||||
locale: 'pt'
|
||||
}
|
||||
};
|
||||
|
||||
Object.keys(Locales).forEach((lang) => {
|
||||
addLocaleData(Locales[lang] || []);
|
||||
});
|
||||
|
||||
const withRedux = (children, {
|
||||
store = createStore()
|
||||
} = {}) => (
|
||||
<Provider store={store}>
|
||||
{children}
|
||||
</Provider>
|
||||
);
|
||||
|
||||
const withIntl = (children, {
|
||||
locale = 'en-us'
|
||||
} = {}) => (
|
||||
<IntlProvider
|
||||
locale={LocalesMessages[locale].locale}
|
||||
messages={LocalesMessages[locale].messages}
|
||||
>
|
||||
{children}
|
||||
</IntlProvider>
|
||||
);
|
||||
|
||||
module.exports = (children, props) => withRedux(withIntl(children), props);
|
||||
module.exports.withRedux = withRedux;
|
||||
module.exports.withIntl = withIntl;
|
21
frontend/test/reducers/app.js
Normal file
21
frontend/test/reducers/app.js
Normal file
@ -0,0 +1,21 @@
|
||||
const ReduxAva = require('redux-ava');
|
||||
const test = require('ava');
|
||||
|
||||
const reducer = require('@state/reducers/app');
|
||||
const actions = require('@state/actions');
|
||||
|
||||
const {
|
||||
reducerTest
|
||||
} = ReduxAva;
|
||||
|
||||
const {
|
||||
updateRouter
|
||||
} = actions;
|
||||
|
||||
test('updateReducer', reducerTest(reducer, {}, updateRouter({
|
||||
transitionTo: '[Function]'
|
||||
}), {
|
||||
router: {
|
||||
transitionTo: '[Function]'
|
||||
}
|
||||
}));
|
105
frontend/test/selectors/index.js
Normal file
105
frontend/test/selectors/index.js
Normal file
@ -0,0 +1,105 @@
|
||||
const test = require('ava');
|
||||
|
||||
const selectors = require('@state/selectors');
|
||||
|
||||
const {
|
||||
accountSelector,
|
||||
orgByIdSelector
|
||||
// orgsSelector,
|
||||
// orgSectionsSelector,
|
||||
// projectsByOrgIdSelector
|
||||
} = selectors;
|
||||
|
||||
test('accountSelector with empty input', (t) => {
|
||||
t.deepEqual(accountSelector(), {});
|
||||
|
||||
t.deepEqual(accountSelector({
|
||||
account: undefined
|
||||
}), {});
|
||||
|
||||
t.deepEqual(accountSelector({
|
||||
account: {}
|
||||
}), {});
|
||||
|
||||
t.deepEqual(accountSelector({
|
||||
account: {
|
||||
data: undefined
|
||||
}
|
||||
}), {});
|
||||
|
||||
t.deepEqual(accountSelector({
|
||||
account: {
|
||||
data: {}
|
||||
}
|
||||
}), {});
|
||||
});
|
||||
|
||||
test('accountSelector with attrs', (t) => {
|
||||
t.deepEqual(accountSelector({
|
||||
account: {
|
||||
data: {
|
||||
id: '[id]',
|
||||
uuid: '[uuid]'
|
||||
}
|
||||
}
|
||||
}), {
|
||||
id: '[id]',
|
||||
uuid: '[uuid]'
|
||||
});
|
||||
});
|
||||
|
||||
test('orgByIdSelector with empty input', (t) => {
|
||||
t.deepEqual(orgByIdSelector()(), undefined);
|
||||
|
||||
t.deepEqual(orgByIdSelector()({
|
||||
orgs: undefined
|
||||
}), undefined);
|
||||
|
||||
t.deepEqual(orgByIdSelector()({
|
||||
orgs: {}
|
||||
}), undefined);
|
||||
|
||||
t.deepEqual(orgByIdSelector()({
|
||||
orgs: {
|
||||
data: undefined
|
||||
}
|
||||
}), undefined);
|
||||
|
||||
t.deepEqual(orgByIdSelector()({
|
||||
orgs: {
|
||||
data: {}
|
||||
}
|
||||
}), undefined);
|
||||
});
|
||||
|
||||
test('orgByIdSelector should find org', (t) => {
|
||||
const orgs = [{
|
||||
id: '1'
|
||||
}, {
|
||||
id: '2'
|
||||
}, {
|
||||
id: '3'
|
||||
}];
|
||||
|
||||
t.deepEqual(orgByIdSelector('1')({
|
||||
orgs: {
|
||||
data: orgs
|
||||
}
|
||||
}), {
|
||||
id: '1'
|
||||
});
|
||||
|
||||
t.deepEqual(orgByIdSelector('2')({
|
||||
orgs: {
|
||||
data: orgs
|
||||
}
|
||||
}), {
|
||||
id: '2'
|
||||
});
|
||||
|
||||
t.deepEqual(orgByIdSelector('4')({
|
||||
orgs: {
|
||||
data: orgs
|
||||
}
|
||||
}), undefined);
|
||||
});
|
35
frontend/test/thunks/app.js
Normal file
35
frontend/test/thunks/app.js
Normal file
@ -0,0 +1,35 @@
|
||||
const mock = require('simple-mock');
|
||||
const test = require('ava');
|
||||
|
||||
const thunks = require('@state/thunks');
|
||||
|
||||
const {
|
||||
transitionTo
|
||||
} = thunks;
|
||||
|
||||
test('transitionTo should dispatch', (t) => {
|
||||
const pathname = '/hello';
|
||||
|
||||
const state = {
|
||||
app: {
|
||||
router: {
|
||||
transitionTo: mock.spy((pathname) => pathname)
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const dispatch = mock.spy(({
|
||||
PAYLOAD
|
||||
}) => {
|
||||
t.deepEqual(PAYLOAD, pathname);
|
||||
});
|
||||
|
||||
const getState = () => state;
|
||||
|
||||
transitionTo(pathname)(dispatch, getState);
|
||||
|
||||
t.deepEqual(dispatch.called, true);
|
||||
t.deepEqual(dispatch.callCount, 1);
|
||||
t.deepEqual(state.app.router.transitionTo.called, true);
|
||||
t.deepEqual(state.app.router.transitionTo.callCount, 1);
|
||||
});
|
@ -1,5 +1,9 @@
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
abab@^1.0.0:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d"
|
||||
|
||||
abbrev@1:
|
||||
version "1.0.9"
|
||||
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
|
||||
@ -21,12 +25,22 @@ acorn-es7-plugin@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/acorn-es7-plugin/-/acorn-es7-plugin-1.1.3.tgz#6a032a71f1faf396a1a29729c7b150fe480cc17a"
|
||||
|
||||
acorn-globals@^1.0.4:
|
||||
version "1.0.9"
|
||||
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf"
|
||||
dependencies:
|
||||
acorn "^2.1.0"
|
||||
|
||||
acorn-jsx@^3.0.0, acorn-jsx@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
|
||||
dependencies:
|
||||
acorn "^3.0.4"
|
||||
|
||||
acorn@^2.1.0, acorn@^2.4.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
|
||||
|
||||
acorn@^3.0.4:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
|
||||
@ -134,6 +148,10 @@ array-differ@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
|
||||
|
||||
array-equal@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
|
||||
|
||||
array-find-index@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
|
||||
@ -1639,6 +1657,10 @@ content-disposition@0.5.1:
|
||||
version "0.5.1"
|
||||
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.1.tgz#87476c6a67c8daa87e32e87616df883ba7fb071b"
|
||||
|
||||
content-type-parser@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94"
|
||||
|
||||
content-type@~1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed"
|
||||
@ -1770,6 +1792,16 @@ css-what@2.1:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
|
||||
|
||||
"cssom@>= 0.3.0 < 0.4.0", cssom@0.3.x:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.1.tgz#c9e37ef2490e64f6d1baa10fda852257082c25d3"
|
||||
|
||||
"cssstyle@>= 0.2.36 < 0.3.0":
|
||||
version "0.2.37"
|
||||
resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
|
||||
dependencies:
|
||||
cssom "0.3.x"
|
||||
|
||||
currently-unhandled@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
|
||||
@ -1832,6 +1864,10 @@ deep-extend@~0.4.0:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
|
||||
|
||||
deep-freeze@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84"
|
||||
|
||||
deep-is@~0.1.3:
|
||||
version "0.1.3"
|
||||
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
||||
@ -2128,6 +2164,17 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
|
||||
escodegen@^1.6.1:
|
||||
version "1.8.1"
|
||||
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
|
||||
dependencies:
|
||||
esprima "^2.7.1"
|
||||
estraverse "^1.9.1"
|
||||
esutils "^2.0.2"
|
||||
optionator "^0.8.1"
|
||||
optionalDependencies:
|
||||
source-map "~0.2.0"
|
||||
|
||||
escope@^3.6.0:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
|
||||
@ -2227,7 +2274,7 @@ espree@^3.3.1:
|
||||
acorn "^4.0.1"
|
||||
acorn-jsx "^3.0.0"
|
||||
|
||||
esprima@^2.6.0:
|
||||
esprima@^2.6.0, esprima@^2.7.1:
|
||||
version "2.7.3"
|
||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
|
||||
|
||||
@ -2244,6 +2291,10 @@ esrecurse@^4.1.0:
|
||||
estraverse "~4.1.0"
|
||||
object-assign "^4.0.1"
|
||||
|
||||
estraverse@^1.9.1:
|
||||
version "1.9.3"
|
||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
|
||||
|
||||
estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
|
||||
@ -2791,6 +2842,12 @@ hosted-git-info@^2.1.4:
|
||||
version "2.1.5"
|
||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
|
||||
|
||||
html-encoding-sniffer@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da"
|
||||
dependencies:
|
||||
whatwg-encoding "^1.0.1"
|
||||
|
||||
htmlparser2@^3.9.1:
|
||||
version "3.9.2"
|
||||
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338"
|
||||
@ -2842,10 +2899,14 @@ hyphenate-style-name@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b"
|
||||
|
||||
iconv-lite@~0.4.13:
|
||||
iconv-lite@^0.4.13, iconv-lite@~0.4.13:
|
||||
version "0.4.15"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb"
|
||||
|
||||
iconv-lite@0.4.13:
|
||||
version "0.4.13"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2"
|
||||
|
||||
ieee754@^1.1.4:
|
||||
version "1.1.8"
|
||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
|
||||
@ -2858,6 +2919,10 @@ ignore@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.0.tgz#8d88f03c3002a0ac52114db25d2c673b0bf1e435"
|
||||
|
||||
immutable@^3.8.1:
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.1.tgz#200807f11ab0f72710ea485542de088075f68cd2"
|
||||
|
||||
imurmurhash@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
|
||||
@ -3277,6 +3342,31 @@ jsbn@~0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
|
||||
|
||||
jsdom:
|
||||
version "9.9.1"
|
||||
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.9.1.tgz#84f3972ad394ab963233af8725211bce4d01bfd5"
|
||||
dependencies:
|
||||
abab "^1.0.0"
|
||||
acorn "^2.4.0"
|
||||
acorn-globals "^1.0.4"
|
||||
array-equal "^1.0.0"
|
||||
content-type-parser "^1.0.1"
|
||||
cssom ">= 0.3.0 < 0.4.0"
|
||||
cssstyle ">= 0.2.36 < 0.3.0"
|
||||
escodegen "^1.6.1"
|
||||
html-encoding-sniffer "^1.0.1"
|
||||
iconv-lite "^0.4.13"
|
||||
nwmatcher ">= 1.3.9 < 2.0.0"
|
||||
parse5 "^1.5.1"
|
||||
request "^2.55.0"
|
||||
sax "^1.1.4"
|
||||
symbol-tree ">= 3.1.0 < 4.0.0"
|
||||
tough-cookie "^2.3.1"
|
||||
webidl-conversions "^3.0.1"
|
||||
whatwg-encoding "^1.0.1"
|
||||
whatwg-url "^4.1.0"
|
||||
xml-name-validator ">= 2.0.1 < 3.0.0"
|
||||
|
||||
jsesc@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
|
||||
@ -3451,6 +3541,10 @@ lodash.foreach@^4.3.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
|
||||
|
||||
lodash.get:
|
||||
version "4.4.2"
|
||||
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
|
||||
|
||||
lodash.isempty@^4.4.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e"
|
||||
@ -3859,6 +3953,10 @@ number-is-nan@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
||||
|
||||
"nwmatcher@>= 1.3.9 < 2.0.0":
|
||||
version "1.3.9"
|
||||
resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.9.tgz#8bab486ff7fa3dfd086656bbe8b17116d3692d2a"
|
||||
|
||||
nyc@^10.0.0:
|
||||
version "10.0.0"
|
||||
resolved "https://registry.yarnpkg.com/nyc/-/nyc-10.0.0.tgz#95bd4a2c3487f33e1e78f213c6d5a53d88074ce6"
|
||||
@ -3990,7 +4088,7 @@ option-chain@^0.1.0:
|
||||
dependencies:
|
||||
object-assign "^4.0.1"
|
||||
|
||||
optionator@^0.8.2:
|
||||
optionator@^0.8.1, optionator@^0.8.2:
|
||||
version "0.8.2"
|
||||
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
|
||||
dependencies:
|
||||
@ -4112,6 +4210,10 @@ parse-ms@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d"
|
||||
|
||||
parse5@^1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
|
||||
|
||||
parseurl@~1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56"
|
||||
@ -4626,6 +4728,13 @@ redux-actions@^1.2.0:
|
||||
lodash "^4.13.1"
|
||||
reduce-reducers "^0.1.0"
|
||||
|
||||
redux-ava:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/redux-ava/-/redux-ava-2.2.0.tgz#b93d26d725d97e7577af08cd18d9a542804ac5dc"
|
||||
dependencies:
|
||||
deep-freeze "0.0.1"
|
||||
immutable "^3.8.1"
|
||||
|
||||
redux-batched-actions@^0.1.5:
|
||||
version "0.1.5"
|
||||
resolved "https://registry.yarnpkg.com/redux-batched-actions/-/redux-batched-actions-0.1.5.tgz#b39b84775f4499a4724f3154b882968073b58bed"
|
||||
@ -4720,7 +4829,7 @@ repeating@^2.0.0:
|
||||
dependencies:
|
||||
is-finite "^1.0.0"
|
||||
|
||||
request@^2.79.0:
|
||||
request@^2.55.0, request@^2.79.0:
|
||||
version "2.79.0"
|
||||
resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
|
||||
dependencies:
|
||||
@ -4831,6 +4940,10 @@ rx-lite@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
|
||||
|
||||
sax@^1.1.4:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
|
||||
|
||||
semver-diff@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
|
||||
@ -4928,6 +5041,10 @@ signal-exit@^3.0.0, signal-exit@^3.0.1:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
||||
|
||||
simple-mock:
|
||||
version "0.7.3"
|
||||
resolved "https://registry.yarnpkg.com/simple-mock/-/simple-mock-0.7.3.tgz#461c9e6f1c339cc49a7871b390676cd064388036"
|
||||
|
||||
slash@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
|
||||
@ -4996,6 +5113,12 @@ source-map@^0.5.0, source-map@^0.5.3, source-map@~0.5.1, source-map@~0.5.3, sour
|
||||
version "0.5.6"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
|
||||
|
||||
source-map@~0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
|
||||
dependencies:
|
||||
amdefine ">=0.0.4"
|
||||
|
||||
spawn-sync@^1.0.15:
|
||||
version "1.0.15"
|
||||
resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476"
|
||||
@ -5192,6 +5315,10 @@ symbol-observable@^1.0.2:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
|
||||
|
||||
"symbol-tree@>= 3.1.0 < 4.0.0":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.1.tgz#8549dd1d01fa9f893c18cc9ab0b106b4d9b168cb"
|
||||
|
||||
symbol@^0.2.1:
|
||||
version "0.2.3"
|
||||
resolved "https://registry.yarnpkg.com/symbol/-/symbol-0.2.3.tgz#3b9873b8a901e47c6efe21526a3ac372ef28bbc7"
|
||||
@ -5315,12 +5442,16 @@ to-fast-properties@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
|
||||
|
||||
tough-cookie@~2.3.0:
|
||||
tough-cookie@^2.3.1, tough-cookie@~2.3.0:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
|
||||
dependencies:
|
||||
punycode "^1.4.1"
|
||||
|
||||
tr46@~0.0.3:
|
||||
version "0.0.3"
|
||||
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
|
||||
|
||||
traverse@^0.6.6:
|
||||
version "0.6.6"
|
||||
resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137"
|
||||
@ -5541,6 +5672,10 @@ watchpack@^1.0.0:
|
||||
chokidar "^1.4.3"
|
||||
graceful-fs "^4.1.2"
|
||||
|
||||
webidl-conversions@^3.0.0, webidl-conversions@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
|
||||
|
||||
webpack-dev-middleware@^1.4.0:
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.9.0.tgz#a1c67a3dfd8a5c5d62740aa0babe61758b4c84aa"
|
||||
@ -5615,10 +5750,23 @@ websocket-extensions@>=0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7"
|
||||
|
||||
whatwg-encoding@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4"
|
||||
dependencies:
|
||||
iconv-lite "0.4.13"
|
||||
|
||||
whatwg-fetch@>=0.10.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.1.tgz#078b9461bbe91cea73cbce8bb122a05f9e92b772"
|
||||
|
||||
whatwg-url@^4.1.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.1.1.tgz#567074923352de781e3500d64a86aa92a971b4a4"
|
||||
dependencies:
|
||||
tr46 "~0.0.3"
|
||||
webidl-conversions "^3.0.0"
|
||||
|
||||
which-module@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
|
||||
@ -5710,6 +5858,10 @@ xdg-basedir@^2.0.0:
|
||||
dependencies:
|
||||
os-homedir "^1.0.0"
|
||||
|
||||
"xml-name-validator@>= 2.0.1 < 3.0.0":
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
|
||||
|
||||
xmlbuilder@~4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.1.0.tgz#687e84d9c4145af8db438d8bec88805df66249f4"
|
||||
|
Loading…
Reference in New Issue
Block a user