InitialSyncView.test.tsx

1.3 KB · raw

1// @vitest-environment jsdom2import { afterEach, describe, expect, it, vi } from "vitest";3import { renderView } from "./view-test-utils";4import { InitialSyncView } from "./InitialSyncView";56describe("InitialSyncView", () => {7  let dispose: (() => void) | undefined;89  afterEach(() => {10    dispose?.();11    dispose = undefined;12  });1314  it("explains that pairing succeeded while the vault is still arriving", () => {15    const view = renderView(() => (16      <InitialSyncView slow={false} onRetry={() => {}} />17    ));18    dispose = view.dispose;1920    expect(view.container.textContent).toContain("PAIRING COMPLETE");21    expect(view.container.textContent).toContain("Getting your vault ready");22    expect(view.container.textContent).toContain("securely receiving your vault");23    expect(view.container.textContent).not.toContain("Retry initial sync");24  });2526  it("offers a retry when the first sync takes longer than expected", () => {27    const retry = vi.fn();28    const view = renderView(() => <InitialSyncView slow onRetry={retry} />);29    dispose = view.dispose;3031    const button = Array.from(view.container.querySelectorAll("button")).find(32      (candidate) => candidate.textContent?.includes("Retry initial sync"),33    );34    expect(button).toBeTruthy();35    button?.click();36    expect(retry).toHaveBeenCalledOnce();37  });38});