FolderActionsButton: Provisioned folder should hide "Manage Permission" folder action (#113367)

* FolderActionsButton: Hide Manage permission option when folder is git provisioned
This commit is contained in:
Yunwen Zheng
2025-11-05 08:59:26 -05:00
committed by GitHub
parent 2ccb7f618d
commit a17d5a75fe
2 changed files with 47 additions and 1 deletions
@@ -3,6 +3,7 @@ import userEvent from '@testing-library/user-event';
import { TestProvider } from 'test/helpers/TestProvider';
import { appEvents } from 'app/core/core';
import { ManagerKind } from 'app/features/apiserver/types';
import { ShowModalReactEvent } from 'app/types/events';
import { mockFolderDTO } from '../fixtures/folder.fixture';
@@ -152,4 +153,47 @@ describe('browse-dashboards FolderActionsButton', () => {
)
);
});
// Git sync related tests
it('does not render the "Manage permissions" option if folder is provisioned', async () => {
jest.spyOn(permissions, 'getFolderPermissions').mockImplementation(() => {
return {
...mockPermissions,
canViewPermissions: false,
};
});
render(<FolderActionsButton folder={{ ...mockFolder, managedBy: ManagerKind.Repo }} />);
await userEvent.click(screen.getByRole('button', { name: 'Folder actions' }));
expect(screen.queryByRole('menuitem', { name: 'Manage permissions' })).not.toBeInTheDocument();
expect(screen.getByRole('menuitem', { name: 'Delete' })).toBeInTheDocument();
});
it('does not render the "Move" option if folder is provisioned and is root repo folder', async () => {
jest.spyOn(permissions, 'getFolderPermissions').mockImplementation(() => {
return {
...mockPermissions,
canViewPermissions: false,
};
});
render(<FolderActionsButton folder={{ ...mockFolder, managedBy: ManagerKind.Repo, parentUid: undefined }} />);
await userEvent.click(screen.getByRole('button', { name: 'Folder actions' }));
expect(screen.queryByRole('menuitem', { name: 'Move' })).not.toBeInTheDocument();
expect(screen.getByRole('menuitem', { name: 'Delete' })).toBeInTheDocument();
});
it('does render the "Move" option if folder is provisioned and is NOT root repo folder', async () => {
jest.spyOn(permissions, 'getFolderPermissions').mockImplementation(() => {
return {
...mockPermissions,
canViewPermissions: false,
};
});
render(<FolderActionsButton folder={{ ...mockFolder, managedBy: ManagerKind.Repo, parentUid: '123' }} />);
await userEvent.click(screen.getByRole('button', { name: 'Folder actions' }));
expect(screen.getByRole('menuitem', { name: 'Move' })).toBeInTheDocument();
expect(screen.getByRole('menuitem', { name: 'Delete' })).toBeInTheDocument();
});
});
@@ -131,7 +131,9 @@ export function FolderActionsButton({ folder, repoType, isReadOnlyRepo }: Props)
const menu = (
<Menu>
{canViewPermissions && <MenuItem onClick={() => setShowPermissionsDrawer(true)} label={managePermissionsLabel} />}
{canViewPermissions && !isProvisionedFolder && (
<MenuItem onClick={() => setShowPermissionsDrawer(true)} label={managePermissionsLabel} />
)}
{canMoveFolder && !isReadOnlyRepo && (
<MenuItem
onClick={isProvisionedFolder ? handleShowMoveProvisionedFolderDrawer : showMoveModal}