fix: navigate before loading page data
This commit is contained in:
@@ -177,7 +177,7 @@ Deno.test("Composer input uses boundary-aware Up and Down history navigation", a
|
||||
);
|
||||
const consoleSource = await Deno.readTextFile(
|
||||
new URL(
|
||||
"../src/routes/w/[workspaceId]/workers/[workerRef]/console/+page.svelte",
|
||||
"../src/routes/w/[workspaceId]/workers/[workerRef]/console/PageContent.svelte",
|
||||
import.meta.url,
|
||||
),
|
||||
);
|
||||
|
||||
@@ -7,13 +7,13 @@ import {
|
||||
|
||||
const objectivesListSource = await Deno.readTextFile(
|
||||
new URL(
|
||||
"../src/routes/w/[workspaceId]/objectives/+page.svelte",
|
||||
"../src/routes/w/[workspaceId]/objectives/PageContent.svelte",
|
||||
import.meta.url,
|
||||
),
|
||||
);
|
||||
const objectiveDetailSource = await Deno.readTextFile(
|
||||
new URL(
|
||||
"../src/routes/w/[workspaceId]/objectives/[objectiveId]/+page.svelte",
|
||||
"../src/routes/w/[workspaceId]/objectives/[objectiveId]/PageContent.svelte",
|
||||
import.meta.url,
|
||||
),
|
||||
);
|
||||
|
||||
@@ -9,7 +9,7 @@ function assert(condition: boolean, message: string): asserts condition {
|
||||
|
||||
const pageSource = await Deno.readTextFile(
|
||||
new URL(
|
||||
"../../src/routes/w/[workspaceId]/settings/repositories/+page.svelte",
|
||||
"../../src/routes/w/[workspaceId]/settings/repositories/PageContent.svelte",
|
||||
import.meta.url,
|
||||
),
|
||||
);
|
||||
@@ -34,7 +34,7 @@ test("Repository settings use the scoped list and typed create collection", () =
|
||||
'method: "POST"',
|
||||
"repository_key: repositoryKey",
|
||||
"default_ref: defaultRef || null",
|
||||
"await invalidateAll()",
|
||||
"await refreshPageData()",
|
||||
]
|
||||
) {
|
||||
assert(
|
||||
|
||||
@@ -5,19 +5,11 @@ import {
|
||||
} from "../../src/lib/workspace/api/repository-access-loader.ts";
|
||||
import { RepositoryAccessSchemaError } from "../../src/lib/workspace/api/repository-access.ts";
|
||||
import { load as loadRepositoryAccessPage } from "../../src/routes/w/[workspaceId]/settings/repository-access/+page.ts";
|
||||
import type { ResolvedPageData } from "../../src/lib/workspace/navigation/deferred.ts";
|
||||
|
||||
type HttpFailure = { status?: number; body?: { message?: string } };
|
||||
|
||||
type LoadedPage = {
|
||||
accessProjection: unknown;
|
||||
accessProjectionError: string | null;
|
||||
credentials: Array<{ credential_id: string }>;
|
||||
credentialsError: string | null;
|
||||
publicKeys: Array<{ credential_id: string }>;
|
||||
defaultPublicKeyError: string | null;
|
||||
hostTrusts: Array<{ host_trust_id: string }>;
|
||||
hostTrustsError: string | null;
|
||||
};
|
||||
type LoadedPage = ResolvedPageData<ReturnType<typeof loadRepositoryAccessPage>>;
|
||||
|
||||
const projectionFixture = {
|
||||
workspace_id: "workspace-1",
|
||||
@@ -74,13 +66,30 @@ async function loadPageWithFailure(failedSuffix: string): Promise<LoadedPage> {
|
||||
}
|
||||
throw new Error(`unexpected loader request: ${path}`);
|
||||
};
|
||||
return await (loadRepositoryAccessPage as unknown as (event: {
|
||||
fetch: typeof fetch;
|
||||
params: { workspaceId: string };
|
||||
}) => Promise<LoadedPage>)({
|
||||
fetch: fetcher as typeof fetch,
|
||||
params: { workspaceId: "workspace-1" },
|
||||
});
|
||||
const envelope = loadRepositoryAccessPage(
|
||||
{
|
||||
fetch: fetcher as typeof fetch,
|
||||
params: { workspaceId: "workspace-1" },
|
||||
url: new URL(
|
||||
"https://workspace.test/w/workspace-1/settings/repository-access",
|
||||
),
|
||||
} as Parameters<typeof loadRepositoryAccessPage>[0],
|
||||
);
|
||||
if (
|
||||
envelope instanceof Promise ||
|
||||
Object.keys(envelope).join() !== "deferredPage"
|
||||
) {
|
||||
throw new Error(
|
||||
"Repository Access load must immediately return only the deferred page envelope",
|
||||
);
|
||||
}
|
||||
const result = await envelope.deferredPage;
|
||||
if (!result.ok) {
|
||||
throw new Error(
|
||||
`unexpected deferred page failure: ${result.failure.message}`,
|
||||
);
|
||||
}
|
||||
return result.data;
|
||||
}
|
||||
|
||||
async function captureHttpFailure(
|
||||
|
||||
@@ -9,7 +9,7 @@ function assert(condition: boolean, message: string): asserts condition {
|
||||
|
||||
const source = await Deno.readTextFile(
|
||||
new URL(
|
||||
"../../src/routes/w/[workspaceId]/settings/repository-access/+page.svelte",
|
||||
"../../src/routes/w/[workspaceId]/settings/repository-access/PageContent.svelte",
|
||||
import.meta.url,
|
||||
),
|
||||
);
|
||||
|
||||
@@ -10,7 +10,7 @@ import {
|
||||
const root = new URL("../", import.meta.url);
|
||||
const pageSource = await Deno.readTextFile(
|
||||
new URL(
|
||||
"./src/routes/w/[workspaceId]/repositories/[repositoryKey]/+page.svelte",
|
||||
"./src/routes/w/[workspaceId]/repositories/[repositoryKey]/PageContent.svelte",
|
||||
root,
|
||||
),
|
||||
);
|
||||
|
||||
@@ -2,7 +2,7 @@ import { assert, assertStringIncludes } from "jsr:@std/assert";
|
||||
|
||||
const pageSource = await Deno.readTextFile(
|
||||
new URL(
|
||||
"../src/routes/w/[workspaceId]/tickets/[ticketId]/+page.svelte",
|
||||
"../src/routes/w/[workspaceId]/tickets/[ticketId]/PageContent.svelte",
|
||||
import.meta.url,
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user