Merge pull request #28538 from element-hq/t3chguy/fix/20721

This commit is contained in:
Michael Telatynski
2024-12-02 11:23:18 +00:00
committed by GitHub
24 changed files with 212 additions and 89 deletions
@@ -18,6 +18,9 @@ import { ActiveRoomChangedPayload } from "../../../../src/dispatcher/payloads/Ac
import RightPanelStore from "../../../../src/stores/right-panel/RightPanelStore";
import { RightPanelPhases } from "../../../../src/stores/right-panel/RightPanelStorePhases";
import SettingsStore from "../../../../src/settings/SettingsStore";
import { pendingVerificationRequestForUser } from "../../../../src/verification.ts";
jest.mock("../../../../src/verification");
describe("RightPanelStore", () => {
// Mock out the settings store so the right panel store can't persist values between tests
@@ -97,7 +100,7 @@ describe("RightPanelStore", () => {
it("does nothing if given an invalid state", async () => {
await viewRoom("!1:example.org");
// Needs a member specified to be valid
store.setCard({ phase: RightPanelPhases.RoomMemberInfo }, true, "!1:example.org");
store.setCard({ phase: RightPanelPhases.MemberInfo }, true, "!1:example.org");
expect(store.roomPhaseHistory).toEqual([]);
});
it("only creates a single history entry if given the same card twice", async () => {
@@ -114,15 +117,15 @@ describe("RightPanelStore", () => {
it("overwrites history if changing the phase", async () => {
await viewRoom("!1:example.org");
store.setCard({ phase: RightPanelPhases.RoomSummary }, true, "!1:example.org");
store.setCard({ phase: RightPanelPhases.RoomMemberList }, true, "!1:example.org");
expect(store.roomPhaseHistory).toEqual([{ phase: RightPanelPhases.RoomMemberList, state: {} }]);
store.setCard({ phase: RightPanelPhases.MemberList }, true, "!1:example.org");
expect(store.roomPhaseHistory).toEqual([{ phase: RightPanelPhases.MemberList, state: {} }]);
});
});
describe("setCards", () => {
it("overwrites history", async () => {
await viewRoom("!1:example.org");
store.setCard({ phase: RightPanelPhases.RoomMemberList }, true, "!1:example.org");
store.setCard({ phase: RightPanelPhases.MemberList }, true, "!1:example.org");
store.setCards(
[{ phase: RightPanelPhases.RoomSummary }, { phase: RightPanelPhases.PinnedMessages }],
true,
@@ -200,21 +203,40 @@ describe("RightPanelStore", () => {
store.setCards(
[
{
phase: RightPanelPhases.RoomMemberList,
phase: RightPanelPhases.MemberList,
},
{
phase: RightPanelPhases.RoomMemberInfo,
phase: RightPanelPhases.MemberInfo,
state: { member: new RoomMember("!1:example.org", "@alice:example.org") },
},
],
true,
"!1:example.org",
);
expect(store.currentCardForRoom("!1:example.org").phase).toEqual(RightPanelPhases.RoomMemberInfo);
expect(store.currentCardForRoom("!1:example.org").phase).toEqual(RightPanelPhases.MemberInfo);
// Switch away and back
await viewRoom("!2:example.org");
await viewRoom("!1:example.org");
expect(store.currentCardForRoom("!1:example.org").phase).toEqual(RightPanelPhases.RoomMemberList);
expect(store.currentCardForRoom("!1:example.org").phase).toEqual(RightPanelPhases.MemberList);
});
it("should redirect to verification if set to phase MemberInfo for a user with a pending verification", async () => {
const member = new RoomMember("!1:example.org", "@alice:example.org");
const verificationRequest = { mockVerificationRequest: true } as any;
mocked(pendingVerificationRequestForUser).mockReturnValue(verificationRequest);
await viewRoom("!1:example.org");
store.setCard(
{
phase: RightPanelPhases.MemberInfo,
state: { member },
},
true,
"!1:example.org",
);
expect(store.currentCard).toEqual({
phase: RightPanelPhases.EncryptionPanel,
state: { member, verificationRequest },
});
});
});
@@ -30,7 +30,7 @@ describe("onView3pidInvite()", () => {
};
onView3pidInvite(payload, rightPanelStore);
expect(rightPanelStore.showOrHidePhase).toHaveBeenCalledWith(RightPanelPhases.RoomMemberList);
expect(rightPanelStore.showOrHidePhase).toHaveBeenCalledWith(RightPanelPhases.MemberList);
expect(rightPanelStore.pushCard).not.toHaveBeenCalled();
});
@@ -43,7 +43,7 @@ describe("onView3pidInvite()", () => {
expect(rightPanelStore.showOrHidePhase).not.toHaveBeenCalled();
expect(rightPanelStore.pushCard).toHaveBeenCalledWith({
phase: RightPanelPhases.Room3pidMemberInfo,
phase: RightPanelPhases.ThreePidMemberInfo,
state: { memberInfoEvent: payload.event },
});
});