You've already forked matrix-react-sdk
mirror of
https://github.com/matrix-org/matrix-react-sdk.git
synced 2025-07-28 15:22:05 +03:00
Replace setImmediate with setTimeout (#12614)
This commit is contained in:
committed by
GitHub
parent
21ae29c002
commit
8b4e3e6647
@ -20,6 +20,7 @@ import { ReceiptType, MatrixClient, PendingEventOrdering, Room } from "matrix-js
|
||||
import { KnownMembership } from "matrix-js-sdk/src/types";
|
||||
import React from "react";
|
||||
import userEvent from "@testing-library/user-event";
|
||||
import { sleep } from "matrix-js-sdk/src/utils";
|
||||
|
||||
import { ChevronFace } from "../../../../src/components/structures/ContextMenu";
|
||||
import {
|
||||
@ -141,7 +142,7 @@ describe("RoomGeneralContextMenu", () => {
|
||||
const markAsReadBtn = getByLabelText(container, "Mark as read");
|
||||
fireEvent.click(markAsReadBtn);
|
||||
|
||||
await new Promise(setImmediate);
|
||||
await sleep(0);
|
||||
|
||||
expect(mockClient.sendReadReceipt).toHaveBeenCalledWith(event, ReceiptType.Read, true);
|
||||
expect(onFinished).toHaveBeenCalled();
|
||||
@ -155,7 +156,7 @@ describe("RoomGeneralContextMenu", () => {
|
||||
const markAsUnreadBtn = getByLabelText(container, "Mark as unread");
|
||||
fireEvent.click(markAsUnreadBtn);
|
||||
|
||||
await new Promise(setImmediate);
|
||||
await sleep(0);
|
||||
|
||||
expect(mockClient.setRoomAccountData).toHaveBeenCalledWith(ROOM_ID, "com.famedly.marked_unread", {
|
||||
unread: true,
|
||||
|
@ -26,6 +26,7 @@ import {
|
||||
} from "matrix-js-sdk/src/matrix";
|
||||
import { act, fireEvent, getByTestId, render, RenderResult, screen, waitFor } from "@testing-library/react";
|
||||
import userEvent from "@testing-library/user-event";
|
||||
import { sleep } from "matrix-js-sdk/src/utils";
|
||||
|
||||
import { MatrixClientPeg } from "../../../../src/MatrixClientPeg";
|
||||
import ForwardDialog from "../../../../src/components/views/dialogs/ForwardDialog";
|
||||
@ -199,7 +200,7 @@ describe("ForwardDialog", () => {
|
||||
await act(async () => {
|
||||
cancelSend();
|
||||
// Wait one tick for the button to realize the send failed
|
||||
await new Promise((resolve) => setImmediate(resolve));
|
||||
await sleep(0);
|
||||
});
|
||||
update();
|
||||
expect(firstButton.className).toContain("mx_ForwardList_sendFailed");
|
||||
@ -215,7 +216,7 @@ describe("ForwardDialog", () => {
|
||||
await act(async () => {
|
||||
finishSend();
|
||||
// Wait one tick for the button to realize the send succeeded
|
||||
await new Promise((resolve) => setImmediate(resolve));
|
||||
await sleep(0);
|
||||
});
|
||||
update();
|
||||
expect(secondButton.className).toContain("mx_ForwardList_sent");
|
||||
|
@ -32,6 +32,7 @@ import {
|
||||
import { PollStartEvent } from "matrix-js-sdk/src/extensible_events_v1/PollStartEvent";
|
||||
import { PollResponseEvent } from "matrix-js-sdk/src/extensible_events_v1/PollResponseEvent";
|
||||
import { PollEndEvent } from "matrix-js-sdk/src/extensible_events_v1/PollEndEvent";
|
||||
import { sleep } from "matrix-js-sdk/src/utils";
|
||||
|
||||
import { stubClient, mkEvent, mkMessage, flushPromises } from "../../../test-utils";
|
||||
import { MatrixClientPeg } from "../../../../src/MatrixClientPeg";
|
||||
@ -98,7 +99,7 @@ describe("<PinnedMessagesCard />", () => {
|
||||
</MatrixClientContext.Provider>,
|
||||
);
|
||||
// Wait a tick for state updates
|
||||
await new Promise((resolve) => setImmediate(resolve));
|
||||
await sleep(0);
|
||||
});
|
||||
|
||||
return pins;
|
||||
@ -114,7 +115,7 @@ describe("<PinnedMessagesCard />", () => {
|
||||
// @ts-ignore what is going on here?
|
||||
pinListener(room.currentState.getStateEvents());
|
||||
// Wait a tick for state updates
|
||||
await new Promise((resolve) => setImmediate(resolve));
|
||||
await sleep(0);
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -18,6 +18,7 @@ import React, { ComponentProps } from "react";
|
||||
import { render, fireEvent, RenderResult, waitFor } from "@testing-library/react";
|
||||
import { Room, RoomMember, MatrixError, IContent } from "matrix-js-sdk/src/matrix";
|
||||
import { KnownMembership } from "matrix-js-sdk/src/types";
|
||||
import { sleep } from "matrix-js-sdk/src/utils";
|
||||
|
||||
import { withClientContextRenderOptions, stubClient } from "../../../test-utils";
|
||||
import { MatrixClientPeg } from "../../../../src/MatrixClientPeg";
|
||||
@ -373,7 +374,7 @@ describe("<RoomPreviewBar />", () => {
|
||||
const onJoinClick = jest.fn();
|
||||
const onRejectClick = jest.fn();
|
||||
const component = getComponent({ ...props, onJoinClick, onRejectClick });
|
||||
await new Promise(setImmediate);
|
||||
await sleep(0);
|
||||
expect(getPrimaryActionButton(component)).toBeTruthy();
|
||||
if (expectSecondaryButton) expect(getSecondaryActionButton(component)).toBeFalsy();
|
||||
fireEvent.click(getPrimaryActionButton(component)!);
|
||||
@ -387,7 +388,7 @@ describe("<RoomPreviewBar />", () => {
|
||||
|
||||
it("renders error message", async () => {
|
||||
const component = getComponent({ inviterName, invitedEmail });
|
||||
await new Promise(setImmediate);
|
||||
await sleep(0);
|
||||
|
||||
expect(getMessage(component)).toMatchSnapshot();
|
||||
});
|
||||
@ -404,7 +405,7 @@ describe("<RoomPreviewBar />", () => {
|
||||
|
||||
it("renders invite message with invited email", async () => {
|
||||
const component = getComponent({ inviterName, invitedEmail });
|
||||
await new Promise(setImmediate);
|
||||
await sleep(0);
|
||||
|
||||
expect(getMessage(component)).toMatchSnapshot();
|
||||
});
|
||||
@ -420,7 +421,7 @@ describe("<RoomPreviewBar />", () => {
|
||||
|
||||
it("renders invite message with invited email", async () => {
|
||||
const component = getComponent({ inviterName, invitedEmail });
|
||||
await new Promise(setImmediate);
|
||||
await sleep(0);
|
||||
|
||||
expect(getMessage(component)).toMatchSnapshot();
|
||||
});
|
||||
@ -438,7 +439,7 @@ describe("<RoomPreviewBar />", () => {
|
||||
it("renders email mismatch message when invite email mxid doesnt match", async () => {
|
||||
MatrixClientPeg.safeGet().lookupThreePid = jest.fn().mockReturnValue({ mxid: "not userid" });
|
||||
const component = getComponent({ inviterName, invitedEmail });
|
||||
await new Promise(setImmediate);
|
||||
await sleep(0);
|
||||
|
||||
expect(getMessage(component)).toMatchSnapshot();
|
||||
expect(MatrixClientPeg.safeGet().lookupThreePid).toHaveBeenCalledWith(
|
||||
@ -452,7 +453,7 @@ describe("<RoomPreviewBar />", () => {
|
||||
it("renders invite message when invite email mxid match", async () => {
|
||||
MatrixClientPeg.safeGet().lookupThreePid = jest.fn().mockReturnValue({ mxid: userId });
|
||||
const component = getComponent({ inviterName, invitedEmail });
|
||||
await new Promise(setImmediate);
|
||||
await sleep(0);
|
||||
|
||||
expect(getMessage(component)).toMatchSnapshot();
|
||||
await testJoinButton({ inviterName, invitedEmail }, false)();
|
||||
|
@ -18,11 +18,6 @@ import fetchMock from "fetch-mock-jest";
|
||||
import { TextDecoder, TextEncoder } from "util";
|
||||
import { Response } from "node-fetch";
|
||||
|
||||
// jest 27 removes setImmediate from jsdom
|
||||
// polyfill until setImmediate use in client can be removed
|
||||
// @ts-ignore - we know the contract is wrong. That's why we're stubbing it.
|
||||
global.setImmediate = (callback) => window.setTimeout(callback, 0);
|
||||
|
||||
// Stub ResizeObserver
|
||||
// @ts-ignore - we know it's a duplicate (that's why we're stubbing it)
|
||||
class ResizeObserver {
|
||||
|
@ -16,6 +16,7 @@ limitations under the License.
|
||||
|
||||
import { mocked } from "jest-mock";
|
||||
import { SyncState } from "matrix-js-sdk/src/matrix";
|
||||
import { sleep } from "matrix-js-sdk/src/utils";
|
||||
|
||||
import { MatrixClientPeg } from "../../src/MatrixClientPeg";
|
||||
import ToastStore from "../../src/stores/ToastStore";
|
||||
@ -40,7 +41,7 @@ describe("LifecycleStore", () => {
|
||||
prevState: SyncState.Prepared,
|
||||
});
|
||||
|
||||
await new Promise(setImmediate);
|
||||
await sleep(0);
|
||||
|
||||
expect(addOrReplaceToast).not.toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
@ -58,7 +59,7 @@ describe("LifecycleStore", () => {
|
||||
prevState: SyncState.Prepared,
|
||||
});
|
||||
|
||||
await new Promise(setImmediate);
|
||||
await sleep(0);
|
||||
|
||||
expect(addOrReplaceToast).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
@ -77,7 +78,7 @@ describe("LifecycleStore", () => {
|
||||
prevState: SyncState.Prepared,
|
||||
});
|
||||
|
||||
await new Promise(setImmediate);
|
||||
await sleep(0);
|
||||
|
||||
addOrReplaceToast.mock.calls[0][0].props.onAccept();
|
||||
|
||||
|
@ -323,7 +323,6 @@ describe("RoomListStore", () => {
|
||||
const algorithmSpy = jest.spyOn(store.algorithm, "handleRoomUpdate").mockReturnValue(undefined);
|
||||
// @ts-ignore cheat and call protected fn
|
||||
store.onAction({ action: "MatrixActions.accountData", event, previousEvent });
|
||||
// flush setImmediate
|
||||
await flushPromises();
|
||||
|
||||
expect(algorithmSpy).toHaveBeenCalledWith(normalRoom, RoomUpdateCause.PossibleMuteChange);
|
||||
@ -346,7 +345,6 @@ describe("RoomListStore", () => {
|
||||
|
||||
// @ts-ignore cheat and call protected fn
|
||||
store.onAction({ action: "MatrixActions.accountData", event, previousEvent });
|
||||
// flush setImmediate
|
||||
await flushPromises();
|
||||
|
||||
// only one call to update made for normalRoom
|
||||
|
@ -16,6 +16,7 @@ limitations under the License.
|
||||
|
||||
import { mocked, Mocked } from "jest-mock";
|
||||
import { MatrixClient, Room } from "matrix-js-sdk/src/matrix";
|
||||
import { sleep } from "matrix-js-sdk/src/utils";
|
||||
|
||||
import { MatrixClientPeg } from "../../src/MatrixClientPeg";
|
||||
import { mkRoom, resetAsyncStoreWithClient, setupAsyncStoreWithClient, stubClient } from "../test-utils";
|
||||
@ -78,7 +79,7 @@ describe("leaveRoomBehaviour", () => {
|
||||
const expectDispatch = async <T extends ActionPayload>(payload: T) => {
|
||||
const dispatcherSpy = jest.fn();
|
||||
const dispatcherRef = defaultDispatcher.register(dispatcherSpy);
|
||||
await new Promise<void>((resolve) => setImmediate(resolve)); // Flush the dispatcher
|
||||
await sleep(0);
|
||||
expect(dispatcherSpy).toHaveBeenCalledWith(payload);
|
||||
defaultDispatcher.unregister(dispatcherRef);
|
||||
};
|
||||
|
Reference in New Issue
Block a user