29 lines
1.7 KiB
TypeScript
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>;
|
|
}
|