-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Expand file tree
/
Copy pathrecording.test.ts
More file actions
92 lines (81 loc) · 2.49 KB
/
Copy pathrecording.test.ts
File metadata and controls
92 lines (81 loc) · 2.49 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import { beforeEach, describe, expect, it, vi } from "vitest";
const companionInfo = {
paths: ["C:\\Recordly\\recording.mic.wav"],
startDelayMsByPath: {
"C:\\Recordly\\recording.mic.wav": 143,
},
mediaInfoByPath: {
"C:\\Recordly\\recording.mic.wav": {
durationMs: 147_360,
sampleRate: 48_000,
channels: 1,
hasAudioStream: true,
},
},
};
const getCompanionAudioFallbackInfoMock = vi.fn();
const rememberApprovedLocalReadPathMock = vi.fn(async () => undefined);
vi.mock("electron", () => ({
app: {
getAppPath: () => process.cwd(),
getPath: () => process.cwd(),
isPackaged: false,
},
BrowserWindow: {
getAllWindows: () => [],
},
desktopCapturer: {
getSources: vi.fn(),
},
dialog: {
showMessageBox: vi.fn(),
},
ipcMain: {
handle: vi.fn(),
},
shell: {
openExternal: vi.fn(),
},
systemPreferences: {
getMediaAccessStatus: vi.fn(),
askForMediaAccess: vi.fn(),
},
}));
vi.mock("../recording/diagnostics", () => ({
getCompanionAudioFallbackInfo: getCompanionAudioFallbackInfoMock,
getFileSizeIfPresent: vi.fn(),
recordNativeCaptureDiagnostics: vi.fn(),
summarizeMicrophoneChunkTiming: vi.fn(),
validateRecordedVideo: vi.fn(),
writeRecordingDiagnosticsSnapshot: vi.fn(),
}));
vi.mock("../project/manager", () => ({
rememberApprovedLocalReadPath: rememberApprovedLocalReadPathMock,
}));
describe("resolveVideoAudioFallbackPathsForIpc", () => {
beforeEach(() => {
getCompanionAudioFallbackInfoMock.mockReset();
rememberApprovedLocalReadPathMock.mockClear();
});
it("returns companion media info so renderer playback and waveforms can use probed duration", async () => {
getCompanionAudioFallbackInfoMock.mockResolvedValue(companionInfo);
const videoPath = "C:\\Recordly\\recording.mp4";
const { resolveVideoAudioFallbackPathsForIpc } = await import("./recording");
await expect(resolveVideoAudioFallbackPathsForIpc(videoPath)).resolves.toEqual({
success: true,
...companionInfo,
});
expect(rememberApprovedLocalReadPathMock).toHaveBeenCalledWith(videoPath);
expect(rememberApprovedLocalReadPathMock).toHaveBeenCalledWith(companionInfo.paths[0]);
});
it("returns a stable empty shape when no video path is available", async () => {
const { resolveVideoAudioFallbackPathsForIpc } = await import("./recording");
await expect(resolveVideoAudioFallbackPathsForIpc("")).resolves.toEqual({
success: true,
paths: [],
startDelayMsByPath: {},
mediaInfoByPath: {},
});
expect(getCompanionAudioFallbackInfoMock).not.toHaveBeenCalled();
});
});