Refactor application structure and simplify implementation
This commit is contained in:
@@ -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",
|
||||
]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user