From 8464fb01390775a57d79f41f272cdf3e912092ce Mon Sep 17 00:00:00 2001 From: Aleksander Nicacio da Silva Date: Sun, 7 Dec 2025 21:16:13 -0300 Subject: [PATCH 1/2] chore: added withSubscription to MockedAppRootBuilder --- .../mock-providers/src/MockedAppRootBuilder.tsx | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/mock-providers/src/MockedAppRootBuilder.tsx b/packages/mock-providers/src/MockedAppRootBuilder.tsx index 4058b91a58e3e..2f4d0c9f0735e 100644 --- a/packages/mock-providers/src/MockedAppRootBuilder.tsx +++ b/packages/mock-providers/src/MockedAppRootBuilder.tsx @@ -3,7 +3,6 @@ import type { DirectCallData, IRoom, ISetting, - ISubscription, IUser, ProviderCapabilities, Serialized, @@ -149,8 +148,11 @@ export class MockedAppRootBuilder { onLogout: () => () => undefined, queryPreference: () => [() => () => undefined, () => undefined], queryRoom: () => [() => () => undefined, () => this.room], - querySubscription: () => [() => () => undefined, () => this.subscriptions as unknown as ISubscription], - querySubscriptions: () => [() => () => undefined, () => this.subscriptions ?? []], // apply query and option + querySubscription: () => [() => () => undefined, () => this.subscription], + querySubscriptions: () => [ + () => () => undefined, + () => (this.subscription ? [this.subscription, ...(this.subscriptions ?? [])] : (this.subscriptions ?? [])), + ], // apply query and option user: null, userId: undefined, }; @@ -205,6 +207,8 @@ export class MockedAppRootBuilder { private subscriptions: SubscriptionWithRoom[] | undefined = undefined; + private subscription: SubscriptionWithRoom | undefined = undefined; + private modal: ModalContextValue = { currentModal: { component: null }, modal: { @@ -451,6 +455,12 @@ export class MockedAppRootBuilder { return this; } + withSubscription(subscription: SubscriptionWithRoom): this { + this.subscription = subscription; + + return this; + } + withRoom(room: IRoom): this { this.room = room; From 7551f5c1636cce8a92e2c578731cad7031cd3ad4 Mon Sep 17 00:00:00 2001 From: Aleksander Nicacio da Silva Date: Mon, 8 Dec 2025 10:24:33 -0300 Subject: [PATCH 2/2] test: adjusted useRpomMenuActions and useRoomLeave tests to use withSubscriptiption instead --- .../sidepanel/hooks/useRoomMenuActions.spec.ts | 14 ++++++-------- .../Info/hooks/actions/useRoomLeave.spec.ts | 3 +-- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/apps/meteor/client/views/navigation/sidepanel/hooks/useRoomMenuActions.spec.ts b/apps/meteor/client/views/navigation/sidepanel/hooks/useRoomMenuActions.spec.ts index 01de2f9d2d031..9001f6de9fb7a 100644 --- a/apps/meteor/client/views/navigation/sidepanel/hooks/useRoomMenuActions.spec.ts +++ b/apps/meteor/client/views/navigation/sidepanel/hooks/useRoomMenuActions.spec.ts @@ -1,12 +1,10 @@ import { mockAppRoot } from '@rocket.chat/mock-providers'; -import type { SubscriptionWithRoom } from '@rocket.chat/ui-contexts'; import { renderHook } from '@testing-library/react'; import { useRoomMenuActions } from './useRoomMenuActions'; -import { createFakeRoom, createFakeSubscription } from '../../../../../tests/mocks/data'; +import { createFakeSubscription } from '../../../../../tests/mocks/data'; -const mockRoom = createFakeRoom({ _id: 'room1', t: 'c', name: 'room1', fname: 'Room 1' }); -const mockSubscription = createFakeSubscription({ name: 'room1', t: 'c', disableNotifications: false, rid: 'room1' }); +const mockSubscription = createFakeSubscription({ name: 'room1', fname: 'Room 1', t: 'c', disableNotifications: false, rid: 'room1' }); jest.mock('../../../../../client/lib/rooms/roomCoordinator', () => ({ roomCoordinator: { @@ -42,7 +40,7 @@ describe('useRoomMenuActions', () => { it('should return all menu options for normal rooms', () => { const { result } = renderHook(() => useRoomMenuActions(mockHookProps), { wrapper: mockAppRoot() - .withSubscriptions([{ ...mockSubscription, rid: 'room1' }] as unknown as SubscriptionWithRoom[]) + .withSubscription({ ...mockSubscription, rid: 'room1' }) .withPermission('leave-c') .withPermission('leave-p') .withSetting('Favorite_Rooms', true) @@ -59,7 +57,7 @@ describe('useRoomMenuActions', () => { it('should return priorities section for omnichannel room', () => { const { result } = renderHook(() => useRoomMenuActions({ ...mockHookProps, type: 'l' }), { wrapper: mockAppRoot() - .withSubscriptions([{ ...mockSubscription, ...mockRoom, t: 'l' }] as unknown as SubscriptionWithRoom[]) + .withSubscription({ ...mockSubscription, t: 'l' }) .withPermission('leave-c') .withPermission('leave-p') .withSetting('Favorite_Rooms', true) @@ -76,7 +74,7 @@ describe('useRoomMenuActions', () => { it('should not return any menu option if hideDefaultOptions', () => { const { result } = renderHook(() => useRoomMenuActions({ ...mockHookProps, hideDefaultOptions: true }), { wrapper: mockAppRoot() - .withSubscriptions([{ ...mockSubscription, ...mockRoom }] as unknown as SubscriptionWithRoom[]) + .withSubscription(mockSubscription) .withPermission('leave-c') .withPermission('leave-p') .withSetting('Favorite_Rooms', true) @@ -89,7 +87,7 @@ describe('useRoomMenuActions', () => { it('should not return favorite room option if setting is disabled', () => { const { result } = renderHook(() => useRoomMenuActions(mockHookProps), { wrapper: mockAppRoot() - .withSubscriptions([{ ...mockSubscription, ...mockRoom }] as unknown as SubscriptionWithRoom[]) + .withSubscription(mockSubscription) .withPermission('leave-c') .withPermission('leave-p') .withSetting('Favorite_Rooms', false) diff --git a/apps/meteor/client/views/room/contextualBar/Info/hooks/actions/useRoomLeave.spec.ts b/apps/meteor/client/views/room/contextualBar/Info/hooks/actions/useRoomLeave.spec.ts index e864998f63781..24da19244b2fc 100644 --- a/apps/meteor/client/views/room/contextualBar/Info/hooks/actions/useRoomLeave.spec.ts +++ b/apps/meteor/client/views/room/contextualBar/Info/hooks/actions/useRoomLeave.spec.ts @@ -1,5 +1,4 @@ import { mockAppRoot } from '@rocket.chat/mock-providers'; -import type { SubscriptionWithRoom } from '@rocket.chat/ui-contexts'; import { renderHook } from '@testing-library/react'; import { useRoomLeave } from './useRoomLeave'; @@ -25,7 +24,7 @@ jest.mock('../../../../../../../client/lib/rooms/roomCoordinator', () => ({ it('should return leave function if user has subscription', () => { const wrapper = mockAppRoot() .withPermission('leave-c') - .withSubscriptions([{ ...mockSubscription, rid: 'room1' }] as unknown as SubscriptionWithRoom[]) + .withSubscription({ ...mockSubscription, rid: 'room1' }) .build(); const { result } = renderHook(() => useRoomLeave(mockRoom), { wrapper });