mirror of
https://github.com/vector-im/element-web.git
synced 2025-08-06 14:27:10 +02:00
* Update for compatibility with v12 rooms Stop using powerLevelNorm and reading PL events manually. To support https://github.com/matrix-org/matrix-js-sdk/pull/4937 * Add test for leave space dialog * Don't compute stuff if we don't need it * Use room.client * Use getSafeUserId * Remove client arg * Use getJoinedMembers and add doc * Fix tests * Fix more tests * Fix other test * Clarify comment Co-authored-by: Michael Telatynski <7t3chguy@gmail.com> --------- Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
51 lines
1.9 KiB
TypeScript
51 lines
1.9 KiB
TypeScript
/*
|
|
Copyright 2025 New Vector Ltd.
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
|
|
Please see LICENSE files in the repository root for full details.
|
|
*/
|
|
|
|
import React from "react";
|
|
import { render, screen } from "jest-matrix-react";
|
|
import { MatrixEvent, type RoomMember } from "matrix-js-sdk/src/matrix";
|
|
|
|
import LeaveSpaceDialog from "../../../../../src/components/views/dialogs/LeaveSpaceDialog";
|
|
import { createTestClient, mkStubRoom } from "../../../../test-utils";
|
|
|
|
describe("LeaveSpaceDialog", () => {
|
|
it("should warn about not being able to rejoin non-public space", () => {
|
|
const mockClient = createTestClient();
|
|
const mockSpace = mkStubRoom("myfakeroom", "myfakeroom", mockClient) as any;
|
|
jest.spyOn(mockSpace.currentState, "getStateEvents").mockReturnValue(
|
|
new MatrixEvent({
|
|
type: "m.room.join_rules",
|
|
content: {
|
|
join_rule: "invite",
|
|
},
|
|
}),
|
|
);
|
|
|
|
render(<LeaveSpaceDialog space={mockSpace} onFinished={jest.fn()} />);
|
|
|
|
expect(screen.getByText(/You won't be able to rejoin unless you are re-invited/)).toBeInTheDocument();
|
|
});
|
|
|
|
it("should warn if user is the only admin", () => {
|
|
const mockClient = createTestClient();
|
|
const mockSpace = mkStubRoom("myfakeroom", "myfakeroom", mockClient) as any;
|
|
jest.spyOn(mockSpace, "getJoinedMembers").mockReturnValue([
|
|
{ powerLevel: 100 } as unknown as RoomMember,
|
|
{ powerLevel: 0 } as unknown as RoomMember,
|
|
]);
|
|
jest.spyOn(mockSpace, "getMember").mockReturnValue({
|
|
powerLevel: 100,
|
|
} as unknown as RoomMember);
|
|
|
|
render(<LeaveSpaceDialog space={mockSpace} onFinished={jest.fn()} />);
|
|
|
|
expect(
|
|
screen.getByText(/You're the only admin of this space. Leaving it will mean no one has control over it./),
|
|
).toBeInTheDocument();
|
|
});
|
|
});
|