Introduce Membership type

This commit is contained in:
Stanislav Demydiuk 2024-03-11 17:16:53 +00:00 committed by Andy Balaam
parent 3c6fd58628
commit da99bad7b9
115 changed files with 582 additions and 526 deletions

View file

@ -106,7 +106,7 @@ describe("RoomContextMenu", () => {
it("should render notification option for joined rooms", () => {
const chamber = EchoChamber.forRoom(room);
chamber.notificationVolume = RoomNotifState.Mute;
jest.spyOn(room, "getMyMembership").mockReturnValue("join");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Join);
renderComponent();
expect(

View file

@ -105,7 +105,7 @@ describe("RoomGeneralContextMenu", () => {
});
it("does not render invite menu item when UIComponent customisations disable room invite", () => {
room.updateMyMembership("join");
room.updateMyMembership(Membership.Join);
jest.spyOn(room, "canInvite").mockReturnValue(true);
mocked(shouldShowComponent).mockReturnValue(false);
@ -116,7 +116,7 @@ describe("RoomGeneralContextMenu", () => {
});
it("renders invite menu item when UIComponent customisations enables room invite", () => {
room.updateMyMembership("join");
room.updateMyMembership(Membership.Join);
jest.spyOn(room, "canInvite").mockReturnValue(true);
mocked(shouldShowComponent).mockReturnValue(true);

View file

@ -25,7 +25,7 @@ describe("ConfirmUserActionDialog", () => {
const { asFragment } = render(
<ConfirmUserActionDialog
onFinished={jest.fn()}
member={mkRoomMember("123", "@user:test.com", "join")}
member={mkRoomMember("123", "@user:test.com", Membership.Join)}
action="Ban"
title="Ban this " // eg. 'Ban this user?'
/>,

View file

@ -163,7 +163,7 @@ describe("InviteDialog", () => {
mkMembership({
event: true,
room: roomId,
mship: "join",
mship: Membership.Join,
user: aliceId,
skey: aliceId,
}),

View file

@ -158,9 +158,9 @@ describe("Spotlight Dialog", () => {
beforeEach(() => {
mockedClient = mockClient({ rooms: [testPublicRoom], users: [testPerson] });
testRoom = mkRoom(mockedClient, "!test23:example.com");
mocked(testRoom.getMyMembership).mockReturnValue("join");
mocked(testRoom.getMyMembership).mockReturnValue(Membership.Join);
testLocalRoom = new LocalRoom(LOCAL_ROOM_ID_PREFIX + "test23", mockedClient, mockedClient.getUserId()!);
testLocalRoom.updateMyMembership("join");
testLocalRoom.updateMyMembership(Membership.Join);
mocked(mockedClient.getVisibleRooms).mockReturnValue([testRoom, testLocalRoom]);
jest.spyOn(DMRoomMap, "shared").mockReturnValue({
@ -169,7 +169,7 @@ describe("Spotlight Dialog", () => {
testDM = mkRoom(mockedClient, testDMRoomId);
testDM.name = "Chat with Alice";
mocked(testDM.getMyMembership).mockReturnValue("join");
mocked(testDM.getMyMembership).mockReturnValue(Membership.Join);
mocked(DMRoomMap.shared().getUserIdForRoomId).mockImplementation((roomId: string) => {
if (roomId === testDMRoomId) {

View file

@ -61,8 +61,8 @@ describe("EventListSummary", function () {
interface MembershipEventParams {
senderId?: string;
userId?: string;
membership: string;
prevMembership?: string;
membership: Membership;
prevMembership?: Membership;
}
const generateMembershipEvent = (
eventId: string,
@ -145,7 +145,9 @@ describe("EventListSummary", function () {
});
it("renders expanded events if there are less than props.threshold", function () {
const events = generateEvents([{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" }]);
const events = generateEvents([
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
]);
const props = {
events: events,
children: generateTiles(events),
@ -163,8 +165,8 @@ describe("EventListSummary", function () {
it("renders expanded events if there are less than props.threshold for join and leave", function () {
const events = generateEvents([
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
]);
const props = {
events: events,
@ -184,9 +186,9 @@ describe("EventListSummary", function () {
it("renders collapsed events if events.length = props.threshold", function () {
const events = generateEvents([
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
]);
const props = {
events: events,
@ -203,20 +205,20 @@ describe("EventListSummary", function () {
it("truncates long join,leave repetitions", function () {
const events = generateEvents([
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
]);
const props = {
events: events,
@ -235,28 +237,28 @@ describe("EventListSummary", function () {
const events = generateEvents([
{
userId: "@user_1:some.domain",
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{
userId: "@user_1:some.domain",
prevMembership: "leave",
membership: "invite",
prevMembership: Membership.Leave,
membership: Membership.Invite,
senderId: "@some_other_user:some.domain",
},
]);
@ -277,30 +279,30 @@ describe("EventListSummary", function () {
const events = generateEvents([
{
userId: "@user_1:some.domain",
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{
userId: "@user_1:some.domain",
prevMembership: "leave",
membership: "ban",
prevMembership: Membership.Leave,
membership: Membership.Ban,
senderId: "@some_other_user:some.domain",
},
{ userId: "@user_1:some.domain", prevMembership: "ban", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Ban, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{
userId: "@user_1:some.domain",
prevMembership: "leave",
membership: "invite",
prevMembership: Membership.Leave,
membership: Membership.Invite,
senderId: "@some_other_user:some.domain",
},
]);
@ -324,35 +326,35 @@ describe("EventListSummary", function () {
// user_1
{
userId: "@user_1:some.domain",
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{
userId: "@user_1:some.domain",
prevMembership: "leave",
membership: "ban",
prevMembership: Membership.Leave,
membership: Membership.Ban,
senderId: "@some_other_user:some.domain",
},
// user_2
{
userId: "@user_2:some.domain",
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{ userId: "@user_2:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_2:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_2:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_2:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_2:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_2:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_2:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_2:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{
userId: "@user_2:some.domain",
prevMembership: "leave",
membership: "ban",
prevMembership: Membership.Leave,
membership: Membership.Ban,
senderId: "@some_other_user:some.domain",
},
]);
@ -374,17 +376,17 @@ describe("EventListSummary", function () {
it("handles many users following the same sequence of memberships", function () {
const events = generateEventsForUsers("@user_$:some.domain", 20, [
{
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{ prevMembership: "leave", membership: "join" },
{ prevMembership: "join", membership: "leave" },
{ prevMembership: "leave", membership: "join" },
{ prevMembership: "join", membership: "leave" },
{ prevMembership: Membership.Leave, membership: Membership.Join },
{ prevMembership: Membership.Join, membership: Membership.Leave },
{ prevMembership: Membership.Leave, membership: Membership.Join },
{ prevMembership: Membership.Join, membership: Membership.Leave },
{
prevMembership: "leave",
membership: "ban",
prevMembership: Membership.Leave,
membership: Membership.Ban,
senderId: "@some_other_user:some.domain",
},
]);
@ -407,30 +409,30 @@ describe("EventListSummary", function () {
const events = generateEvents([
{
userId: "@user_2:some.domain",
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{
userId: "@user_1:some.domain",
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{
userId: "@user_1:some.domain",
prevMembership: "leave",
membership: "ban",
prevMembership: Membership.Leave,
membership: Membership.Ban,
senderId: "@some_other_user:some.domain",
},
{ userId: "@user_2:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_2:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_2:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_2:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_2:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_2:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_2:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_2:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
]);
const props = {
events: events,
@ -451,52 +453,52 @@ describe("EventListSummary", function () {
it("correctly identifies transitions", function () {
const events = generateEvents([
// invited
{ userId: "@user_1:some.domain", membership: "invite" },
{ userId: "@user_1:some.domain", membership: Membership.Invite },
// banned
{ userId: "@user_1:some.domain", membership: "ban" },
{ userId: "@user_1:some.domain", membership: Membership.Ban },
// joined
{ userId: "@user_1:some.domain", membership: "join" },
{ userId: "@user_1:some.domain", membership: Membership.Join },
// invite_reject
{
userId: "@user_1:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
},
// left
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
// invite_withdrawal
{
userId: "@user_1:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
// unbanned
{
userId: "@user_1:some.domain",
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
// kicked
{
userId: "@user_1:some.domain",
prevMembership: "join",
membership: "leave",
prevMembership: Membership.Join,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
// default for sender=target (leave)
{
userId: "@user_1:some.domain",
prevMembership: "????",
membership: "leave",
prevMembership: "????" as Membership,
membership: Membership.Leave,
senderId: "@user_1:some.domain",
},
// default for sender<>target (kicked)
{
userId: "@user_1:some.domain",
prevMembership: "????",
membership: "leave",
prevMembership: "????" as Membership,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
]);
@ -520,24 +522,24 @@ describe("EventListSummary", function () {
const events = generateEvents([
{
userId: "@user_1:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
},
{
userId: "@user_1:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{
userId: "@user_2:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
},
{
userId: "@user_2:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
]);
@ -560,13 +562,13 @@ describe("EventListSummary", function () {
const events = generateEvents([
{
userId: "@user_1:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
},
{
userId: "@user_1:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
},
]);
const props = {
@ -584,10 +586,10 @@ describe("EventListSummary", function () {
it('handles a summary length = 2, with no "others"', function () {
const events = generateEvents([
{ userId: "@user_1:some.domain", membership: "join" },
{ userId: "@user_1:some.domain", membership: "join" },
{ userId: "@user_2:some.domain", membership: "join" },
{ userId: "@user_2:some.domain", membership: "join" },
{ userId: "@user_1:some.domain", membership: Membership.Join },
{ userId: "@user_1:some.domain", membership: Membership.Join },
{ userId: "@user_2:some.domain", membership: Membership.Join },
{ userId: "@user_2:some.domain", membership: Membership.Join },
]);
const props = {
events: events,
@ -604,9 +606,9 @@ describe("EventListSummary", function () {
it('handles a summary length = 2, with 1 "other"', function () {
const events = generateEvents([
{ userId: "@user_1:some.domain", membership: "join" },
{ userId: "@user_2:some.domain", membership: "join" },
{ userId: "@user_3:some.domain", membership: "join" },
{ userId: "@user_1:some.domain", membership: Membership.Join },
{ userId: "@user_2:some.domain", membership: Membership.Join },
{ userId: "@user_3:some.domain", membership: Membership.Join },
]);
const props = {
events: events,
@ -622,7 +624,7 @@ describe("EventListSummary", function () {
});
it('handles a summary length = 2, with many "others"', function () {
const events = generateEventsForUsers("@user_$:some.domain", 20, [{ membership: "join" }]);
const events = generateEventsForUsers("@user_$:some.domain", 20, [{ membership: Membership.Join }]);
const props = {
events: events,
children: generateTiles(events),

View file

@ -21,7 +21,7 @@ import { mkRoomMember } from "../../../test-utils";
describe("<FacePile />", () => {
it("renders with a tooltip", () => {
const member = mkRoomMember("123", "456", "join");
const member = mkRoomMember("123", "456", Membership.Join);
const { asFragment } = render(
<FacePile members={[member]} size="36px" overflow={false} tooltipLabel="tooltip" />,

View file

@ -27,7 +27,9 @@ describe("<RoomFacePile />", () => {
DMRoomMap.makeShared(cli);
const room = mkRoom(cli, "!123");
jest.spyOn(room, "getJoinedMembers").mockReturnValue([mkRoomMember(room.roomId, "@bob:example.org", "join")]);
jest.spyOn(room, "getJoinedMembers").mockReturnValue([
mkRoomMember(room.roomId, "@bob:example.org", Membership.Join),
]);
const { asFragment } = render(
<TooltipProvider>

View file

@ -86,7 +86,7 @@ describe("<RoomSummaryCard />", () => {
state_key: "",
});
room.currentState.setStateEvents([roomCreateEvent]);
room.updateMyMembership("join");
room.updateMyMembership(Membership.Join);
jest.spyOn(Modal, "createDialog");
jest.spyOn(RightPanelStore.instance, "pushCard");

View file

@ -943,8 +943,8 @@ describe("<PowerLevelEditor />", () => {
describe("<RoomKickButton />", () => {
const defaultMember = new RoomMember(defaultRoomId, defaultUserId);
const memberWithInviteMembership = { ...defaultMember, membership: "invite" };
const memberWithJoinMembership = { ...defaultMember, membership: "join" };
const memberWithInviteMembership = { ...defaultMember, membership: Membership.Invite };
const memberWithJoinMembership = { ...defaultMember, membership: Membership.Join };
let defaultProps: Parameters<typeof RoomKickButton>[0];
beforeEach(() => {
@ -1031,7 +1031,7 @@ describe("<RoomKickButton />", () => {
// null vs their member followed by
// my member vs their member
const mockMyMember = { powerLevel: 1 };
const mockTheirMember = { membership: "invite", powerLevel: 0 };
const mockTheirMember = { membership: Membership.Invite, powerLevel: 0 };
const mockRoom = {
getMember: jest
@ -1052,7 +1052,7 @@ describe("<RoomKickButton />", () => {
describe("<BanToggleButton />", () => {
const defaultMember = new RoomMember(defaultRoomId, defaultUserId);
const memberWithBanMembership = { ...defaultMember, membership: "ban" };
const memberWithBanMembership = { ...defaultMember, membership: Membership.Ban };
let defaultProps: Parameters<typeof BanToggleButton>[0];
beforeEach(() => {
defaultProps = {
@ -1161,7 +1161,7 @@ describe("<BanToggleButton />", () => {
// null vs their member followed by
// my member vs their member
const mockMyMember = { powerLevel: 1 };
const mockTheirMember = { membership: "ban", powerLevel: 0 };
const mockTheirMember = { membership: Membership.Ban, powerLevel: 0 };
const mockRoom = {
getMember: jest
@ -1182,7 +1182,7 @@ describe("<BanToggleButton />", () => {
describe("<RoomAdminToolsContainer />", () => {
const defaultMember = new RoomMember(defaultRoomId, defaultUserId);
defaultMember.membership = "invite";
defaultMember.membership = Membership.Invite;
let defaultProps: Parameters<typeof RoomAdminToolsContainer>[0];
beforeEach(() => {
@ -1245,7 +1245,11 @@ describe("<RoomAdminToolsContainer />", () => {
mockMeMember.powerLevel = 51; // defaults to 50
mockRoom.getMember.mockReturnValueOnce(mockMeMember);
const defaultMemberWithPowerLevelAndJoinMembership = { ...defaultMember, powerLevel: 0, membership: "join" };
const defaultMemberWithPowerLevelAndJoinMembership = {
...defaultMember,
powerLevel: 0,
membership: Membership.Join,
};
renderComponent({
member: defaultMemberWithPowerLevelAndJoinMembership,
@ -1263,7 +1267,11 @@ describe("<RoomAdminToolsContainer />", () => {
mockMeMember.powerLevel = 51; // defaults to 50
mockRoom.getMember.mockReturnValueOnce(mockMeMember);
const defaultMemberWithPowerLevelAndJoinMembership = { ...defaultMember, powerLevel: 0, membership: "join" };
const defaultMemberWithPowerLevelAndJoinMembership = {
...defaultMember,
powerLevel: 0,
membership: Membership.Join,
};
renderComponent({
member: defaultMemberWithPowerLevelAndJoinMembership,

View file

@ -906,7 +906,7 @@ function mkJoinEvent(roomId: string, userId: string) {
room: roomId,
user: userId,
content: {
membership: "join",
membership: Membership.Join,
avatar_url: "mxc://example.org/" + userId,
},
});

View file

@ -170,7 +170,7 @@ describe("MemberList", () => {
const usersPerLevel = 2;
for (let i = 0; i < usersPerLevel; i++) {
const adminUser = new RoomMember(memberListRoom.roomId, `@admin${i}:localhost`);
adminUser.membership = "join";
adminUser.membership = Membership.Join;
adminUser.powerLevel = 100;
adminUser.user = User.createUser(adminUser.userId, client);
adminUser.user.currentlyActive = true;
@ -180,7 +180,7 @@ describe("MemberList", () => {
adminUsers.push(adminUser);
const moderatorUser = new RoomMember(memberListRoom.roomId, `@moderator${i}:localhost`);
moderatorUser.membership = "join";
moderatorUser.membership = Membership.Join;
moderatorUser.powerLevel = 50;
moderatorUser.user = User.createUser(moderatorUser.userId, client);
moderatorUser.user.currentlyActive = true;
@ -190,7 +190,7 @@ describe("MemberList", () => {
moderatorUsers.push(moderatorUser);
const defaultUser = new RoomMember(memberListRoom.roomId, `@default${i}:localhost`);
defaultUser.membership = "join";
defaultUser.membership = Membership.Join;
defaultUser.powerLevel = 0;
defaultUser.user = User.createUser(defaultUser.userId, client);
defaultUser.user.currentlyActive = true;
@ -402,7 +402,7 @@ describe("MemberList", () => {
});
it("renders disabled invite button when current user is a member but does not have rights to invite", async () => {
jest.spyOn(room, "getMyMembership").mockReturnValue("join");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Join);
jest.spyOn(room, "canInvite").mockReturnValue(false);
renderComponent();
@ -413,7 +413,7 @@ describe("MemberList", () => {
});
it("renders enabled invite button when current user is a member and has rights to invite", async () => {
jest.spyOn(room, "getMyMembership").mockReturnValue("join");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Join);
jest.spyOn(room, "canInvite").mockReturnValue(true);
renderComponent();
@ -424,7 +424,7 @@ describe("MemberList", () => {
it("opens room inviter on button click", async () => {
jest.spyOn(defaultDispatcher, "dispatch");
jest.spyOn(room, "getMyMembership").mockReturnValue("join");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Join);
jest.spyOn(room, "canInvite").mockReturnValue(true);
renderComponent();

View file

@ -140,7 +140,7 @@ describe("UnreadNotificationBadge", () => {
});
it("adds a warning for invites", () => {
room.updateMyMembership("invite");
room.updateMyMembership(Membership.Invite);
render(getComponent());
expect(screen.queryByText("!")).not.toBeNull();
});

View file

@ -154,7 +154,7 @@ describe("RoomHeader", () => {
name: "Member",
rawDisplayName: "Member",
roomId: room.roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => "mxc://avatar.url/image.png",
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
},
@ -172,7 +172,7 @@ describe("RoomHeader", () => {
name: "Member",
rawDisplayName: "Member",
roomId: room.roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => "mxc://avatar.url/image.png",
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
},
@ -181,7 +181,7 @@ describe("RoomHeader", () => {
name: "Member",
rawDisplayName: "Member",
roomId: room.roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => "mxc://avatar.url/image.png",
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
},
@ -190,7 +190,7 @@ describe("RoomHeader", () => {
name: "Member",
rawDisplayName: "Member",
roomId: room.roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => "mxc://avatar.url/image.png",
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
},
@ -199,7 +199,7 @@ describe("RoomHeader", () => {
name: "Bot user",
rawDisplayName: "Bot user",
roomId: room.roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => "mxc://avatar.url/image.png",
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
},
@ -703,7 +703,7 @@ function mockRoomMembers(room: Room, count: number) {
name: `Member ${index}`,
rawDisplayName: `Member ${index}`,
roomId: room.roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => `mxc://avatar.url/user-${index}.png`,
getMxcAvatarUrl: () => `mxc://avatar.url/user-${index}.png`,
}));

View file

@ -111,15 +111,26 @@ describe("RoomKnocksBar", () => {
const other = new RoomMember(roomId, "@doe:example.org");
bob.setMembershipEvent(
new MatrixEvent({ content: { displayname: "Bob", membership: "knock" }, type: EventType.RoomMember }),
new MatrixEvent({
content: { displayname: "Bob", membership: Membership.Knock },
type: EventType.RoomMember,
}),
);
jane.setMembershipEvent(
new MatrixEvent({ content: { displayname: "Jane", membership: "knock" }, type: EventType.RoomMember }),
new MatrixEvent({
content: { displayname: "Jane", membership: Membership.Knock },
type: EventType.RoomMember,
}),
);
john.setMembershipEvent(
new MatrixEvent({ content: { displayname: "John", membership: "knock" }, type: EventType.RoomMember }),
new MatrixEvent({
content: { displayname: "John", membership: Membership.Knock },
type: EventType.RoomMember,
}),
);
other.setMembershipEvent(
new MatrixEvent({ content: { membership: Membership.Knock }, type: EventType.RoomMember }),
);
other.setMembershipEvent(new MatrixEvent({ content: { membership: "knock" }, type: EventType.RoomMember }));
beforeEach(async () => {
await clearAllModals();
@ -178,7 +189,7 @@ describe("RoomKnocksBar", () => {
it("renders a link to open the room settings people tab", () => {
bob.setMembershipEvent(
new MatrixEvent({
content: { displayname: "Bob", membership: "knock", reason: "some reason" },
content: { displayname: "Bob", membership: Membership.Knock, reason: "some reason" },
type: EventType.RoomMember,
}),
);

View file

@ -49,10 +49,10 @@ const makeMockRoomMember = ({
}: {
userId?: string;
isKicked?: boolean;
membership?: "invite" | "ban" | "leave";
membership?: Membership.Invite | Membership.Ban | Membership.Leave;
content?: Partial<IContent>;
memberContent?: Partial<IContent>;
oldMembership?: "join" | "knock";
oldMembership?: Membership.Join | Membership.Knock;
}) =>
({
userId,
@ -180,7 +180,7 @@ describe("<RoomPreviewBar />", () => {
it("renders denied request message", () => {
const room = createRoom(roomId, otherUserId);
jest.spyOn(room, "getMember").mockReturnValue(
makeMockRoomMember({ isKicked: true, membership: "leave", oldMembership: "knock" }),
makeMockRoomMember({ isKicked: true, membership: Membership.Leave, oldMembership: Membership.Knock }),
);
const component = getComponent({ room, promptAskToJoin: true });
@ -191,7 +191,7 @@ describe("<RoomPreviewBar />", () => {
const onForgetClick = jest.fn();
const room = createRoom(roomId, otherUserId);
jest.spyOn(room, "getMember").mockReturnValue(
makeMockRoomMember({ isKicked: true, membership: "leave", oldMembership: "knock" }),
makeMockRoomMember({ isKicked: true, membership: Membership.Leave, oldMembership: Membership.Knock }),
);
const component = getComponent({ room, promptAskToJoin: true, onForgetClick });
@ -201,7 +201,7 @@ describe("<RoomPreviewBar />", () => {
it("renders banned message", () => {
const room = createRoom(roomId, otherUserId);
jest.spyOn(room, "getMember").mockReturnValue(makeMockRoomMember({ membership: "ban" }));
jest.spyOn(room, "getMember").mockReturnValue(makeMockRoomMember({ membership: Membership.Ban }));
const component = getComponent({ loading: true, room });
expect(getMessage(component)).toMatchSnapshot();
@ -244,8 +244,8 @@ describe("<RoomPreviewBar />", () => {
const userMember = makeMockRoomMember({ userId });
const userMemberWithDmInvite = makeMockRoomMember({
userId,
membership: "invite",
memberContent: { is_direct: true, membership: "invite" },
membership: Membership.Invite,
memberContent: { is_direct: true, membership: Membership.Invite },
});
const inviterMember = makeMockRoomMember({
userId: inviterUserId,

View file

@ -68,7 +68,7 @@ describe("RoomPreviewCard", () => {
it("shows a beta pill on Jitsi video room invites", async () => {
jest.spyOn(room, "getType").mockReturnValue(RoomType.ElementVideo);
jest.spyOn(room, "getMyMembership").mockReturnValue("invite");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Invite);
enabledFeatures = ["feature_video_rooms"];
await renderPreview();
@ -77,7 +77,7 @@ describe("RoomPreviewCard", () => {
it("shows a beta pill on Element video room invites", async () => {
jest.spyOn(room, "getType").mockReturnValue(RoomType.UnstableCall);
jest.spyOn(room, "getMyMembership").mockReturnValue("invite");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Invite);
enabledFeatures = ["feature_video_rooms", "feature_element_call_video_rooms"];
await renderPreview();
@ -85,7 +85,7 @@ describe("RoomPreviewCard", () => {
});
it("doesn't show a beta pill on normal invites", async () => {
jest.spyOn(room, "getMyMembership").mockReturnValue("invite");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Invite);
await renderPreview();
expect(screen.queryByRole("button", { name: /beta/i })).toBeNull();
@ -93,7 +93,7 @@ describe("RoomPreviewCard", () => {
it("shows instructions on Jitsi video rooms invites if video rooms are disabled", async () => {
jest.spyOn(room, "getType").mockReturnValue(RoomType.ElementVideo);
jest.spyOn(room, "getMyMembership").mockReturnValue("invite");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Invite);
await renderPreview();
screen.getByText(/enable video rooms in labs/i);
@ -101,7 +101,7 @@ describe("RoomPreviewCard", () => {
it("shows instructions on Element video rooms invites if video rooms are disabled", async () => {
jest.spyOn(room, "getType").mockReturnValue(RoomType.UnstableCall);
jest.spyOn(room, "getMyMembership").mockReturnValue("invite");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Invite);
enabledFeatures = ["feature_element_call_video_rooms"];
await renderPreview();

View file

@ -187,7 +187,7 @@ describe("RoomTile", () => {
return name === "feature_ask_to_join";
});
mocked(shouldShowComponent).mockReturnValue(true);
jest.spyOn(room, "getMyMembership").mockReturnValue("knock");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Knock);
const { container } = renderRoomTile();
expect(container.querySelector(".mx_RoomTile_sticky")).toBeInTheDocument();
expect(screen.queryByRole("button", { name: "Room options" })).not.toBeInTheDocument();
@ -198,9 +198,15 @@ describe("RoomTile", () => {
return name === "feature_ask_to_join";
});
mocked(shouldShowComponent).mockReturnValue(true);
const roomMember = mkRoomMember(room.roomId, MatrixClientPeg.get()!.getSafeUserId(), "leave", true, {
membership: "knock",
});
const roomMember = mkRoomMember(
room.roomId,
MatrixClientPeg.get()!.getSafeUserId(),
Membership.Leave,
true,
{
membership: Membership.Knock,
},
);
jest.spyOn(room, "getMember").mockReturnValue(roomMember);
const { container } = renderRoomTile();
expect(container.querySelector(".mx_RoomTile_sticky")).toBeInTheDocument();

View file

@ -177,7 +177,7 @@ describe("<JoinRuleSettings />", () => {
const memberBob = new RoomMember(roomId, "@bob:server.org");
const memberCharlie = new RoomMember(roomId, "@charlie:server.org");
jest.spyOn(room, "getMembersWithMembership").mockImplementation((membership) =>
membership === "join" ? [memberAlice, memberBob] : [memberCharlie],
membership === Membership.Join ? [memberAlice, memberBob] : [memberCharlie],
);
const upgradedRoom = new Room(newRoomId, client, userId);
setRoomStateEvents(upgradedRoom, preferredRoomVersion);

View file

@ -91,7 +91,7 @@ describe("PeopleRoomSettingsTab", () => {
content: {
avatar_url: "mxc://example.org/albert-einstein.png",
displayname: "Albert Einstein",
membership: "knock",
membership: Membership.Knock,
reason,
},
origin_server_ts: -464140800000,
@ -110,7 +110,7 @@ describe("PeopleRoomSettingsTab", () => {
new MatrixEvent({
content: {
displayname: "albert.einstein",
membership: "knock",
membership: Membership.Knock,
},
type: EventType.RoomMember,
}),
@ -138,7 +138,7 @@ describe("PeopleRoomSettingsTab", () => {
new MatrixEvent({
content: {
displayname: "albert.einstein",
membership: "knock",
membership: Membership.Knock,
reason,
},
type: EventType.RoomMember,

View file

@ -197,7 +197,7 @@ describe("RolesRoomSettingsTab", () => {
new MatrixEvent({
type: EventType.RoomMember,
content: {
membership: "ban",
membership: Membership.Ban,
reason: "just testing",
},
sender: userId,
@ -218,7 +218,7 @@ describe("RolesRoomSettingsTab", () => {
new MatrixEvent({
type: EventType.RoomMember,
content: {
membership: "ban",
membership: Membership.Ban,
reason: "just testing",
},
sender: userId,