feat: ui:disabled allowed in GitlabRepoPicker

Signed-off-by: Nikunj Hudka <nikunjhudka123@gmail.com>
This commit is contained in:
Nikunj Hudka
2025-02-23 23:06:59 -04:00
parent 6c840fe9c7
commit 222a014aa8
2 changed files with 78 additions and 2 deletions
@@ -31,6 +31,73 @@ describe('GitlabRepoPicker', () => {
}),
),
};
describe('GitlabRepoPicker - isDisabled', () => {
it('disables owner input when isDisabled is true', async () => {
const { getByRole } = await renderInTestApp(
<TestApiProvider apis={[[scaffolderApiRef, scaffolderApiMock]]}>
<GitlabRepoPicker
onChange={jest.fn()}
rawErrors={[]}
state={{ repoName: 'repo' }}
isDisabled
/>
</TestApiProvider>,
);
expect(getByRole('textbox')).toBeDisabled();
});
it('does not disable owner input when isDisabled is false', async () => {
const { getByRole } = await renderInTestApp(
<TestApiProvider apis={[[scaffolderApiRef, scaffolderApiMock]]}>
<GitlabRepoPicker
onChange={jest.fn()}
rawErrors={[]}
state={{ repoName: 'repo' }}
isDisabled={false}
/>
</TestApiProvider>,
);
expect(getByRole('textbox')).not.toBeDisabled();
});
it('disables select input when allowedOwners are provided and isDisabled is true', async () => {
const allowedOwners = ['owner1', 'owner2'];
const { getByRole } = await renderInTestApp(
<TestApiProvider apis={[[scaffolderApiRef, scaffolderApiMock]]}>
<GitlabRepoPicker
onChange={jest.fn()}
rawErrors={[]}
state={{ repoName: 'repo' }}
allowedOwners={allowedOwners}
isDisabled
/>
</TestApiProvider>,
);
expect(getByRole('combobox')).toBeDisabled();
});
it('does not disable select input when allowedOwners are provided and isDisabled is false', async () => {
const allowedOwners = ['owner1', 'owner2'];
const { getByRole } = await renderInTestApp(
<TestApiProvider apis={[[scaffolderApiRef, scaffolderApiMock]]}>
<GitlabRepoPicker
onChange={jest.fn()}
rawErrors={[]}
state={{ repoName: 'repo' }}
allowedOwners={allowedOwners}
isDisabled={false}
/>
</TestApiProvider>,
);
expect(getByRole('combobox')).not.toBeDisabled();
});
});
describe('owner field', () => {
it('renders a select if there is a list of allowed owners', async () => {
const allowedOwners = ['owner1', 'owner2'];
@@ -33,7 +33,14 @@ export const GitlabRepoPicker = (
accessToken?: string;
}>,
) => {
const { allowedOwners = [], state, onChange, rawErrors, accessToken } = props;
const {
allowedOwners = [],
state,
onChange,
rawErrors,
accessToken,
isDisabled,
} = props;
const [availableGroups, setAvailableGroups] = useState<
{ title: string; id: string }[]
>([]);
@@ -128,7 +135,7 @@ export const GitlabRepoPicker = (
),
})
}
disabled={allowedOwners.length === 1}
disabled={isDisabled || allowedOwners.length === 1}
selected={owner}
items={ownerItems}
/>
@@ -147,10 +154,12 @@ export const GitlabRepoPicker = (
<TextField
{...params}
label={t('fields.gitlabRepoPicker.owner.title')}
disabled={isDisabled}
required
/>
)}
freeSolo
disabled={isDisabled}
autoSelect
/>
)}