From 6811461a9c0f3983146989ba450d986775efee0e Mon Sep 17 00:00:00 2001 From: Chris Roberson Date: Fri, 12 Jan 2018 12:30:28 -0500 Subject: [PATCH] More tests and PR feedback --- .../__tests__/index.test.js | 31 ++++++++++++ .../components/step_index_pattern/index.js | 6 ++- .../step_index_pattern/step_index_pattern.js | 49 +++++++------------ .../create_index_pattern_wizard.js | 11 ++++- 4 files changed, 63 insertions(+), 34 deletions(-) create mode 100644 src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/components/step_index_pattern/__tests__/index.test.js diff --git a/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/components/step_index_pattern/__tests__/index.test.js b/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/components/step_index_pattern/__tests__/index.test.js new file mode 100644 index 0000000000000..64032728c2860 --- /dev/null +++ b/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/components/step_index_pattern/__tests__/index.test.js @@ -0,0 +1,31 @@ +const render = jest.fn(); +const unmountComponentAtNode = jest.fn(); + +jest.doMock('react-dom', () => ({ render, unmountComponentAtNode })); + +const { renderStepIndexPattern, destroyStepIndexPattern } = require('../index'); + +describe('StepIndexPatternRender', () => { + beforeEach(() => { + render.mockClear(); + unmountComponentAtNode.mockClear(); + }); + + it('should call render', () => { + renderStepIndexPattern( + 'reactDiv', + [], + '', + false, + {}, + () => {} + ); + + expect(render.mock.calls.length).toBe(1); + }); + + it('should call unmountComponentAtNode', () => { + destroyStepIndexPattern('reactDiv'); + expect(unmountComponentAtNode.mock.calls.length).toBe(1); + }); +}); diff --git a/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/components/step_index_pattern/index.js b/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/components/step_index_pattern/index.js index b31abec609a46..c6cd85350e458 100644 --- a/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/components/step_index_pattern/index.js +++ b/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/components/step_index_pattern/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import { render } from 'react-dom'; +import { render, unmountComponentAtNode } from 'react-dom'; import { StepIndexPattern } from './step_index_pattern'; export function renderStepIndexPattern( @@ -21,3 +21,7 @@ export function renderStepIndexPattern( document.getElementById(domElementId), ); } + +export function destroyStepIndexPattern(domElementId) { + unmountComponentAtNode(document.getElementById(domElementId)); +} diff --git a/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/components/step_index_pattern/step_index_pattern.js b/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/components/step_index_pattern/step_index_pattern.js index 973b6448de8da..25e3eba8647d1 100644 --- a/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/components/step_index_pattern/step_index_pattern.js +++ b/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/components/step_index_pattern/step_index_pattern.js @@ -83,16 +83,13 @@ export class StepIndexPattern extends Component { ); } - renderStatusMessage() { - const { allIndices, isIncludingSystemIndices } = this.props; - const { query, isLoadingIndices, partialMatchedIndices } = this.state; + renderStatusMessage(matchedIndices) { + const { query, isLoadingIndices } = this.state; if (isLoadingIndices) { return null; } - const matchedIndices = getMatchedIndices(allIndices, partialMatchedIndices, query, isIncludingSystemIndices); - return ( - {this.renderHeader()} + {this.renderHeader(matchedIndices)} - {this.renderLoadingState()} - {this.renderStatusMessage()} + {this.renderLoadingState(matchedIndices)} + {this.renderStatusMessage(matchedIndices)} - {this.renderList()} + {this.renderList(matchedIndices)} ); } diff --git a/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/create_index_pattern_wizard.js b/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/create_index_pattern_wizard.js index 1acb8f6dc37b0..c09b57d3b7e4e 100644 --- a/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/create_index_pattern_wizard.js +++ b/src/core_plugins/kibana/public/management/sections/indices/create_index_pattern_wizard/create_index_pattern_wizard.js @@ -7,7 +7,7 @@ import uiRoutes from 'ui/routes'; import { uiModules } from 'ui/modules'; import template from './create_index_pattern_wizard.html'; import { sendCreateIndexPatternRequest } from './send_create_index_pattern_request'; -import { renderStepIndexPattern } from './components/step_index_pattern'; +import { renderStepIndexPattern, destroyStepIndexPattern } from './components/step_index_pattern'; import './step_time_field'; import './matching_indices_list'; import './create_index_pattern_wizard.less'; @@ -45,6 +45,12 @@ uiModules.get('apps/management') display: `I don't want to use the Time Filter`, }; + const REACT_DOM_ELEMENT_ID = 'stepIndexPatternReact'; + + $scope.$on('$destroy', () => { + destroyStepIndexPattern(REACT_DOM_ELEMENT_ID); + }); + // Configure the new index pattern we're going to create. this.formValues = { id: $routeParams.id ? decodeURIComponent($routeParams.id) : undefined, @@ -185,12 +191,13 @@ uiModules.get('apps/management') this.renderStepIndexPatternReact = () => { $scope.$$postDigest(() => renderStepIndexPattern( - 'stepIndexPatternReact', + REACT_DOM_ELEMENT_ID, allIndices, this.formValues.name, this.doesIncludeSystemIndices, es, query => { + destroyStepIndexPattern(REACT_DOM_ELEMENT_ID); this.formValues.name = query; this.goToTimeFieldStep(); $scope.$apply();