UNPKG

matrix-react-sdk

Version:
82 lines (81 loc) 3.29 kB
import EventEmitter from "events"; import { MethodLikeKeys, MockedObject, PropertyLikeKeys } from "jest-mock"; import { MatrixClient, Room } from "matrix-js-sdk/src/matrix"; /** * Mocked generic class with a real EventEmitter. * Useful for mocks which need event emitters. */ export declare class MockEventEmitter<T> extends EventEmitter { /** * Construct a new event emitter with additional properties/functions. The event emitter functions * like .emit and .on will be real. * @param mockProperties An object with the mock property or function implementations. 'getters' * are correctly cloned to this event emitter. */ constructor(mockProperties?: Partial<Record<MethodLikeKeys<T> | PropertyLikeKeys<T>, unknown>>); } /** * Mock client with real event emitter * useful for testing code that listens * to MatrixClient events */ export declare class MockClientWithEventEmitter extends EventEmitter { constructor(mockProperties?: Partial<Record<MethodLikeKeys<MatrixClient>, unknown>>); } /** * - make a mock client * - cast the type to mocked(MatrixClient) * - spy on MatrixClientPeg.get to return the mock * eg * ``` * const mockClient = getMockClientWithEventEmitter({ getUserId: jest.fn().mockReturnValue(aliceId), }); * ``` * * See also {@link stubClient} which does something similar but uses a more complete mock client. */ export declare const getMockClientWithEventEmitter: (mockProperties: Partial<Record<keyof MatrixClient, unknown>>) => MockedObject<MatrixClient>; export declare const unmockClientPeg: () => void; /** * Returns basic mocked client methods related to the current user * ``` * const mockClient = getMockClientWithEventEmitter({ ...mockClientMethodsUser('@mytestuser:domain'), }); * ``` */ export declare const mockClientMethodsUser: (userId?: string) => { getUserId: jest.Mock<any, any, any>; getDomain: jest.Mock<any, any, any>; getSafeUserId: jest.Mock<any, any, any>; getUser: jest.Mock<any, any, any>; isGuest: jest.Mock<any, any, any>; mxcUrlToHttp: jest.Mock<any, any, any>; credentials: { userId: string; }; getThreePids: jest.Mock<any, any, any>; getAccessToken: jest.Mock<any, any, any>; getDeviceId: jest.Mock<any, any, any>; getAccountData: jest.Mock<any, any, any>; }; /** * Returns basic mocked client methods related to rendering events * ``` * const mockClient = getMockClientWithEventEmitter({ ...mockClientMethodsUser('@mytestuser:domain'), }); * ``` */ export declare const mockClientMethodsEvents: () => { decryptEventIfNeeded: jest.Mock<any, any, any>; getPushActionsForEvent: jest.Mock<any, any, any>; }; /** * Returns basic mocked client methods related to server support */ export declare const mockClientMethodsServer: () => Partial<Record<MethodLikeKeys<MatrixClient>, unknown>>; export declare const mockClientMethodsDevice: (deviceId?: string) => Partial<Record<MethodLikeKeys<MatrixClient>, unknown>>; export declare const mockClientMethodsCrypto: () => Partial<Record<MethodLikeKeys<MatrixClient> & PropertyLikeKeys<MatrixClient>, unknown>>; export declare const mockClientMethodsRooms: (rooms?: Room[]) => Partial<Record<MethodLikeKeys<MatrixClient>, unknown>>;