From f0781a53940ba3942a8fe81af0d6db0e4b699c57 Mon Sep 17 00:00:00 2001 From: Benjamin Janssens Date: Fri, 7 Jun 2024 16:46:36 +0200 Subject: [PATCH] fix: make error handling work; add tests for RepoUrlPickerRepoName Signed-off-by: Benjamin Janssens --- .../RepoUrlPicker/BitbucketRepoPicker.tsx | 20 ++++--------- .../RepoUrlPickerRepoName.test.tsx | 28 +++++++++++++++++++ 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx index 3bcb94d2f6..a56e1ad9ad 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx @@ -97,11 +97,7 @@ export const BitbucketRepoPicker = (props: { } }; - try { - updateAvailableWorkspaces(); - } catch { - setAvailableWorkspaces([]); - } + updateAvailableWorkspaces().catch(() => setAvailableWorkspaces([])); }, 500, [client, host], @@ -130,11 +126,9 @@ export const BitbucketRepoPicker = (props: { } }; - try { - updateAvailableRepositories(); - } catch { - onChange({ availableRepos: [] }); - } + updateAvailableRepositories().catch(() => + onChange({ availableRepos: [] }), + ); }, 500, [client, workspace, project, onChange], @@ -161,11 +155,7 @@ export const BitbucketRepoPicker = (props: { } }; - try { - updateAvailableProjects(); - } catch { - setAvailableProjects([]); - } + updateAvailableProjects().catch(() => setAvailableProjects([])); }, 500, [client, workspace], diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.test.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.test.tsx index 4c392d646c..8228f443df 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.test.tsx +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.test.tsx @@ -16,6 +16,7 @@ import React from 'react'; import { RepoUrlPickerRepoName } from './RepoUrlPickerRepoName'; import { render, fireEvent } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; describe('RepoUrlPickerRepoName', () => { it('should call onChange with the first allowed repo if there is none set already', async () => { @@ -73,4 +74,31 @@ describe('RepoUrlPickerRepoName', () => { expect(onChange).toHaveBeenCalledWith('foo'); }); + + it('should autocomplete with provided availableRepos', async () => { + const availableRepos = ['foo', 'bar']; + + const onChange = jest.fn(); + + const { getByRole, getByText } = render( + , + ); + + // Open the Autocomplete dropdown + const input = getByRole('textbox'); + await userEvent.click(input); + + // Verify that available repos are shown + for (const repo of availableRepos) { + expect(getByText(repo)).toBeInTheDocument(); + } + + // Verify that selecting an option calls onChange + await userEvent.click(getByText('foo')); + expect(onChange).toHaveBeenCalledWith('foo'); + }); });