Refactor application structure and simplify implementation

This commit is contained in:
2026-07-22 00:08:09 +03:00
parent dbba3806cc
commit 90b2eb507c
74 changed files with 11362 additions and 6814 deletions
+61
View File
@@ -0,0 +1,61 @@
import { describe, expect, it } from "vitest";
import {
configChangeRows,
configSnapshotFromUi,
sameConfigSnapshot,
} from "./snapshots";
describe("configuration snapshots", () => {
it("normalizes proxy and Windows app values", () => {
const snapshot = configSnapshotFromUi(
"external",
" SOCKS5://Proxy.Example.Test:1080 ",
[
{ type: "process", value: "C:\\Apps\\Discord.exe" },
{ type: "folder", value: " C:\\Games " },
],
);
expect(snapshot.proxy).toBe("socks5://proxy.example.test:1080");
expect(snapshot.items).toEqual([
{ type: "folder", value: "c:\\games" },
{ type: "process", value: "discord" },
]);
});
it("detects a server change by stable id even when tags match", () => {
const applied = configSnapshotFromUi(
"local-singbox",
"",
[],
"server-a",
"Same tag",
);
const current = configSnapshotFromUi(
"local-singbox",
"",
[],
"server-b",
"Same tag",
);
expect(sameConfigSnapshot(applied, current)).toBe(false);
expect(configChangeRows(applied, current).map((row) => row.id)).toContain(
"vpn-server",
);
});
it("reports added and removed app items independent of input order", () => {
const applied = configSnapshotFromUi("external", "proxy.test:1080", [
{ type: "process", value: "Discord.exe" },
]);
const current = configSnapshotFromUi("external", "proxy.test:1080", [
{ type: "process", value: "Telegram.exe" },
]);
expect(configChangeRows(applied, current).map((row) => row.tone)).toEqual([
"added",
"removed",
]);
});
});