diff --git a/packages/frontend/editor-ui/src/components/Projects/ProjectNavigation.test.ts b/packages/frontend/editor-ui/src/components/Projects/ProjectNavigation.test.ts index 6b50fc12520..d1e9a745faa 100644 --- a/packages/frontend/editor-ui/src/components/Projects/ProjectNavigation.test.ts +++ b/packages/frontend/editor-ui/src/components/Projects/ProjectNavigation.test.ts @@ -6,6 +6,7 @@ import { createProjectListItem } from '@/__tests__/data/projects'; import ProjectsNavigation from '@/components/Projects/ProjectNavigation.vue'; import { useProjectsStore } from '@/stores/projects.store'; import { useSettingsStore } from '@/stores/settings.store'; +import { useUsersStore } from '@/stores/users.store'; vi.mock('vue-router', async () => { const actual = await vi.importActual('vue-router'); @@ -64,6 +65,7 @@ const renderComponent = createComponentRenderer(ProjectsNavigation, { let projectsStore: ReturnType>; let settingsStore: ReturnType>; +let usersStore: ReturnType>; const personalProjects = Array.from({ length: 3 }, createProjectListItem); const teamProjects = Array.from({ length: 3 }, () => createProjectListItem('team')); @@ -74,6 +76,7 @@ describe('ProjectsNavigation', () => { projectsStore = mockedStore(useProjectsStore); settingsStore = mockedStore(useSettingsStore); + usersStore = mockedStore(useUsersStore); }); it('should not throw an error', () => { @@ -226,4 +229,43 @@ describe('ProjectsNavigation', () => { expect(getByTestId('add-first-project-button')).toBeVisible(); expect(getByTestId('add-first-project-button').classList.contains('collapsed')).toBe(true); }); + + it('should not render shared menu item when only one verified user', async () => { + // Only one verified user + usersStore.allUsers = [ + { id: '1', isPendingUser: false, isDefaultUser: false, mfaEnabled: false }, + { id: '2', isPendingUser: true, isDefaultUser: false, mfaEnabled: false }, + ]; + projectsStore.teamProjectsLimit = -1; + projectsStore.isTeamProjectFeatureEnabled = true; + + const { queryByTestId } = renderComponent({ + props: { + collapsed: false, + }, + }); + + // The shared menu item should not be rendered + expect(queryByTestId('project-shared-menu-item')).not.toBeInTheDocument(); + }); + + it('should render shared menu item when more than one verified user', async () => { + // Only one verified user + usersStore.allUsers = [ + { id: '1', isPendingUser: false, isDefaultUser: false, mfaEnabled: false }, + { id: '2', isPendingUser: true, isDefaultUser: false, mfaEnabled: false }, + { id: '3', isPendingUser: false, isDefaultUser: false, mfaEnabled: false }, + ]; + projectsStore.teamProjectsLimit = -1; + projectsStore.isTeamProjectFeatureEnabled = true; + + const { getByTestId } = renderComponent({ + props: { + collapsed: false, + }, + }); + + // The shared menu item should not be rendered + expect(getByTestId('project-shared-menu-item')).toBeInTheDocument(); + }); }); diff --git a/packages/frontend/editor-ui/src/components/Projects/ProjectNavigation.vue b/packages/frontend/editor-ui/src/components/Projects/ProjectNavigation.vue index 73429505d5a..edc4f7ebdcd 100644 --- a/packages/frontend/editor-ui/src/components/Projects/ProjectNavigation.vue +++ b/packages/frontend/editor-ui/src/components/Projects/ProjectNavigation.vue @@ -1,5 +1,5 @@