diff --git a/test/unit/metal/container-test.ts b/test/unit/metal/container-test.ts index 386bccfa..68bd50e8 100644 --- a/test/unit/metal/container-test.ts +++ b/test/unit/metal/container-test.ts @@ -83,6 +83,24 @@ test('availableForType() returns all registered instances of a type', async (t) t.deepEqual(container.availableForType('foo'), ['a', 'b', 'c', 'd']); }); +test('the resolver order should not be changed by lookup methods', async (t) => { + const container: Container = t.context.subject(); + + const loaderMock = (name : string) => ({ + retrieve: () => name, + loadRelative: () => name, + factories: new Map(), + }) as any; + + container.loadBundleScope(loaderMock('l1')); + container.loadBundleScope(loaderMock('l2')); + + t.deepEqual(container.lookup('foo:l1', { raw: true }), 'l1'); + container.availableForType('foo'); + t.deepEqual(container.lookup('foo:l1', { raw: true }), 'l1'); + t.deepEqual(container.lookup('foo:l1', { raw: true }), 'l1'); +}); + test('falls back to `fallbacks` specifiers if original specifier is not found', async (t) => { let container: Container = t.context.subject(); container.setOption('foo', 'fallbacks', [ 'foo:application' ]); @@ -105,4 +123,4 @@ test('the container adds a resolver for each loader bundle scope, in breadth-fir let resolvers = (container).resolvers; t.deepEqual(resolvers.map((r) => r.name), [ 'top', 'quux', 'foo', 'bar' ]); -}); +}); \ No newline at end of file