diff --git a/Composer/packages/client/__tests__/pages/botProjectsSettings/AdapterSettings.test.tsx b/Composer/packages/client/__tests__/pages/botProjectsSettings/AdapterSettings.test.tsx index e91d6792c9..7d5d49ccd2 100644 --- a/Composer/packages/client/__tests__/pages/botProjectsSettings/AdapterSettings.test.tsx +++ b/Composer/packages/client/__tests__/pages/botProjectsSettings/AdapterSettings.test.tsx @@ -41,6 +41,7 @@ const mockSchemas = { default: 'Adapter.Full.Type.Mock', }, }, + required: ['exampleName'], }, }, }, @@ -150,6 +151,21 @@ describe('ExternalAdapterSettings', () => { }); }); + it('does not proceed if required settings are missing', async () => { + const { getByTestId } = renderWithRecoilAndCustomDispatchers( + , + initRecoilState + ); + const container = getByTestId('adapterSettings'); + const configureButton = within(container).queryAllByText('Configure')[0]; + act(() => { + fireEvent.click(configureButton); + }); + + const modal = getByTestId('adapterModal'); + expect(within(modal).getByText('Configure')).toBeDisabled(); + }); + it('disables an adapter', async () => { const initStateWithAdapter = { runtimeSettings: { diff --git a/Composer/packages/client/src/pages/botProject/adapters/ExternalAdapterModal.tsx b/Composer/packages/client/src/pages/botProject/adapters/ExternalAdapterModal.tsx index eb6f29038f..c89904735c 100644 --- a/Composer/packages/client/src/pages/botProject/adapters/ExternalAdapterModal.tsx +++ b/Composer/packages/client/src/pages/botProject/adapters/ExternalAdapterModal.tsx @@ -34,7 +34,7 @@ type Props = { export function hasRequired(testObject: { [key: string]: JSONSchema7Type | undefined }, fields?: string[]) { if (fields == null || fields.length === 0) return true; - return fields.every((field: string) => field in testObject); + return fields.every((field: string) => field in testObject && testObject[field] != null); } function makeDefault(schema: JSONSchema7) {