adding monkeytype
Some checks failed
Mark Stale PRs / stale (push) Has been cancelled

This commit is contained in:
Benjamin Falch
2026-04-23 13:53:44 +02:00
parent e214a2fd35
commit 2bc741fb78
1930 changed files with 7590652 additions and 0 deletions

View File

@@ -0,0 +1,173 @@
import { describe, it, expect, beforeEach, vi } from "vitest";
import * as PresetController from "../../src/ts/controllers/preset-controller";
import { Preset } from "@monkeytype/schemas/presets";
import * as DB from "../../src/ts/db";
import { setConfig } from "../../src/ts/config/setters";
import { Config } from "../../src/ts/config/store";
import * as Lifecycle from "../../src/ts/config/lifecycle";
import * as ConfigUtils from "../../src/ts/config/utils";
import * as Persistence from "../../src/ts/config/persistence";
import * as Notifications from "../../src/ts/states/notifications";
import * as TestLogic from "../../src/ts/test/test-logic";
import * as TagController from "../../src/ts/controllers/tag-controller";
describe("PresetController", () => {
describe("apply", () => {
vi.mock("../../src/ts/test/test-logic", () => ({
restart: vi.fn(),
}));
vi.mock("../../src/ts/test/pace-caret", () => ({
//
}));
const dbGetSnapshotMock = vi.spyOn(DB, "getSnapshot");
const configApplyMock = vi.spyOn(Lifecycle, "applyConfig");
const configSaveFullConfigMock = vi.spyOn(
Persistence,
"saveFullConfigToLocalStorage",
);
const configGetConfigChangesMock = vi.spyOn(
ConfigUtils,
"getConfigChanges",
);
const notificationAddMock = vi.spyOn(
Notifications,
"showSuccessNotification",
);
const testRestartMock = vi.spyOn(TestLogic, "restart");
const tagControllerClearMock = vi.spyOn(TagController, "clear");
const tagControllerSetMock = vi.spyOn(TagController, "set");
const tagControllerSaveActiveMock = vi.spyOn(
TagController,
"saveActiveToLocalStorage",
);
beforeEach(() => {
[
dbGetSnapshotMock,
configApplyMock,
configSaveFullConfigMock,
configGetConfigChangesMock,
notificationAddMock,
testRestartMock,
tagControllerClearMock,
tagControllerSetMock,
tagControllerSaveActiveMock,
].forEach((it) => it.mockClear());
configApplyMock.mockResolvedValue();
});
it("should apply for full preset", async () => {
//GIVEN
const preset = givenPreset({ config: { punctuation: true } });
//WHEN
await PresetController.apply(preset._id);
//THEN
expect(configApplyMock).toHaveBeenCalledWith(preset.config);
expect(tagControllerClearMock).toHaveBeenCalled();
expect(testRestartMock).toHaveBeenCalled();
expect(notificationAddMock).toHaveBeenCalledWith("Preset applied", {
durationMs: 2000,
});
expect(configSaveFullConfigMock).toHaveBeenCalled();
});
it("should apply for full preset with tags", async () => {
//GIVEN
const preset = givenPreset({
config: { tags: ["tagOne", "tagTwo"] },
});
//WHEN
await PresetController.apply(preset._id);
//THEN
expect(tagControllerClearMock).toHaveBeenCalled();
expect(tagControllerSetMock).toHaveBeenNthCalledWith(
1,
"tagOne",
true,
false,
);
expect(tagControllerSetMock).toHaveBeenNthCalledWith(
2,
"tagTwo",
true,
false,
);
expect(tagControllerSaveActiveMock).toHaveBeenCalled();
});
it("should ignore unknown preset", async () => {
//WHEN
await PresetController.apply("unknown");
//THEN
expect(notificationAddMock).not.toHaveBeenCalled();
expect(configApplyMock).not.toHaveBeenCalled();
});
it("should apply for partial preset", async () => {
//GIVEN
const preset = givenPreset({
config: { punctuation: true },
settingGroups: ["test"],
});
setConfig("numbers", true);
const oldConfig = structuredClone(Config);
//WHEN
await PresetController.apply(preset._id);
//THEN
expect(configApplyMock).toHaveBeenCalledWith({
...oldConfig,
numbers: true,
punctuation: true,
});
expect(testRestartMock).toHaveBeenCalled();
expect(notificationAddMock).toHaveBeenCalledWith("Preset applied", {
durationMs: 2000,
});
expect(configSaveFullConfigMock).toHaveBeenCalled();
});
it("should apply for partial preset with tags", async () => {
//GIVEN
const preset = givenPreset({
config: { tags: ["tagOne", "tagTwo"] },
settingGroups: ["test", "behavior"],
});
//WHEN
await PresetController.apply(preset._id);
//THEN
expect(tagControllerClearMock).toHaveBeenCalled();
expect(tagControllerSetMock).toHaveBeenNthCalledWith(
1,
"tagOne",
true,
false,
);
expect(tagControllerSetMock).toHaveBeenNthCalledWith(
2,
"tagTwo",
true,
false,
);
expect(tagControllerSaveActiveMock).toHaveBeenCalled();
});
const givenPreset = (partialPreset: Partial<Preset>): Preset => {
const preset: Preset = {
_id: "1",
...partialPreset,
} as any;
dbGetSnapshotMock.mockReturnValue({ presets: [preset] } as any);
return preset;
};
});
});