Skip to content
This repository was archived by the owner on Apr 21, 2024. It is now read-only.

Commit e48604c

Browse files
committed
test: cover return types
1 parent 77c3a43 commit e48604c

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

lambda-ioc/src/__tests__/container.test.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,26 @@ describe('@types/container', () => {
214214
expect(c_cannot_resolveAsync_anything).toBe(true)
215215
})
216216

217+
it('assigns the correct type to sync resolved values', () => {
218+
type C = Container<{ a: number }, {}>
219+
220+
// Checking the type for the resolved value
221+
type C_resolve_ReturnType = ReturnType<C['resolve']>
222+
type C_resolve_ReturnType_extends_number =
223+
C_resolve_ReturnType extends number ? true : false
224+
type C_number_extends_resolve_ReturnType =
225+
number extends C_resolve_ReturnType ? true : false
226+
type C_resolve_ReturnType_is_number =
227+
C_resolve_ReturnType_extends_number extends true
228+
? C_number_extends_resolve_ReturnType extends true
229+
? true
230+
: false
231+
: false
232+
233+
const c_resolves_number: C_resolve_ReturnType_is_number = true
234+
expect(c_resolves_number).toBe(true)
235+
})
236+
217237
it('only resolves the async registered dependency', () => {
218238
type C = Container<{}, { b: number }>
219239

@@ -236,6 +256,26 @@ describe('@types/container', () => {
236256
expect(c_can_only_resolve_b).toBe(true)
237257
})
238258

259+
it('assigns the correct type to async resolved values', () => {
260+
type C = Container<{}, { a: number }>
261+
262+
// Checking the type for the resolved value
263+
type C_resolveAsync_ReturnType = ReturnType<C['resolveAsync']>
264+
type C_resolveAsync_ReturnType_extends_number =
265+
C_resolveAsync_ReturnType extends Promise<number> ? true : false
266+
type C_number_extends_resolve_ReturnType =
267+
Promise<number> extends C_resolveAsync_ReturnType ? true : false
268+
type C_resolveAsync_ReturnType_is_number =
269+
C_resolveAsync_ReturnType_extends_number extends true
270+
? C_number_extends_resolve_ReturnType extends true
271+
? true
272+
: false
273+
: false
274+
275+
const c_resolvesAsync_number: C_resolveAsync_ReturnType_is_number = true
276+
expect(c_resolvesAsync_number).toBe(true)
277+
})
278+
239279
it('only resolves the sync registered groups', () => {
240280
type C = Container<
241281
{

0 commit comments

Comments
 (0)