From f21731fb3a9cd65f47c1e5ef958712e0d4c2b7ea Mon Sep 17 00:00:00 2001 From: Byron Hulcher Date: Thu, 2 Sep 2021 10:00:29 -0400 Subject: [PATCH] Support the warning state for crawler validation steps (#110864) --- .../crawler/components/add_domain/utils.ts | 4 ++- .../add_domain/validation_state_icon.test.tsx | 6 +++++ .../add_domain/validation_state_icon.tsx | 13 +++++++--- .../add_domain/validation_step_panel.test.tsx | 25 ++++++++++++++++--- .../add_domain/validation_step_panel.tsx | 6 +++-- .../app_search/components/crawler/types.ts | 2 +- .../components/crawler/utils.test.ts | 2 +- .../app_search/components/crawler/utils.ts | 2 +- 8 files changed, 48 insertions(+), 12 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/utils.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/utils.ts index fb72c1da0a6b..b0dc8418c4ca 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/utils.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/utils.ts @@ -62,10 +62,12 @@ export const getDomainWithProtocol = async (domain: string) => { export const domainValidationStateToPanelColor = ( state: CrawlerDomainValidationStepState -): 'success' | 'danger' | 'subdued' => { +): 'success' | 'warning' | 'danger' | 'subdued' => { switch (state) { case 'valid': return 'success'; + case 'warning': + return 'warning'; case 'invalid': return 'danger'; default: diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_state_icon.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_state_icon.test.tsx index 2c27e99e02ef..8bb82f93e3ec 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_state_icon.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_state_icon.test.tsx @@ -20,6 +20,12 @@ describe('ValidationStateIcon', () => { expect(wrapper.find(EuiIcon).prop('color')).toEqual('success'); }); + it('shows a warning icon when warning', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiIcon).prop('color')).toEqual('warning'); + }); + it('shows a danger icon when invalid', () => { const wrapper = shallow(); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_state_icon.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_state_icon.tsx index 0c3d5329c47b..3d85455ec7a8 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_state_icon.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_state_icon.tsx @@ -14,7 +14,14 @@ import { CrawlerDomainValidationStepState } from '../../types'; export const ValidationStateIcon: React.FC<{ state: CrawlerDomainValidationStepState }> = ({ state, }) => { - if (state === 'valid') return ; - if (state === 'invalid') return ; - return ; + switch (state) { + case 'valid': + return ; + case 'warning': + return ; + case 'invalid': + return ; + default: + return ; + } }; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_step_panel.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_step_panel.test.tsx index a02a29c9854d..c022b09d4638 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_step_panel.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_step_panel.test.tsx @@ -19,12 +19,15 @@ describe('ValidationStepPanel', () => { const wrapper = shallow( ); + it('passed the correct color to the EuiPanel', () => { expect(wrapper.find(EuiPanel).prop('color')).toEqual('success'); }); + it('contains a validation state icon', () => { expect(wrapper.find(ValidationStateIcon)).toHaveLength(1); }); + it('renders a label', () => { expect(wrapper.find('h3').text()).toEqual('Initial validation'); }); @@ -32,11 +35,12 @@ describe('ValidationStepPanel', () => { describe('invalid messages and actions', () => { const errorMessage = 'Error message'; const action =
; + it('displays the passed error message and action is invalid', () => { const wrapper = shallow( ); @@ -45,11 +49,26 @@ describe('ValidationStepPanel', () => { ); expect(wrapper.find('[data-test-subj="action"]')).toHaveLength(1); }); - it('does not display the passed error message or action when state is not invalid', () => { + + it('displays the passed error message and action when state is warning', () => { + const wrapper = shallow( + + ); + expect(wrapper.find('[data-test-subj="errorMessage"]').dive().text()).toContain( + 'Error message' + ); + expect(wrapper.find('[data-test-subj="action"]')).toHaveLength(1); + }); + + it('does not display the passed error message or action when state is loading', () => { const wrapper = shallow( ); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_step_panel.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_step_panel.tsx index 8d3faed1fbc5..804c2d86ca09 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_step_panel.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/components/add_domain/validation_step_panel.tsx @@ -25,11 +25,13 @@ export const ValidationStepPanel: React.FC = ({ label, action, }) => { + const showErrorMessage = step.state === 'invalid' || step.state === 'warning'; + return ( - + @@ -37,7 +39,7 @@ export const ValidationStepPanel: React.FC = ({ - {step.state === 'invalid' && ( + {showErrorMessage && ( <>

{step.message}

diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/types.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/types.ts index 932af7a6ac93..8cfbce6c1031 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/types.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/types.ts @@ -135,7 +135,7 @@ export interface CrawlerDomainValidationResultFromServer { }>; } -export type CrawlerDomainValidationStepState = '' | 'loading' | 'valid' | 'invalid'; +export type CrawlerDomainValidationStepState = '' | 'loading' | 'valid' | 'warning' | 'invalid'; export interface CrawlerDomainValidationStep { state: CrawlerDomainValidationStepState; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/utils.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/utils.test.ts index 1844932bac92..b679a7cc9c12 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/utils.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/utils.test.ts @@ -203,7 +203,7 @@ describe('crawlDomainValidationToResult', () => { expect(crawlDomainValidationToResult(data)).toEqual({ blockingFailure: false, - state: 'invalid', + state: 'warning', message: 'A warning, not failure', } as CrawlerDomainValidationStep); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/utils.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/utils.ts index 1f54db12a021..e44e6c0e652f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/utils.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/crawler/utils.ts @@ -99,7 +99,7 @@ export function crawlDomainValidationToResult( if (warningResult) { return { - state: 'invalid', + state: 'warning', blockingFailure: !data.valid, message: warningResult.comment, };