feat: adds multiLanguageSurveys and accessControl license features (#6331)

This commit is contained in:
Piyush Gupta
2025-08-06 20:05:28 +05:30
committed by GitHub
parent 282b3e070c
commit f239ee9697
39 changed files with 279 additions and 204 deletions
@@ -169,7 +169,7 @@ describe("CreateProjectModal", () => {
open: true,
setOpen: vi.fn(),
organizationId: "org-123",
canDoRoleManagement: true,
isAccessControlAllowed: true,
};
beforeEach(() => {
@@ -214,7 +214,7 @@ describe("CreateProjectModal", () => {
});
});
test("shows team selection when canDoRoleManagement is true and teams exist", async () => {
test("shows team selection when isAccessControlAllowed is true and teams exist", async () => {
render(<CreateProjectModal {...defaultProps} />);
await waitFor(() => {
@@ -230,8 +230,8 @@ describe("CreateProjectModal", () => {
expect(options[1]).toHaveTextContent("Marketing Team");
});
test("hides team selection when canDoRoleManagement is false", async () => {
render(<CreateProjectModal {...defaultProps} canDoRoleManagement={false} />);
test("hides team selection when isAccessControlAllowed is false", async () => {
render(<CreateProjectModal {...defaultProps} isAccessControlAllowed={false} />);
await waitFor(() => {
expect(screen.queryByTestId("multi-select")).not.toBeInTheDocument();
@@ -44,14 +44,14 @@ interface CreateProjectModalProps {
open: boolean;
setOpen: (open: boolean) => void;
organizationId: string;
canDoRoleManagement: boolean;
isAccessControlAllowed: boolean;
}
export const CreateProjectModal = ({
open,
setOpen,
organizationId,
canDoRoleManagement,
isAccessControlAllowed,
}: CreateProjectModalProps) => {
const { t } = useTranslate();
const router = useRouter();
@@ -144,7 +144,7 @@ export const CreateProjectModal = ({
)}
/>
{canDoRoleManagement && organizationTeams.length > 0 && (
{isAccessControlAllowed && organizationTeams.length > 0 && (
<FormField
control={form.control}
name="teamIds"
@@ -51,7 +51,7 @@ vi.mock("@/modules/projects/components/project-limit-modal", () => ({
}));
vi.mock("@/modules/projects/components/create-project-modal", () => ({
CreateProjectModal: ({ open, setOpen, organizationId, organizationTeams, canDoRoleManagement }: any) =>
CreateProjectModal: ({ open, setOpen, organizationId, organizationTeams, isAccessControlAllowed }: any) =>
open ? (
<div data-testid="create-project-modal">
<button onClick={() => setOpen(false)} data-testid="close-create-modal">
@@ -59,7 +59,7 @@ vi.mock("@/modules/projects/components/create-project-modal", () => ({
</button>
<div data-testid="modal-organization-id">{organizationId}</div>
<div data-testid="modal-organization-teams">{organizationTeams?.length || 0}</div>
<div data-testid="modal-can-do-role-management">{canDoRoleManagement.toString()}</div>
<div data-testid="modal-is-access-control-allowed">{isAccessControlAllowed.toString()}</div>
</div>
) : null,
}));
@@ -104,7 +104,7 @@ describe("ProjectSwitcher", () => {
environmentId: "env1",
isOwnerOrManager: true,
organizationTeams: mockOrganizationTeams,
canDoRoleManagement: true,
isAccessControlAllowed: true,
};
test("renders dropdown and project name", () => {
@@ -149,7 +149,7 @@ describe("ProjectSwitcher", () => {
await userEvent.click(addButton);
expect(screen.getByTestId("create-project-modal")).toBeInTheDocument();
expect(screen.getByTestId("modal-organization-id")).toHaveTextContent("org1");
expect(screen.getByTestId("modal-can-do-role-management")).toHaveTextContent("true");
expect(screen.getByTestId("modal-is-access-control-allowed")).toHaveTextContent("true");
});
test("closes CreateProjectModal when close button is clicked", async () => {
@@ -162,9 +162,9 @@ describe("ProjectSwitcher", () => {
});
test("passes correct props to CreateProjectModal", async () => {
render(<ProjectSwitcher {...defaultProps} projects={[project]} canDoRoleManagement={false} />);
render(<ProjectSwitcher {...defaultProps} projects={[project]} isAccessControlAllowed={false} />);
const addButton = screen.getByText("common.add_project");
await userEvent.click(addButton);
expect(screen.getByTestId("modal-can-do-role-management")).toHaveTextContent("false");
expect(screen.getByTestId("modal-is-access-control-allowed")).toHaveTextContent("false");
});
});
@@ -32,7 +32,7 @@ interface ProjectSwitcherProps {
isLicenseActive: boolean;
environmentId: string;
isOwnerOrManager: boolean;
canDoRoleManagement: boolean;
isAccessControlAllowed: boolean;
}
export const ProjectSwitcher = ({
@@ -46,7 +46,7 @@ export const ProjectSwitcher = ({
isLicenseActive,
environmentId,
isOwnerOrManager,
canDoRoleManagement,
isAccessControlAllowed,
}: ProjectSwitcherProps) => {
const [openLimitModal, setOpenLimitModal] = useState(false);
const [openCreateProjectModal, setOpenCreateProjectModal] = useState(false);
@@ -227,7 +227,7 @@ export const ProjectSwitcher = ({
open={openCreateProjectModal}
setOpen={setOpenCreateProjectModal}
organizationId={organization.id}
canDoRoleManagement={canDoRoleManagement}
isAccessControlAllowed={isAccessControlAllowed}
/>
)}
</>