56 lines
2.1 KiB
TypeScript
56 lines
2.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
type InstalledHttpOperationExecutor,
|
|
} from "../../../src/adapters/http/index.ts";
|
|
import { createReferenceFeatureInstalledInput } from "../../../src/features/reference-feature/adapters/create-reference-feature-input.ts";
|
|
|
|
/**
|
|
* This assertion is about the reference feature, not about HTTP observability:
|
|
* it names the feature's own route ids. It used to live in
|
|
* `tests/integration/http-execution-v3-observability.test.ts`, which meant a
|
|
* platform integration file imported the removable feature's installed input.
|
|
* Removing the feature then left that file importing a deleted module, and the
|
|
* removability fixture failed on typecheck, the unit/integration run, coverage
|
|
* and residue at once — four symptoms of one misplaced test.
|
|
*/
|
|
describe("reference feature installed operation executor", () => {
|
|
it("preserves the feature route id through the installed operation executor", async () => {
|
|
const seen: Array<Readonly<Record<string, unknown>>> = [];
|
|
const implementation = async (
|
|
contract: Readonly<{ contract: Readonly<{ operationId: string }> }>,
|
|
_input: unknown,
|
|
context: Readonly<Record<string, unknown>>,
|
|
) => {
|
|
seen.push(Object.freeze({ ...context }));
|
|
const value =
|
|
contract.contract.operationId === "LIST_REFERENCE_RESOURCES"
|
|
? []
|
|
: {
|
|
id: "resource-1",
|
|
name: "Resource",
|
|
};
|
|
return Object.freeze({
|
|
kind: "SUCCESS" as const,
|
|
value,
|
|
metadata: Object.freeze({ status: 200 }),
|
|
effect: "NOT_APPLICABLE" as const,
|
|
});
|
|
};
|
|
const execute = implementation as unknown as
|
|
InstalledHttpOperationExecutor["execute"];
|
|
|
|
const installed = createReferenceFeatureInstalledInput({
|
|
http: Object.freeze({ execute }),
|
|
});
|
|
|
|
await installed.input.listResources({ limit: 20 });
|
|
await installed.input.getResource("resource-1");
|
|
|
|
expect(seen.map((context) => context.routeId)).toEqual([
|
|
"REFERENCE_RESOURCE_LIST",
|
|
"REFERENCE_RESOURCE_DETAIL",
|
|
]);
|
|
});
|
|
});
|