Some checks failed
Create issues from TODOs / todos (push) Failing after 3s
Close inactive issues / close-issues (push) Has been cancelled
Deploy GitHub Pages / deploy-preview (push) Has been cancelled
CI / ⚙️ Variables Setup (push) Has been cancelled
CI / ⚙️ Test Guard (push) Has been cancelled
CI / 🚀 Notify external services - draft (push) Has been cancelled
CI / 📦 Build Packages (push) Has been cancelled
CI / 📦 Meteor Build (coverage) (push) Has been cancelled
CI / 📦 Meteor Build (production) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [account-service presence-service omnichannel-transcript-service], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [account-service presence-service omnichannel-transcript-service], fips) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [authorization-service queue-worker-service ddp-streamer-service], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [authorization-service queue-worker-service ddp-streamer-service], fips) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [rocketchat], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [rocketchat], coverage) (push) Has been cancelled
CI / 🚢 Build Docker (amd64, [rocketchat], fips) (push) Has been cancelled
CI / 🚢 Build Docker (arm64, [account-service presence-service omnichannel-transcript-service], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (arm64, [authorization-service queue-worker-service ddp-streamer-service], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (arm64, [rocketchat], ${{ (github.event_name != 'release' && github.ref != 'refs/heads/develop') && 'coverage' || 'production' }}) (push) Has been cancelled
CI / 🚢 Build Docker (arm64, [rocketchat], coverage) (push) Has been cancelled
CI / 🚢 Publish Docker Images (ghcr.io) (push) Has been cancelled
CI / 📦 Track Image Sizes (push) Has been cancelled
CI / 🔎 Code Check - Action Lint (push) Has been cancelled
CI / 🔎 Code Check (push) Has been cancelled
CI / 🔨 Test Storybook (push) Has been cancelled
CI / 🔨 Test Unit (push) Has been cancelled
CI / 🔨 Test API (CE) (push) Has been cancelled
CI / 🔨 Test API Livechat (CE) (push) Has been cancelled
CI / 🔨 Test UI (CE) (push) Has been cancelled
CI / 🔨 Test API (EE) (push) Has been cancelled
CI / 🔨 Test API Livechat (EE) (push) Has been cancelled
CI / 🔨 Test API Apps (deno-runtime - EE) (push) Has been cancelled
CI / 🔨 Test UI (EE) (push) Has been cancelled
CI / 🔨 Test API (FIPS) (push) Has been cancelled
CI / 🔨 Test API Livechat (FIPS) (push) Has been cancelled
CI / 🔨 Test UI (FIPS) (push) Has been cancelled
CI / 🔨 Test Federation Matrix (push) Has been cancelled
CI / 📊 Report Coverage (push) Has been cancelled
CI / ✅ Tests Done (push) Has been cancelled
CI / 🚀 Publish build assets (push) Has been cancelled
CI / 🚀 Publish Docker Images (DockerHub) (push) Has been cancelled
CI / 🚀 Notify external services (push) Has been cancelled
CI / Update Version Durability (push) Has been cancelled
Release / Release (push) Has been cancelled
Auto-close duplicate issues / auto-close-duplicates (push) Failing after 1s
Code scanning - action / CodeQL-Build (push) Failing after 1s
58 lines
3.1 KiB
TypeScript
58 lines
3.1 KiB
TypeScript
import type { IRoom } from '@rocket.chat/core-typings';
|
|
import { mockAppRoot } from '@rocket.chat/mock-providers';
|
|
import { render, screen } from '@testing-library/react';
|
|
import userEvent from '@testing-library/user-event';
|
|
|
|
import RoomGroupingMenu from './RoomGroupingMenu';
|
|
import { useHasLicenseModule } from '../../../../hooks/useHasLicenseModule';
|
|
import { useCategoryModals } from '../../../../sidebar/categories/hooks/useCategoryModals';
|
|
import { useMoveRoomCategory } from '../../../../sidebar/categories/hooks/useMoveRoomCategory';
|
|
import { useUserIsSubscribed } from '../../contexts/RoomContext';
|
|
import { useToggleFavoriteMutation } from '../../hooks/useToggleFavoriteMutation';
|
|
|
|
jest.mock('../../../../hooks/useHasLicenseModule', () => ({ useHasLicenseModule: jest.fn() }));
|
|
jest.mock('../../../../sidebar/categories/hooks/useMoveRoomCategory', () => ({ useMoveRoomCategory: jest.fn() }));
|
|
jest.mock('../../../../sidebar/categories/hooks/useCategoryModals', () => ({ useCategoryModals: jest.fn() }));
|
|
jest.mock('../../contexts/RoomContext', () => ({ useUserIsSubscribed: jest.fn() }));
|
|
jest.mock('../../hooks/useToggleFavoriteMutation', () => ({ useToggleFavoriteMutation: jest.fn() }));
|
|
|
|
const mockedUseCategoryModals = jest.mocked(useCategoryModals);
|
|
const mockedUseMoveRoomCategory = jest.mocked(useMoveRoomCategory);
|
|
const mockedUseHasLicenseModule = jest.mocked(useHasLicenseModule);
|
|
const mockedUseUserIsSubscribed = jest.mocked(useUserIsSubscribed);
|
|
const mockedUseToggleFavoriteMutation = jest.mocked(useToggleFavoriteMutation);
|
|
|
|
const ROOM_ID = 'test-room-id';
|
|
|
|
const catDesign = { _id: 'cat-design', name: 'Design', showUnreads: false };
|
|
const catOther = { _id: 'cat-other', name: 'Engineering', showUnreads: false };
|
|
|
|
const makeRoom = (overrides: Partial<IRoom & { f?: boolean; category?: string }> = {}): IRoom & { f?: boolean; category?: string } =>
|
|
({ _id: ROOM_ID, name: 'General', t: 'c', ...overrides }) as any;
|
|
|
|
const wrapper = mockAppRoot().withSetting('Favorite_Rooms', true).withUserPreference('sidebarCategories', [catDesign, catOther]).build();
|
|
|
|
beforeEach(() => {
|
|
mockedUseUserIsSubscribed.mockReturnValue(true);
|
|
mockedUseToggleFavoriteMutation.mockReturnValue({ mutate: jest.fn() } as any);
|
|
mockedUseCategoryModals.mockReturnValue({ openCreate: jest.fn(), openManage: jest.fn(), openDelete: jest.fn() });
|
|
mockedUseMoveRoomCategory.mockReturnValue({ mutate: jest.fn(), mutateAsync: jest.fn() } as any);
|
|
mockedUseHasLicenseModule.mockReturnValue({ data: true } as any);
|
|
});
|
|
|
|
it('shows Favorites in the grouping menu when the room is favorited', async () => {
|
|
render(<RoomGroupingMenu room={makeRoom({ f: true })} />, { wrapper });
|
|
|
|
await userEvent.click(screen.getByRole('button'));
|
|
|
|
expect(await screen.findByRole('menuitem', { name: 'Favorites' })).toBeInTheDocument();
|
|
});
|
|
|
|
it('shows the matching category in the grouping menu when the room has a category subscription field', async () => {
|
|
render(<RoomGroupingMenu room={makeRoom({ f: false, category: 'cat-design' })} />, { wrapper });
|
|
|
|
await userEvent.click(screen.getByRole('button'));
|
|
|
|
expect(await screen.findByRole('menuitem', { name: 'Design' })).toBeInTheDocument();
|
|
});
|