From 0cb4b8a112093a2699d1c127f1bd9826b21f9f4f Mon Sep 17 00:00:00 2001 From: Jari Kolehmainen Date: Mon, 29 May 2023 09:55:03 +0300 Subject: [PATCH] chore: fix jest failure Signed-off-by: Jari Kolehmainen --- .../utility-features/route/jest.config.js | 2 +- .../utility-features/route/src/route.test.ts | 20 +++++++++ packages/utility-features/route/src/route.ts | 42 ++++++++++--------- 3 files changed, 43 insertions(+), 21 deletions(-) create mode 100644 packages/utility-features/route/src/route.test.ts diff --git a/packages/utility-features/route/jest.config.js b/packages/utility-features/route/jest.config.js index 05dbeacf60..87e9cbdd52 100644 --- a/packages/utility-features/route/jest.config.js +++ b/packages/utility-features/route/jest.config.js @@ -1,3 +1,3 @@ -const config = require("@k8slens/jest").monorepoPackageConfig(__dirname).configForReact; +const config = require("@k8slens/jest").monorepoPackageConfig(__dirname).configForNode; module.exports = { ...config, coverageThreshold: undefined }; diff --git a/packages/utility-features/route/src/route.test.ts b/packages/utility-features/route/src/route.test.ts new file mode 100644 index 0000000000..83a7fe1f0b --- /dev/null +++ b/packages/utility-features/route/src/route.test.ts @@ -0,0 +1,20 @@ +import { route } from "./route"; + +describe("route", () => { + it("returns a bind handler", () => { + const handler = route({ + path: "/test", + method: "get", + }); + + const response = handler((req) => { + return { + response: "test", + }; + }); + + expect(response.path).toBe("/test"); + expect(response.method).toBe("get"); + expect(response.handler).toEqual(expect.any(Function)); + }); +}); \ No newline at end of file diff --git a/packages/utility-features/route/src/route.ts b/packages/utility-features/route/src/route.ts index 31ea7eeb5c..81b42a9d39 100644 --- a/packages/utility-features/route/src/route.ts +++ b/packages/utility-features/route/src/route.ts @@ -9,22 +9,21 @@ import type { URLSearchParams } from "url"; import type Joi from "joi"; export interface LensApiResultContentType { - resultMapper: (result: LensApiResult) => ({ + resultMapper: (result: LensApiResult) => { statusCode: number; content: unknown; headers: Record; - }); + }; } export type InferParam< T extends string, - PathParams extends Record, -> = - T extends `{${infer P}?}` - ? PathParams & Partial> - : T extends `{${infer P}}` - ? PathParams & Record - : PathParams; + PathParams extends Record +> = T extends `{${infer P}?}` + ? PathParams & Partial> + : T extends `{${infer P}}` + ? PathParams & Record + : PathParams; export type InferParamFromPath

= P extends `${string}/{${infer B}*}${infer Tail}` @@ -32,8 +31,8 @@ export type InferParamFromPath

= ? Record : never : P extends `${infer A}/${infer B}` - ? InferParam> - : InferParam; + ? InferParam> + : InferParam; export interface LensApiRequest { path: Path; @@ -55,12 +54,12 @@ export interface LensApiResult { proxy?: httpProxy; } -export type RouteResponse = - | LensApiResult - | void; +export type RouteResponse = LensApiResult | void; -export interface RouteHandler{ - (request: LensApiRequest): RouteResponse | Promise>; +export interface RouteHandler { + (request: LensApiRequest): + | RouteResponse + | Promise>; } export interface BaseRoutePaths { @@ -72,20 +71,23 @@ export interface PayloadValidator { validate(payload: unknown): Joi.ValidationResult; } -export interface ValidatorBaseRoutePaths extends BaseRoutePaths { +export interface ValidatorBaseRoutePaths + extends BaseRoutePaths { payloadValidator: PayloadValidator; } -export interface Route extends BaseRoutePaths { +export interface Route + extends BaseRoutePaths { handler: RouteHandler; } - export interface BindHandler { (handler: RouteHandler): Route; } -export function route(parts: BaseRoutePaths): BindHandler { +export function route( + parts: BaseRoutePaths +): BindHandler { return (handler) => ({ ...parts, handler,