Files
govoplan-core/webui/conformance/CampaignWorkspaceScenario.tsx
T

29 lines
1.7 KiB
TypeScript

// Exercise the owning Campaign hook, with network responses controlled by tests.
import { useMemo, useState } from "react";
import { useSearchParams } from "react-router";
import { useCampaignWorkspaceData } from "../../../govoplan-campaign/webui/src/features/campaigns/hooks/useCampaignWorkspaceData";
export default function CampaignWorkspaceScenario() {
const [campaignId, setCampaignId] = useState("campaign-a");
const [accessToken, setAccessToken] = useState("token-a");
const [, setSearchParams] = useSearchParams();
const settings = useMemo(() => ({ apiBaseUrl: "", apiKey: "", accessToken }), [accessToken]);
const { data, loading, error, reload } = useCampaignWorkspaceData(settings, campaignId, { includeVersions: true });
return <main>
<button onClick={() => void reload()}>Reload workspace</button>
<button onClick={() => void reload({ force: true })}>Force reload workspace</button>
<button onClick={() => setCampaignId("campaign-b")}>Switch campaign</button>
<button onClick={() => setAccessToken("token-b")}>Switch identity</button>
<button onClick={() => setSearchParams((current) => {
const next = new URLSearchParams(current);
next.set("version", "selected-version");
return next;
})}>Select version</button>
<output data-testid="workspace-campaign">{data.campaign?.id ?? "none"}</output>
<output data-testid="workspace-version">{data.currentVersion?.id ?? "none"}</output>
<output data-testid="workspace-revision">{data.currentVersion?.edit_revision ?? 0}</output>
<output data-testid="workspace-loading">{String(loading)}</output>
<output data-testid="workspace-error">{error}</output>
</main>;
}