Файли
openidea/src/features/app/__tests__/newProject.test.ts
T
l0ng-ai 6b9ab3b323 fix(settings): Export Settings includes IDE view options (#1095)
Project view options such as "Open Files with Single Click" live in localStorage under openidea.projectTree.options, which was not on the export allowlist, so Export/Import Settings dropped them.

Other IDE-level preferences stored the same way are exported and restored too: TODO patterns, IdeaVim settings, diff/merge options, branches popup options, markdown and image viewer defaults, reopen last project. Per-project state stays out.
2026-11-04 04:01:30 +08:00

44 рядки
1.6 KiB
TypeScript
Неформатований Анотація Історія

Цей файл містить неоднозначні символи Юнікоду
Цей файл містить символи Юнікоду, які можна сплутати з іншими символами. Якщо ви вважаєте, що це зроблено навмисно, можете сміливо ігнорувати це попередження. Щоб показати їх, скористайтеся кнопкою Escape.
import { describe, expect, it } from "vitest";
import { joinPath, projectNameError } from "../NewProject";
import { exportedStorage } from "../projectActions";
describe("File › New Project…", () => {
it("validates the folder name", () => {
expect(projectNameError("demo")).toBeNull();
expect(projectNameError(" ")).toBe("Enter a project name");
expect(projectNameError("a/b")).not.toBeNull();
expect(projectNameError("..")).not.toBeNull();
});
it("joins the location and name with the location's separator", () => {
expect(joinPath("/Users/me/Projects", " demo ")).toBe("/Users/me/Projects/demo");
expect(joinPath("/Users/me/", "demo")).toBe("/Users/me/demo");
expect(joinPath("C:\\Users\\me", "demo")).toBe("C:\\Users\\me\\demo");
});
});
describe("Manage IDE Settings › Export Settings…", () => {
it("exports templates, macros, layouts and view options, not per-project state", () => {
const data: Record<string, string> = {
"openidea.liveTemplates.v1": "[]",
"openidea.macros.v1": "{}",
"openidea.toolWindowLayouts.v1": "{}",
"openidea.projectTree.options": '{"singleClickOpen":true}',
"openidea.projectTree.expanded:/p": "[]",
"openidea.runAnything.history.v1:/p": "[]",
};
const keys = Object.keys(data);
const storage = {
length: keys.length,
key: (i: number) => keys[i] ?? null,
getItem: (k: string) => data[k] ?? null,
};
expect(Object.keys(exportedStorage(storage)).sort()).toEqual([
"openidea.liveTemplates.v1",
"openidea.macros.v1",
"openidea.projectTree.options",
"openidea.toolWindowLayouts.v1",
]);
});
});