File size: 1,378 Bytes
fc93158
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import type { Mock } from "vitest";
import { vi } from "vitest";

type MatrixBotSdkMockParams = {
  matrixClient?: unknown;
  simpleFsStorageProvider?: unknown;
  rustSdkCryptoStorageProvider?: unknown;
  includeVerboseLogService?: boolean;
};

type MatrixBotSdkMock = {
  ConsoleLogger: new () => {
    trace: Mock<() => void>;
    debug: Mock<() => void>;
    info: Mock<() => void>;
    warn: Mock<() => void>;
    error: Mock<() => void>;
  };
  MatrixClient: unknown;
  LogService: {
    setLogger: Mock<() => void>;
    warn?: Mock<() => void>;
    info?: Mock<() => void>;
    debug?: Mock<() => void>;
  };
  SimpleFsStorageProvider: unknown;
  RustSdkCryptoStorageProvider: unknown;
};

export function createMatrixBotSdkMock(params: MatrixBotSdkMockParams = {}): MatrixBotSdkMock {
  return {
    ConsoleLogger: class {
      trace = vi.fn();
      debug = vi.fn();
      info = vi.fn();
      warn = vi.fn();
      error = vi.fn();
    },
    MatrixClient: params.matrixClient ?? class {},
    LogService: {
      setLogger: vi.fn(),
      ...(params.includeVerboseLogService
        ? {
            warn: vi.fn(),
            info: vi.fn(),
            debug: vi.fn(),
          }
        : {}),
    },
    SimpleFsStorageProvider: params.simpleFsStorageProvider ?? class {},
    RustSdkCryptoStorageProvider: params.rustSdkCryptoStorageProvider ?? class {},
  };
}