MeshChatX/tests/frontend/AndroidStorageBridge.test.js

44 lines
1.6 KiB
JavaScript
Raw Permalink Normal View History

import { describe, it, expect, vi, beforeEach } from "vitest";
import AndroidStorageBridge from "../../meshchatx/src/frontend/js/AndroidStorageBridge.js";
describe("AndroidStorageBridge", () => {
let bridge;
beforeEach(() => {
bridge = new AndroidStorageBridge({
getPlatform: () => "android",
getAndroidStorageStatus: () =>
JSON.stringify({
needs_setup_choice: true,
active_mode: "external",
}),
setAndroidStorageMode: vi.fn(),
markAndroidStorageSetupCompleted: vi.fn(),
restartApp: vi.fn(),
});
});
it("getStatus parses JSON from native bridge", () => {
expect(bridge.getStatus()).toEqual({
needs_setup_choice: true,
active_mode: "external",
});
});
it("applySetupChoice restarts when mode differs from active", () => {
const native = bridge.android.bridge;
const result = bridge.applySetupChoice("internal", { active_mode: "external" });
expect(native.setAndroidStorageMode).toHaveBeenCalledWith("internal");
expect(native.markAndroidStorageSetupCompleted).toHaveBeenCalled();
expect(native.restartApp).toHaveBeenCalled();
expect(result.restarted).toBe(true);
});
it("applySetupChoice skips restart when mode matches active", () => {
const native = bridge.android.bridge;
const result = bridge.applySetupChoice("external", { active_mode: "external" });
expect(native.restartApp).not.toHaveBeenCalled();
expect(result.restarted).toBe(false);
});
});