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

Commit fa26b1a

Browse files
committed
test: cover container's (aparent) immutability
1 parent 8b458c7 commit fa26b1a

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,37 @@ describe('container', () => {
4141

4242
expect(await container.resolveAsync('ab')).toBe(15)
4343
})
44+
45+
it('can re-register sync dependencies (without changing the "original" container)', async () => {
46+
const c1 = createContainer()
47+
.register('a', () => 3)
48+
.register('b', () => 5)
49+
.registerAsync('c', async () => await Promise.resolve(11))
50+
.register('ab', (c) => c.resolve('a') * c.resolve('b'))
51+
.registerAsync(
52+
'ac',
53+
async (c) => c.resolve('a') * (await c.resolveAsync('c')),
54+
)
55+
const c2 = c1.register('a', () => 7)
56+
57+
expect(c1.resolve('ab')).toBe(15)
58+
expect(c2.resolve('ab')).toBe(35)
59+
60+
expect(await c1.resolveAsync('ac')).toBe(33)
61+
expect(await c2.resolveAsync('ac')).toBe(77)
62+
})
63+
64+
it('can re-register async dependencies (without changing the "original" container)', async () => {
65+
const c1 = createContainer()
66+
.register('a', () => 3)
67+
.registerAsync('b', async () => await Promise.resolve(5))
68+
.registerAsync(
69+
'ab',
70+
async (c) => c.resolve('a') * (await c.resolveAsync('b')),
71+
)
72+
const c2 = c1.registerAsync('b', async () => await Promise.resolve(7))
73+
74+
expect(await c1.resolveAsync('ab')).toBe(15)
75+
expect(await c2.resolveAsync('ab')).toBe(21)
76+
})
4477
})

0 commit comments

Comments
 (0)