From 22e7011a2f288d9193758ff70d58b687f124080a Mon Sep 17 00:00:00 2001 From: Joe Farro Date: Sat, 16 Dec 2017 04:19:00 -0500 Subject: [PATCH 1/2] Upgrade to react 16 Signed-off-by: Joe Farro Signed-off-by: vvvprabhakar --- package.json | 9 +- .../TraceResultsScatterPlot.test.js | 3 +- src/components/SearchTracePage/index.test.js | 3 +- .../ListView/__snapshots__/index.test.js.snap | 615 ++---------------- .../ListView/index.test.js | 26 +- .../TraceTimelineViewer/SpanBarRow.test.js | 2 +- .../TimelineColumnResizer.test.js | 1 + .../TraceTimelineViewer/index.test.js | 1 + src/components/TracePage/index.test.js | 31 +- src/setupTests.js | 27 + src/utils/test/requestAnimationFrame.js | 11 +- yarn.lock | 228 ++++--- 12 files changed, 311 insertions(+), 646 deletions(-) create mode 100644 src/setupTests.js diff --git a/package.json b/package.json index cfd60ca420..291b589f5e 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,9 @@ "devDependencies": { "babel-eslint": "^7.2.3", "bluebird": "^3.5.0", - "enzyme": "^2.9.1", + "enzyme": "^3.2.0", + "enzyme-adapter-react-16": "^1.1.0", + "enzyme-to-json": "^3.3.0", "eslint": "^4.5.0", "eslint-config-airbnb": "^15.1.0", "eslint-config-prettier": "^2.3.0", @@ -46,10 +48,10 @@ "moment": "^2.18.1", "prop-types": "^15.5.10", "query-string": "^5.0.0", - "react": "^15.6.1", + "react": "^16.0.0", "react-addons-perf": "^15.4.2", "react-dimensions": "^1.3.0", - "react-dom": "^15.6.1", + "react-dom": "^16.0.0", "react-ga": "^2.2.0", "react-helmet": "^5.1.3", "react-metrics": "^2.3.2", @@ -89,6 +91,7 @@ "collectCoverageFrom": [ "src/**/*.js", "!src/utils/DraggableManager/demo/*.js", + "!src/utils/test/**/*.js", "!src/demo/**/*.js" ] }, diff --git a/src/components/SearchTracePage/TraceResultsScatterPlot.test.js b/src/components/SearchTracePage/TraceResultsScatterPlot.test.js index fccbb0577d..0727379433 100644 --- a/src/components/SearchTracePage/TraceResultsScatterPlot.test.js +++ b/src/components/SearchTracePage/TraceResultsScatterPlot.test.js @@ -26,7 +26,8 @@ it(' should render base case correctly', () => { { x: Date.now() - 1000, y: 2, traceID: 2 }, { x: Date.now(), y: 3, traceID: 3 }, ]} - /> + />, + { disableLifecycleMethods: true } ); expect(wrapper).toBeTruthy(); }); diff --git a/src/components/SearchTracePage/index.test.js b/src/components/SearchTracePage/index.test.js index dd46bcfbb3..c72b14750b 100644 --- a/src/components/SearchTracePage/index.test.js +++ b/src/components/SearchTracePage/index.test.js @@ -65,11 +65,12 @@ describe('', () => { }); it('searches for traces if `service` or `traceID` are in the query string', () => { - wrapper = mount(); expect(props.searchTraces.mock.calls.length).toBe(1); }); it('loads the services and operations if a service is stored', () => { + props.fetchServices.mockClear(); + props.fetchServiceOperations.mockClear(); const oldFn = store.get; store.get = jest.fn(() => ({ service: 'svc-b' })); wrapper = mount(); diff --git a/src/components/TracePage/TraceTimelineViewer/ListView/__snapshots__/index.test.js.snap b/src/components/TracePage/TraceTimelineViewer/ListView/__snapshots__/index.test.js.snap index 56ae07eb58..baf54ebe67 100644 --- a/src/components/TracePage/TraceTimelineViewer/ListView/__snapshots__/index.test.js.snap +++ b/src/components/TracePage/TraceTimelineViewer/ListView/__snapshots__/index.test.js.snap @@ -1,578 +1,101 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[` shallow tests matches a snapshot 1`] = ` -ShallowWrapper { - "complexSelector": ComplexSelector { - "buildPredicate": [Function], - "childrenOfNode": [Function], - "findWhereUnwrapped": [Function], - }, - "length": 1, - "node":
+
-
- - 0 - - - 1 - - - 2 - - - 3 - - + - 4 - -
-
-
, - "nodes": Array [ -
-
+ 1 + + -
- - 0 - - - 1 - - - 2 - - - 3 - - - 4 - -
-
-
, - ], - "options": Object {}, - "renderer": ReactShallowRenderer { - "_instance": ShallowComponentWrapper { - "_calledComponentWillUnmount": false, - "_compositeType": 0, - "_context": Object {}, - "_currentElement": , - "_debugID": 3, - "_hostContainerInfo": null, - "_hostParent": null, - "_instance": ListView { - "_endIndex": 0, - "_endIndexDrawn": 4, - "_getHeight": [Function], - "_htmlElm": - - - , - "_htmlTopOffset": -1, - "_initItemHolder": [Function], - "_initWrapper": [Function], - "_isScrolledOrResized": false, - "_itemHolderElm": undefined, - "_knownHeights": Map {}, - "_onScroll": [Function], - "_positionList": [Function], - "_reactInternalInstance": [Circular], - "_scanItemHeights": [Function], - "_scrollTop": -1, - "_startIndex": 0, - "_startIndexDrawn": 0, - "_viewHeight": -1, - "_windowScrollListenerAdded": false, - "_wrapperElm": undefined, - "_yPositions": Positions { - "bufferLen": 200, - "dataLen": 40, - "heights": Array [ - 2, - 4, - 6, - 8, - 10, - 12, - 14, - 16, - 18, - 20, - 22, - 24, - 26, - 28, - 30, - 32, - 34, - 36, - 38, - 40, - 42, - 44, - 46, - 48, - 50, - 52, - 54, - 56, - 58, - 60, - 62, - 64, - 66, - 68, - 70, - 72, - 74, - 76, - 78, - 80, - ], - "lastI": 39, - "ys": Array [ - 0, - 2, - 6, - 12, - 20, - 30, - 42, - 56, - 72, - 90, - 110, - 132, - 156, - 182, - 210, - 240, - 272, - 306, - 342, - 380, - 420, - 462, - 506, - 552, - 600, - 650, - 702, - 756, - 812, - 870, - 930, - 992, - 1056, - 1122, - 1190, - 1260, - 1332, - 1406, - 1482, - 1560, - 1640, - ], - }, - "context": Object {}, - "getBottomVisibleIndex": [Function], - "getRowPosition": [Function], - "getTopVisibleIndex": [Function], - "getViewHeight": [Function], - "props": Object { - "dataLength": 40, - "getIndexFromKey": [Function], - "getKeyFromIndex": [Function], - "initialDraw": 5, - "itemHeightGetter": [Function], - "itemRenderer": [Function], - "itemsWrapperClassName": "SomeClassName", - "viewBuffer": 10, - "viewBufferMin": 5, - "windowScroller": false, - }, - "refs": Object {}, - "state": null, - "updater": Object { - "enqueueCallback": [Function], - "enqueueCallbackInternal": [Function], - "enqueueElementInternal": [Function], - "enqueueForceUpdate": [Function], - "enqueueReplaceState": [Function], - "enqueueSetState": [Function], - "isMounted": [Function], - "validateCallback": [Function], - }, - }, - "_mountOrder": 2, - "_pendingCallbacks": null, - "_pendingElement": null, - "_pendingForceUpdate": false, - "_pendingReplaceState": false, - "_pendingStateQueue": null, - "_renderedComponent": NoopInternalComponent { - "_currentElement":
+ -
-
- - 0 - - - 1 - - - 2 - - - 3 - - - 4 - -
-
-
, - "_debugID": 4, - "_renderedOutput":
+ 3 + + -
-
- - 0 - - - 1 - - - 2 - - - 3 - - - 4 - -
-
-
, - }, - "_renderedNodeType": 0, - "_rootNodeID": 0, - "_topLevelWrapper": null, - "_updateBatchNumber": null, - "_warnedAboutRefsInRender": false, - }, - "getRenderOutput": [Function], - "render": [Function], - }, - "root": [Circular], - "unrendered": , -} + } + > + 4 + +
+ + `; diff --git a/src/components/TracePage/TraceTimelineViewer/ListView/index.test.js b/src/components/TracePage/TraceTimelineViewer/ListView/index.test.js index 3b9cc9e221..6db03eac4d 100644 --- a/src/components/TracePage/TraceTimelineViewer/ListView/index.test.js +++ b/src/components/TracePage/TraceTimelineViewer/ListView/index.test.js @@ -19,6 +19,21 @@ import { mount, shallow } from 'enzyme'; import ListView from './index'; import { polyfill as polyfillAnimationFrame } from '../../../../utils/test/requestAnimationFrame'; +// Util to get list of all callbacks added to an event emitter by event type. +// jest adds "error" event listeners to window, this util makes it easier to +// ignore those calls. +function getListenersByType(mockFn) { + const rv = {}; + mockFn.calls.forEach(([eventType, callback]) => { + if (!rv[eventType]) { + rv[eventType] = [callback]; + } else { + rv[eventType].push(callback); + } + }); + return rv; +} + describe('', () => { // polyfill window.requestAnimationFrame (and cancel) into jsDom's window polyfillAnimationFrame(window); @@ -177,14 +192,17 @@ describe('', () => { }); it('adds the onScroll listener to the window element after the component mounts', () => { - expect(windowAddListenerSpy).toHaveBeenCalled(); - expect(windowAddListenerSpy).toHaveBeenLastCalledWith('scroll', instance._onScroll); + const eventListeners = getListenersByType(windowAddListenerSpy.mock); + expect(eventListeners.scroll).toEqual([instance._onScroll]); }); it('removes the onScroll listener from window when unmounting', () => { - expect(windowRmListenerSpy.mock.calls).toEqual([]); + // jest adds "error" event listeners to window, ignore those calls + let eventListeners = getListenersByType(windowRmListenerSpy.mock); + expect(eventListeners.scroll).not.toBeDefined(); wrapper.unmount(); - expect(windowRmListenerSpy.mock.calls).toEqual([['scroll', instance._onScroll]]); + eventListeners = getListenersByType(windowRmListenerSpy.mock); + expect(eventListeners.scroll).toEqual([instance._onScroll]); }); it('calls _positionList when the document is scrolled', async () => { diff --git a/src/components/TracePage/TraceTimelineViewer/SpanBarRow.test.js b/src/components/TracePage/TraceTimelineViewer/SpanBarRow.test.js index f7c2f33bdf..8210089499 100644 --- a/src/components/TracePage/TraceTimelineViewer/SpanBarRow.test.js +++ b/src/components/TracePage/TraceTimelineViewer/SpanBarRow.test.js @@ -62,7 +62,7 @@ describe('', () => { it('escalates detail toggling', () => { const { onDetailToggled } = props; expect(onDetailToggled.mock.calls.length).toBe(0); - wrapper.find('.span-view').prop('onClick')(); + wrapper.find('div.span-view').prop('onClick')(); expect(onDetailToggled.mock.calls).toEqual([[spanID]]); }); diff --git a/src/components/TracePage/TraceTimelineViewer/TimelineHeaderRow/TimelineColumnResizer.test.js b/src/components/TracePage/TraceTimelineViewer/TimelineHeaderRow/TimelineColumnResizer.test.js index 9be5a81769..e09a223a38 100644 --- a/src/components/TracePage/TraceTimelineViewer/TimelineHeaderRow/TimelineColumnResizer.test.js +++ b/src/components/TracePage/TraceTimelineViewer/TimelineHeaderRow/TimelineColumnResizer.test.js @@ -93,6 +93,7 @@ describe('', () => { instance._dragManager.isDragging = () => true; instance._handleDragUpdate({ value: props.min }); instance.forceUpdate(); + wrapper.update(); expect(wrapper.find('.isDraggingLeft').length + wrapper.find('.isDraggingRight').length).toBe(1); expect(wrapper.find('.TimelineColumnResizer--dragger').prop('style').right).toBeDefined(); }); diff --git a/src/components/TracePage/TraceTimelineViewer/index.test.js b/src/components/TracePage/TraceTimelineViewer/index.test.js index 6046330ab3..a0a3ebd8a7 100644 --- a/src/components/TracePage/TraceTimelineViewer/index.test.js +++ b/src/components/TracePage/TraceTimelineViewer/index.test.js @@ -36,6 +36,7 @@ describe('', () => { getState() { return { traceTimeline: { spanNameColumnWidth: 0.25 } }; }, + subscribe() {}, }, }, }; diff --git a/src/components/TracePage/index.test.js b/src/components/TracePage/index.test.js index 5236756949..b4a4e2d357 100644 --- a/src/components/TracePage/index.test.js +++ b/src/components/TracePage/index.test.js @@ -211,26 +211,35 @@ describe('', () => { let spanGraph; let timeline; + function refreshWrappers() { + header = wrapper.find(TracePageHeader); + spanGraph = wrapper.find(SpanGraph); + timeline = wrapper.find(TraceTimelineViewer); + } + beforeEach(() => { wrapper = mount(); // use the method directly because it is a `ref` prop wrapper.instance().setHeaderHeight({ clientHeight: 1 }); - header = wrapper.find(TracePageHeader); - spanGraph = wrapper.find(SpanGraph); - timeline = wrapper.find(TraceTimelineViewer); + wrapper.update(); + refreshWrappers(); }); it('propagates headerHeight changes', () => { const h = 100; - const section = wrapper.find('section[style]'); const { setHeaderHeight } = wrapper.instance(); // use the method directly because it is a `ref` prop setHeaderHeight({ clientHeight: h }); + wrapper.update(); + let sections = wrapper.find('section'); + expect(sections.length).toBe(2); + const section = sections.at(1); expect(section.prop('style')).toEqual({ paddingTop: h }); expect(section.containsMatchingElement()).toBe(true); setHeaderHeight(null); - expect(section.prop('style')).not.toBeDefined(); - expect(section.containsMatchingElement()).toBe(false); + wrapper.update(); + sections = wrapper.find('section'); + expect(sections.length).toBe(1); }); it('propagates textFilter changes', () => { @@ -238,6 +247,8 @@ describe('', () => { const { updateTextFilter } = header.props(); expect(header.prop('textFilter')).toBe(''); updateTextFilter(s); + wrapper.update(); + refreshWrappers(); expect(header.prop('textFilter')).toBe(s); expect(timeline.prop('textFilter')).toBe(s); }); @@ -247,8 +258,10 @@ describe('', () => { expect(header.prop('slimView')).toBe(false); expect(spanGraph.type()).toBeDefined(); onSlimViewClicked(true); + wrapper.update(); + refreshWrappers(); expect(header.prop('slimView')).toBe(true); - expect(spanGraph.type()).not.toBeDefined(); + expect(spanGraph.length).toBe(0); }); it('propagates viewRange changes', () => { @@ -261,10 +274,14 @@ describe('', () => { expect(spanGraph.prop('viewRange')).toEqual(viewRange); expect(timeline.prop('viewRange')).toEqual(viewRange); updateNextViewRangeTime({ cursor }); + wrapper.update(); + refreshWrappers(); viewRange.time.cursor = cursor; expect(spanGraph.prop('viewRange')).toEqual(viewRange); expect(timeline.prop('viewRange')).toEqual(viewRange); updateViewRangeTime(...current); + wrapper.update(); + refreshWrappers(); viewRange.time = { current }; expect(spanGraph.prop('viewRange')).toEqual(viewRange); expect(timeline.prop('viewRange')).toEqual(viewRange); diff --git a/src/setupTests.js b/src/setupTests.js new file mode 100644 index 0000000000..03e035d9b4 --- /dev/null +++ b/src/setupTests.js @@ -0,0 +1,27 @@ +// Copyright (c) 2017 Uber Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// NOTE: This must be above the enzyme related code below, and the enzyme +// related imports MUST use `require` +import { polyfill as rafPolyfill } from './utils/test/requestAnimationFrame'; +// react requires requestAnimationFrame polyfill when using jsdom +rafPolyfill(); + +/* eslint-disable import/no-extraneous-dependencies */ +const Enzyme = require('enzyme'); +const EnzymeAdapter = require('enzyme-adapter-react-16'); +const createSerializer = require('enzyme-to-json').createSerializer; + +Enzyme.configure({ adapter: new EnzymeAdapter() }); +expect.addSnapshotSerializer(createSerializer({ mode: 'deep' })); diff --git a/src/utils/test/requestAnimationFrame.js b/src/utils/test/requestAnimationFrame.js index 90686d504b..f1087661c2 100644 --- a/src/utils/test/requestAnimationFrame.js +++ b/src/utils/test/requestAnimationFrame.js @@ -23,17 +23,18 @@ export function cancelAnimationFrame(id) { } export function polyfill(target, msElapse = DEFAULT_ELAPSE) { - if (!target.requestAnimationFrame) { + const _target = target || global; + if (!_target.requestAnimationFrame) { if (msElapse === DEFAULT_ELAPSE) { // eslint-disable-next-line no-param-reassign - target.requestAnimationFrame = requestAnimationFrame; + _target.requestAnimationFrame = requestAnimationFrame; } else { // eslint-disable-next-line no-param-reassign, no-shadow - target.requestAnimationFrame = callback => setTimeout(callback, msElapse); + _target.requestAnimationFrame = callback => setTimeout(callback, msElapse); } } - if (!target.cancelAnimationFrame) { + if (!_target.cancelAnimationFrame) { // eslint-disable-next-line no-param-reassign - target.cancelAnimationFrame = cancelAnimationFrame; + _target.cancelAnimationFrame = cancelAnimationFrame; } } diff --git a/yarn.lock b/yarn.lock index 74f4a92bd9..9112b7c16f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,10 @@ # yarn lockfile v1 +"@types/node@*": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.1.tgz#4ec3020bcdfe2abffeef9ba3fbf26fca097514b5" + abab@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" @@ -1417,26 +1421,16 @@ change-emitter@^0.1.2: version "0.1.6" resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" -cheerio@^0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" +cheerio@^1.0.0-rc.2: + version "1.0.0-rc.2" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" dependencies: css-select "~1.2.0" dom-serializer "~0.1.0" entities "~1.1.1" htmlparser2 "^3.9.1" - lodash.assignin "^4.0.9" - lodash.bind "^4.1.4" - lodash.defaults "^4.0.1" - lodash.filter "^4.4.0" - lodash.flatten "^4.2.0" - lodash.foreach "^4.3.0" - lodash.map "^4.4.0" - lodash.merge "^4.4.0" - lodash.pick "^4.2.1" - lodash.reduce "^4.4.0" - lodash.reject "^4.4.0" - lodash.some "^4.4.0" + lodash "^4.15.0" + parse5 "^3.0.1" chokidar@^1.6.0, chokidar@^1.7.0: version "1.7.0" @@ -1581,6 +1575,10 @@ colormin@^1.0.5: css-color-names "0.0.4" has "^1.0.1" +colors@0.5.x: + version "0.5.1" + resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774" + colors@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" @@ -1763,7 +1761,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-class@^15.5.2, create-react-class@^15.6.0: +create-react-class@^15.5.2: version "15.6.0" resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.0.tgz#ab448497c26566e1e29413e883207d57cfe7bed4" dependencies: @@ -2195,6 +2193,10 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +discontinuous-range@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" + dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" @@ -2378,20 +2380,46 @@ entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" -enzyme@^2.9.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.9.1.tgz#07d5ce691241240fb817bf2c4b18d6e530240df6" +enzyme-adapter-react-16@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.0.tgz#86c5db7c10f0be6ec25d54ca41b59f2abb397cf4" + dependencies: + enzyme-adapter-utils "^1.1.0" + lodash "^4.17.4" + object.assign "^4.0.4" + object.values "^1.0.4" + prop-types "^15.5.10" + react-test-renderer "^16.0.0-0" + +enzyme-adapter-utils@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.2.0.tgz#7f4471ee0a70b91169ec8860d2bf0a6b551664b2" + dependencies: + lodash "^4.17.4" + object.assign "^4.0.4" + prop-types "^15.5.10" + +enzyme-to-json@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/enzyme-to-json/-/enzyme-to-json-3.3.0.tgz#553e23a09ffb4b0cf09287e2edf9c6539fddaa84" + dependencies: + lodash "^4.17.4" + +enzyme@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.2.0.tgz#998bdcda0fc71b8764a0017f7cc692c943f54a7a" dependencies: - cheerio "^0.22.0" - function.prototype.name "^1.0.0" + cheerio "^1.0.0-rc.2" + function.prototype.name "^1.0.3" + has "^1.0.1" is-subset "^0.1.1" lodash "^4.17.4" object-is "^1.0.1" object.assign "^4.0.4" object.entries "^1.0.4" object.values "^1.0.4" - prop-types "^15.5.10" - uuid "^3.0.1" + raf "^3.4.0" + rst-selector-parser "^2.2.3" errno@^0.1.3, errno@^0.1.4: version "0.1.4" @@ -2962,6 +2990,18 @@ fbjs@^0.8.1, fbjs@^0.8.4, fbjs@^0.8.9: setimmediate "^1.0.5" ua-parser-js "^0.7.9" +fbjs@^0.8.16: + version "0.8.16" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.9" + figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -3165,7 +3205,7 @@ function-bind@^1.0.2, function-bind@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" -function.prototype.name@^1.0.0: +function.prototype.name@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.0.3.tgz#0099ae5572e9dd6f03c97d023fd92bcc5e639eac" dependencies: @@ -4750,14 +4790,6 @@ lodash._reinterpolate@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" -lodash.assignin@^4.0.9: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" - -lodash.bind@^4.1.4: - version "4.2.1" - resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" - lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -4774,21 +4806,13 @@ lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" -lodash.defaults@^4.0.1, lodash.defaults@^4.2.0: +lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" -lodash.filter@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" - -lodash.flatten@^4.2.0: +lodash.flattendeep@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - -lodash.foreach@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" + resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" lodash.isarguments@^3.0.0: version "3.1.0" @@ -4813,34 +4837,14 @@ lodash.keysin@^3.0.0: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" -lodash.map@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" - lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" -lodash.merge@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" - -lodash.pick@^4.2.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" - -lodash.reduce@^4.4.0, lodash.reduce@^4.6.0: +lodash.reduce@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" -lodash.reject@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" - -lodash.some@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" - lodash.template@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" @@ -5123,6 +5127,14 @@ ncname@1.0.x: dependencies: xml-char-classes "^1.0.0" +nearley@^2.7.10: + version "2.11.0" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.11.0.tgz#5e626c79a6cd2f6ab9e7e5d5805e7668967757ae" + dependencies: + nomnom "~1.6.2" + railroad-diagrams "^1.0.0" + randexp "^0.4.2" + negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" @@ -5212,6 +5224,13 @@ node-status-codes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" +nomnom@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.6.2.tgz#84a66a260174408fc5b77a18f888eccc44fb6971" + dependencies: + colors "0.5.x" + underscore "~1.4.4" + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -5534,6 +5553,12 @@ parse5@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" +parse5@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" + dependencies: + "@types/node" "*" + parseurl@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" @@ -6022,6 +6047,14 @@ prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.8, fbjs "^0.8.9" loose-envify "^1.3.1" +prop-types@^15.6.0: + version "15.6.0" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" + dependencies: + fbjs "^0.8.16" + loose-envify "^1.3.1" + object-assign "^4.1.1" + proxy-addr@~1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918" @@ -6104,6 +6137,23 @@ raf@^3.1.0: dependencies: performance-now "^2.1.0" +raf@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.0.tgz#a28876881b4bc2ca9117d4138163ddb80f781575" + dependencies: + performance-now "^2.1.0" + +railroad-diagrams@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" + +randexp@^0.4.2: + version "0.4.6" + resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" + dependencies: + discontinuous-range "1.0.0" + ret "~0.1.10" + randomatic@^1.1.3: version "1.1.7" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" @@ -6167,14 +6217,14 @@ react-dimensions@^1.3.0: dependencies: element-resize-event "^2.0.4" -react-dom@^15.6.1: - version "15.6.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.1.tgz#2cb0ed4191038e53c209eb3a79a23e2a4cf99470" +react-dom@^16.0.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.2.0.tgz#69003178601c0ca19b709b33a83369fe6124c044" dependencies: - fbjs "^0.8.9" + fbjs "^0.8.16" loose-envify "^1.1.0" - object-assign "^4.1.0" - prop-types "^15.5.10" + object-assign "^4.1.1" + prop-types "^15.6.0" react-error-overlay@^1.0.10: version "1.0.10" @@ -6321,6 +6371,14 @@ react-test-renderer@^15.5.4, react-test-renderer@^15.6.1: fbjs "^0.8.9" object-assign "^4.1.0" +react-test-renderer@^16.0.0-0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.2.0.tgz#bddf259a6b8fcd8555f012afc8eacc238872a211" + dependencies: + fbjs "^0.8.16" + object-assign "^4.1.1" + prop-types "^15.6.0" + react-vis-force@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/react-vis-force/-/react-vis-force-0.3.1.tgz#c7bc96a4e872409f5d4c0fa93fe89c94554d47b7" @@ -6352,15 +6410,14 @@ react-vis@^1.7.2: react-motion "^0.4.8" react-test-renderer "^15.5.4" -react@^15.6.1: - version "15.6.1" - resolved "https://registry.yarnpkg.com/react/-/react-15.6.1.tgz#baa8434ec6780bde997cdc380b79cd33b96393df" +react@^16.0.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.2.0.tgz#a31bd2dab89bff65d42134fa187f24d054c273ba" dependencies: - create-react-class "^15.6.0" - fbjs "^0.8.9" + fbjs "^0.8.16" loose-envify "^1.1.0" - object-assign "^4.1.0" - prop-types "^15.5.10" + object-assign "^4.1.1" + prop-types "^15.6.0" read-all-stream@^3.0.0: version "3.1.0" @@ -6716,6 +6773,10 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" @@ -6735,6 +6796,13 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^2.0.0" inherits "^2.0.1" +rst-selector-parser@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" + dependencies: + lodash.flattendeep "^4.4.0" + nearley "^2.7.10" + run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" @@ -7473,6 +7541,10 @@ uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" +underscore@~1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" + uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -7580,7 +7652,7 @@ uuid@^2.0.1, uuid@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" -uuid@^3.0.0, uuid@^3.0.1: +uuid@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" From 95b473313677b9812a3a49f8cf3b1852b2f88b62 Mon Sep 17 00:00:00 2001 From: Joe Farro Date: Tue, 19 Dec 2017 11:33:47 -0500 Subject: [PATCH 2/2] Fix test broken from merging in master Signed-off-by: Joe Farro Signed-off-by: vvvprabhakar --- src/reducers/services.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/reducers/services.test.js b/src/reducers/services.test.js index 92e8c37eb4..deb1f1073f 100644 --- a/src/reducers/services.test.js +++ b/src/reducers/services.test.js @@ -72,10 +72,10 @@ it('should handle a failed services fetch', () => { payload: error, }); expect(state).toEqual({ + error, services: [], operationsForService: {}, loading: false, - error: error.message, }); });