Skip to content

Commit 5fc5c32

Browse files
committed
add metaSchema type test
1 parent eb4c633 commit 5fc5c32

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

packages/toolkit/src/query/tests/createApi.test-d.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { configureStore } from '@reduxjs/toolkit'
44
import type {
55
DefinitionsFromApi,
66
FetchBaseQueryError,
7+
FetchBaseQueryMeta,
78
MutationDefinition,
89
OverrideResultType,
910
QueryDefinition,
@@ -386,6 +387,10 @@ describe('type tests', () => {
386387
status: v.number(),
387388
data: v.unknown(),
388389
}) satisfies v.GenericSchema<FetchBaseQueryError>
390+
const metaSchema = v.object({
391+
request: v.instance(Request),
392+
response: v.optional(v.instance(Response)),
393+
}) satisfies v.GenericSchema<FetchBaseQueryMeta>
389394
createApi({
390395
baseQuery: fetchBaseQuery({ baseUrl: 'https://example.com' }),
391396
endpoints: (build) => ({
@@ -394,6 +399,7 @@ describe('type tests', () => {
394399
argSchema: v.object({ id: v.number() }),
395400
resultSchema: postSchema,
396401
errorSchema,
402+
metaSchema,
397403
}),
398404
bothMismatch: build.query<Post, { id: number }>({
399405
query: ({ id }) => `/post/${id}`,
@@ -403,6 +409,8 @@ describe('type tests', () => {
403409
resultSchema: v.object({ id: v.string() }),
404410
// @ts-expect-error wrong schema
405411
errorSchema: v.object({ status: v.string() }),
412+
// @ts-expect-error wrong schema
413+
metaSchema: v.object({ request: v.string() }),
406414
}),
407415
inputMismatch: build.query<Post, { id: number }>({
408416
query: ({ id }) => `/post/${id}`,
@@ -420,6 +428,14 @@ describe('type tests', () => {
420428
...errorSchema.entries,
421429
status: v.pipe(v.string(), v.transform(Number)),
422430
}) satisfies v.GenericSchema<any, FetchBaseQueryError>,
431+
// @ts-expect-error can't expect different input
432+
metaSchema: v.object({
433+
...metaSchema.entries,
434+
request: v.pipe(
435+
v.string(),
436+
v.transform((url) => new Request(url)),
437+
),
438+
}) satisfies v.GenericSchema<any, FetchBaseQueryMeta>,
423439
}),
424440
outputMismatch: build.query<Post, { id: number }>({
425441
query: ({ id }) => `/post/${id}`,
@@ -437,6 +453,14 @@ describe('type tests', () => {
437453
...errorSchema.entries,
438454
status: v.pipe(v.number(), v.transform(String)),
439455
}) satisfies v.GenericSchema<FetchBaseQueryError, any>,
456+
// @ts-expect-error can't provide different output
457+
metaSchema: v.object({
458+
...metaSchema.entries,
459+
request: v.pipe(
460+
v.instance(Request),
461+
v.transform((r) => r.url),
462+
),
463+
}) satisfies v.GenericSchema<FetchBaseQueryMeta, any>,
440464
}),
441465
}),
442466
})

0 commit comments

Comments
 (0)