matrix-react-sdk
Version:
SDK for matrix.org using React
82 lines (81 loc) • 3.29 kB
TypeScript
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>>;