fix(statistics): preserve private account history safely

This commit is contained in:
Sucukdeluxe
2026-08-21 08:37:04 +02:00
parent 4de4f4a0be
commit dc3d9dfc10
6 changed files with 97 additions and 14 deletions
+11 -2
View File
@@ -1,5 +1,6 @@
import { describe, expect, it } from "vitest";
import { buildBackupPayload, planBackupImport } from "../src/main/backup-payload";
import { buildBackupPayload, planBackupImport } from "../src/main/backup-payload";
import { readFileSync } from "node:fs";
import type { AppSettings, SessionState, HistoryEntry, StatisticsLedger } from "../src/shared/types";
function settings(overrides: Partial<AppSettings> = {}): AppSettings {
@@ -16,7 +17,15 @@ const statistics: StatisticsLedger = { version: 2, startedAt: 1, days: [], minut
const baseInput = { appVersion: "1.7.183", exportedAt: "2026-06-07T00:00:00Z", session, history, statistics };
describe("buildBackupPayload — default is settings-only", () => {
describe("buildBackupPayload — default is settings-only", () => {
it("exports the full statistics ledger instead of the renderer projection", () => {
const source = readFileSync(new URL("../src/main/app-controller.ts", import.meta.url), "utf8");
const exportBlock = source.slice(source.indexOf("public exportBackup"), source.indexOf("public async exportOnlineBackup"));
expect(exportBlock).toContain("getStatisticsLedgerForBackup()");
expect(exportBlock).not.toContain("getStats().statistics");
});
it("omits session AND history when backupIncludeDownloads is false (default)", () => {
const p = buildBackupPayload({ ...baseInput, settings: { backupIncludeDownloads: false } as AppSettings });
expect(p.kind).toBe("settings-only");