Introduce Membership type
This commit is contained in:
parent
3c6fd58628
commit
da99bad7b9
115 changed files with 582 additions and 526 deletions
|
@ -168,10 +168,10 @@ describe("MultiInviter", () => {
|
|||
const room = new Room(ROOMID, client, client.getSafeUserId());
|
||||
mocked(client.getRoom).mockReturnValue(room);
|
||||
const ourMember = new RoomMember(ROOMID, client.getSafeUserId());
|
||||
ourMember.membership = "join";
|
||||
ourMember.membership = Membership.Join;
|
||||
ourMember.powerLevel = 100;
|
||||
const member = new RoomMember(ROOMID, MXID1);
|
||||
member.membership = "ban";
|
||||
member.membership = Membership.Ban;
|
||||
member.powerLevel = 0;
|
||||
room.getMember = (userId: string) => {
|
||||
if (userId === client.getSafeUserId()) return ourMember;
|
||||
|
|
|
@ -86,7 +86,7 @@ describe("direct-messages", () => {
|
|||
});
|
||||
|
||||
room1 = new Room("!room1:example.com", mockClient, userId1);
|
||||
room1.getMyMembership = () => "join";
|
||||
room1.getMyMembership = () => Membership.Join;
|
||||
|
||||
localRoom = new LocalRoom(LOCAL_ROOM_ID_PREFIX + "test", mockClient, userId1);
|
||||
|
||||
|
|
|
@ -37,16 +37,16 @@ function assertLocalRoom(room: LocalRoom, targets: Member[], encrypted: boolean)
|
|||
expect(room.name).toBe(targets.length ? targets[0].name : "Empty Room");
|
||||
expect(room.encrypted).toBe(encrypted);
|
||||
expect(room.targets).toEqual(targets);
|
||||
expect(room.getMyMembership()).toBe("join");
|
||||
expect(room.getMyMembership()).toBe(Membership.Join);
|
||||
|
||||
const roomCreateEvent = room.currentState.getStateEvents(EventType.RoomCreate)[0];
|
||||
expect(roomCreateEvent).toBeDefined();
|
||||
expect(roomCreateEvent.getContent()["room_version"]).toBe(KNOWN_SAFE_ROOM_VERSION);
|
||||
|
||||
// check that the user and all targets are joined
|
||||
expect(room.getMember("@userId:matrix.org")?.membership).toBe("join");
|
||||
expect(room.getMember("@userId:matrix.org").membership).toBe(Membership.Join);
|
||||
targets.forEach((target: Member) => {
|
||||
expect(room.getMember(target.userId)?.membership).toBe("join");
|
||||
expect(room.getMember(target.userId).membership).toBe(Membership.Join);
|
||||
});
|
||||
|
||||
if (encrypted) {
|
||||
|
|
|
@ -51,32 +51,32 @@ describe("findDMForUser", () => {
|
|||
mocked(getFunctionalMembers).mockReturnValue([botId]);
|
||||
|
||||
room1 = new Room("!room1:example.com", mockClient, userId1);
|
||||
room1.getMyMembership = () => "join";
|
||||
room1.getMyMembership = () => Membership.Join;
|
||||
room1.currentState.setStateEvents([
|
||||
makeMembershipEvent(room1.roomId, userId1, "join"),
|
||||
makeMembershipEvent(room1.roomId, userId2, "join"),
|
||||
makeMembershipEvent(room1.roomId, userId1, Membership.Join),
|
||||
makeMembershipEvent(room1.roomId, userId2, Membership.Join),
|
||||
]);
|
||||
|
||||
// this should not be a DM room because it is a local room
|
||||
room2 = new LocalRoom("!room2:example.com", mockClient, userId1);
|
||||
room2.getMyMembership = () => "join";
|
||||
room2.getMyMembership = () => Membership.Join;
|
||||
room2.getLastActiveTimestamp = () => 100;
|
||||
|
||||
room3 = new Room("!room3:example.com", mockClient, userId1);
|
||||
room3.getMyMembership = () => "join";
|
||||
room3.getMyMembership = () => Membership.Join;
|
||||
room3.currentState.setStateEvents([
|
||||
makeMembershipEvent(room3.roomId, userId1, "join"),
|
||||
makeMembershipEvent(room3.roomId, userId2, "join"),
|
||||
makeMembershipEvent(room3.roomId, userId1, Membership.Join),
|
||||
makeMembershipEvent(room3.roomId, userId2, Membership.Join),
|
||||
// Adding the bot user here. Should be excluded when determining if the room is a DM.
|
||||
makeMembershipEvent(room3.roomId, botId, "join"),
|
||||
makeMembershipEvent(room3.roomId, botId, Membership.Join),
|
||||
]);
|
||||
|
||||
// this should not be a DM room because it has only one joined user
|
||||
room4 = new Room("!room4:example.com", mockClient, userId1);
|
||||
room4.getMyMembership = () => "join";
|
||||
room4.getMyMembership = () => Membership.Join;
|
||||
room4.currentState.setStateEvents([
|
||||
makeMembershipEvent(room4.roomId, userId1, "invite"),
|
||||
makeMembershipEvent(room4.roomId, userId2, "join"),
|
||||
makeMembershipEvent(room4.roomId, userId1, Membership.Invite),
|
||||
makeMembershipEvent(room4.roomId, userId2, Membership.Join),
|
||||
]);
|
||||
|
||||
// this should not be a DM room because it has no users
|
||||
|
@ -85,17 +85,17 @@ describe("findDMForUser", () => {
|
|||
|
||||
// room not correctly stored in userId → room map; should be found by the "all rooms" fallback
|
||||
room6 = new Room("!room6:example.com", mockClient, userId1);
|
||||
room6.getMyMembership = () => "join";
|
||||
room6.getMyMembership = () => Membership.Join;
|
||||
room6.currentState.setStateEvents([
|
||||
makeMembershipEvent(room6.roomId, userId1, "join"),
|
||||
makeMembershipEvent(room6.roomId, userId3, "join"),
|
||||
makeMembershipEvent(room6.roomId, userId1, Membership.Join),
|
||||
makeMembershipEvent(room6.roomId, userId3, Membership.Join),
|
||||
]);
|
||||
|
||||
// room with pending third-party invite
|
||||
room7 = new Room("!room7:example.com", mockClient, userId1);
|
||||
room7.getMyMembership = () => "join";
|
||||
room7.getMyMembership = () => Membership.Join;
|
||||
room7.currentState.setStateEvents([
|
||||
makeMembershipEvent(room7.roomId, userId1, "join"),
|
||||
makeMembershipEvent(room7.roomId, userId1, Membership.Join),
|
||||
mkThirdPartyInviteEvent(thirdPartyId, "third-party", room7.roomId),
|
||||
]);
|
||||
|
||||
|
|
|
@ -201,8 +201,8 @@ describe("export", function () {
|
|||
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
|
||||
} as unknown as RoomMember,
|
||||
ts: ts0 + i * 1000,
|
||||
mship: "join",
|
||||
prevMship: "join",
|
||||
mship: Membership.Join,
|
||||
prevMship: Membership.Join,
|
||||
name: "A user",
|
||||
}),
|
||||
);
|
||||
|
|
|
@ -36,7 +36,7 @@ describe("local-room", () => {
|
|||
beforeEach(() => {
|
||||
client = createTestClient();
|
||||
room1 = new Room("!room1:example.com", client, userId1);
|
||||
room1.getMyMembership = () => "join";
|
||||
room1.getMyMembership = () => Membership.Join;
|
||||
localRoom = new LocalRoom(LOCAL_ROOM_ID_PREFIX + "test", client, "@test:example.com");
|
||||
mocked(client.getRoom).mockImplementation((roomId: string) => {
|
||||
if (roomId === localRoom.roomId) {
|
||||
|
|
|
@ -33,7 +33,7 @@ describe("isRoomReady", () => {
|
|||
beforeEach(() => {
|
||||
client = createTestClient();
|
||||
room1 = new Room("!room1:example.com", client, userId1);
|
||||
room1.getMyMembership = () => "join";
|
||||
room1.getMyMembership = () => Membership.Join;
|
||||
localRoom = new LocalRoom(LOCAL_ROOM_ID_PREFIX + "test", client, "@test:example.com");
|
||||
});
|
||||
|
||||
|
@ -70,8 +70,8 @@ describe("isRoomReady", () => {
|
|||
describe("and all members have been invited or joined", () => {
|
||||
beforeEach(() => {
|
||||
room1.currentState.setStateEvents([
|
||||
makeMembershipEvent(room1.roomId, userId1, "join"),
|
||||
makeMembershipEvent(room1.roomId, userId2, "invite"),
|
||||
makeMembershipEvent(room1.roomId, userId1, Membership.Join),
|
||||
makeMembershipEvent(room1.roomId, userId2, Membership.Invite),
|
||||
]);
|
||||
});
|
||||
|
||||
|
|
|
@ -31,16 +31,16 @@ describe("isKnockDenied", () => {
|
|||
});
|
||||
|
||||
it("checks that the user knock has been denied", () => {
|
||||
const roomMember = mkRoomMember(room.roomId, userId, "leave", true, { membership: "knock" });
|
||||
const roomMember = mkRoomMember(room.roomId, userId, Membership.Leave, true, { membership: Membership.Knock });
|
||||
jest.spyOn(room, "getMember").mockReturnValue(roomMember);
|
||||
expect(isKnockDenied(room)).toBe(true);
|
||||
});
|
||||
|
||||
it.each([
|
||||
{ membership: "leave", isKicked: false, prevMembership: "invite" },
|
||||
{ membership: "leave", isKicked: true, prevMembership: "invite" },
|
||||
{ membership: "leave", isKicked: false, prevMembership: "join" },
|
||||
{ membership: "leave", isKicked: true, prevMembership: "join" },
|
||||
{ membership: Membership.Leave, isKicked: false, prevMembership: Membership.Invite },
|
||||
{ membership: Membership.Leave, isKicked: true, prevMembership: Membership.Invite },
|
||||
{ membership: Membership.Leave, isKicked: false, prevMembership: Membership.Join },
|
||||
{ membership: Membership.Leave, isKicked: true, prevMembership: Membership.Join },
|
||||
])("checks that the user knock has been not denied", ({ membership, isKicked, prevMembership }) => {
|
||||
const roomMember = mkRoomMember(room.roomId, userId, membership, isKicked, { membership: prevMembership });
|
||||
jest.spyOn(room, "getMember").mockReturnValue(roomMember);
|
||||
|
|
|
@ -45,7 +45,7 @@ describe("Permalinks", function () {
|
|||
members: RoomMember[],
|
||||
serverACLContent?: { deny?: string[]; allow?: string[] },
|
||||
): Room {
|
||||
members.forEach((m) => (m.membership = "join"));
|
||||
members.forEach((m) => (m.membership = Membership.Join));
|
||||
const powerLevelsUsers = members.reduce<Record<string, number>>((pl, member) => {
|
||||
if (Number.isFinite(member.powerLevel)) {
|
||||
pl[member.userId] = member.powerLevel;
|
||||
|
@ -152,11 +152,11 @@ describe("Permalinks", function () {
|
|||
const creator = new RoomPermalinkCreator(room, null);
|
||||
creator.load();
|
||||
expect(creator.serverCandidates![0]).toBe("pl_95");
|
||||
member95.membership = "left";
|
||||
member95.membership = Membership.Leave;
|
||||
// @ts-ignore illegal private property
|
||||
creator.onRoomStateUpdate();
|
||||
expect(creator.serverCandidates![0]).toBe("pl_75");
|
||||
member95.membership = "join";
|
||||
member95.membership = Membership.Join;
|
||||
// @ts-ignore illegal private property
|
||||
creator.onRoomStateUpdate();
|
||||
expect(creator.serverCandidates![0]).toBe("pl_95");
|
||||
|
|
|
@ -39,7 +39,7 @@ describe("canInviteTo()", () => {
|
|||
...mockClientMethodsUser(userId),
|
||||
});
|
||||
const room = new Room(roomId, client, userId);
|
||||
jest.spyOn(room, "getMyMembership").mockReturnValue("join");
|
||||
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Join);
|
||||
jest.spyOn(room, "getJoinRule").mockReturnValue(JoinRule.Public);
|
||||
jest.spyOn(room, "canInvite").mockReturnValue(true);
|
||||
return room;
|
||||
|
@ -54,7 +54,7 @@ describe("canInviteTo()", () => {
|
|||
|
||||
it("should return false when current user membership is not joined", () => {
|
||||
const room = makeRoom();
|
||||
jest.spyOn(room, "getMyMembership").mockReturnValue("invite");
|
||||
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Invite);
|
||||
|
||||
expect(canInviteTo(room)).toEqual(false);
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue