From a332a0b02a6c3253ea7ac606211c41a09c409de5 Mon Sep 17 00:00:00 2001 From: Mikhail Aheichyk Date: Tue, 14 Mar 2023 10:10:41 +0300 Subject: [PATCH] Show room create button in RoomSublist if "UIComponent.roomCreation" is enabled Signed-off-by: Mikhail Aheichyk --- src/components/views/rooms/RoomSublist.tsx | 4 +- .../views/rooms/RoomSublist-test.tsx | 73 +++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 test/components/views/rooms/RoomSublist-test.tsx diff --git a/src/components/views/rooms/RoomSublist.tsx b/src/components/views/rooms/RoomSublist.tsx index 6e471dde428..bdeed9934e4 100644 --- a/src/components/views/rooms/RoomSublist.tsx +++ b/src/components/views/rooms/RoomSublist.tsx @@ -55,6 +55,8 @@ import SettingsStore from "../../../settings/SettingsStore"; import { SlidingSyncManager } from "../../../SlidingSyncManager"; import NotificationBadge from "./NotificationBadge"; import RoomTile from "./RoomTile"; +import { shouldShowComponent } from "../../../customisations/helpers/UIComponents"; +import { UIComponent } from "../../../settings/UIFeature"; const SHOW_N_BUTTON_HEIGHT = 28; // As defined by CSS const RESIZE_HANDLE_HEIGHT = 4; // As defined by CSS @@ -661,7 +663,7 @@ export default class RoomSublist extends React.Component { ); let addRoomButton: JSX.Element | undefined; - if (this.props.AuxButtonComponent) { + if (this.props.AuxButtonComponent && shouldShowComponent(UIComponent.CreateRooms)) { const AuxButtonComponent = this.props.AuxButtonComponent; addRoomButton = ; } diff --git a/test/components/views/rooms/RoomSublist-test.tsx b/test/components/views/rooms/RoomSublist-test.tsx new file mode 100644 index 00000000000..60d8cffa23c --- /dev/null +++ b/test/components/views/rooms/RoomSublist-test.tsx @@ -0,0 +1,73 @@ +/* +Copyright 2023 Mikhail Aheichyk +Copyright 2023 Nordeck IT + Consulting GmbH. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { render, RenderResult, screen } from "@testing-library/react"; +import { ComponentProps } from "react"; +import React from "react"; +import { EventEmitter } from "events"; +import { mocked } from "jest-mock"; + +import RoomSublist, { IAuxButtonProps } from "../../../../src/components/views/rooms/RoomSublist"; +import { DefaultTagID } from "../../../../src/stores/room-list/models"; +import ResizeNotifier from "../../../../src/utils/ResizeNotifier"; +import AccessibleButton from "../../../../src/components/views/elements/AccessibleButton"; +import { shouldShowComponent } from "../../../../src/customisations/helpers/UIComponents"; +import { UIComponent } from "../../../../src/settings/UIFeature"; + +jest.mock("../../../../src/customisations/helpers/UIComponents", () => ({ + shouldShowComponent: jest.fn(), +})); + +const AuxButton: React.FC = ({ tabIndex }) => { + return Add room; +}; + +describe("RoomSublist", () => { + function renderComponent(props: Partial> = {}): RenderResult { + return render( + , + ); + } + + it("does not render when UIComponent customisations disable room creation", () => { + mocked(shouldShowComponent).mockReturnValue(false); + + renderComponent(); + + expect(shouldShowComponent).toHaveBeenCalledWith(UIComponent.CreateRooms); + expect(screen.queryByRole("button", { name: "Add room" })).not.toBeInTheDocument(); + }); + + it("renders when UIComponent customisations enable room creation", () => { + mocked(shouldShowComponent).mockReturnValue(true); + + renderComponent(); + + expect(shouldShowComponent).toHaveBeenCalledWith(UIComponent.CreateRooms); + expect(screen.getByRole("button", { name: "Add room" })).toBeInTheDocument(); + }); +});