diff --git a/apps/meteor/app/api/server/ApiClass.spec.ts b/apps/meteor/app/api/server/ApiClass.spec.ts index e68d0d94afb85..b092bd54e29f7 100644 --- a/apps/meteor/app/api/server/ApiClass.spec.ts +++ b/apps/meteor/app/api/server/ApiClass.spec.ts @@ -6,36 +6,72 @@ import type { APIClass, ExtractRoutesFromAPI } from './ApiClass'; type Expect = T; type ShallowEqual = X extends Y ? (Y extends X ? true : false) : false; -type API = APIClass< - '/v1', - { - method: 'GET'; - path: '/v1/endpoint.test'; - response: { - 200: ValidateFunction< - PaginatedResult<{ +describe('ExtractRoutesFromAPI type utility', () => { + it('Should return the expected type for GET', () => { + type API = APIClass< + '/v1', + { + method: 'GET'; + path: '/v1/endpoint.test'; + response: { + 200: ValidateFunction< + PaginatedResult<{ + sounds: string[]; + }> + >; + }; + query: ValidateFunction<{ + query: string; + }>; + authRequired: true; + } + >; + type test = Expect< + ShallowEqual< + ReturnType['/v1/endpoint.test']['GET']>, + { + count: number; + offset: number; + total: number; sounds: string[]; - }> - >; - }; - query: ValidateFunction<{ - query: string; - }>; - authRequired: true; - } ->; + } + > + >; + + true as test; + }); -it('Should return the expected type', () => { - type test = Expect< - ShallowEqual< - ReturnType['/v1/endpoint.test']['GET']>, + it('Should return the expected type for POST', () => { + type API = APIClass< + '/v1', { - count: number; - offset: number; - total: number; - sounds: string[]; + method: 'POST'; + path: '/v1/endpoint.test'; + response: { + 200: ValidateFunction< + PaginatedResult<{ + sounds: string[]; + }> + >; + }; + body: ValidateFunction<{ + query: string; + }>; + authRequired: true; } - > - >; - true as test; + >; + type test = Expect< + ShallowEqual< + ReturnType['/v1/endpoint.test']['POST']>, + { + count: number; + offset: number; + total: number; + sounds: string[]; + } + > + >; + + true as test; + }); });