UNPKG

@triviality/core

Version:
49 lines (47 loc) 2.1 kB
import { createFeatureFactoryRegistryContext, makeImmutableRegistryList, makeImmutableRegistryMap, RegistryList, RegistryMap, } from '../..'; import { ServiceFunctionReferenceContainer } from '../../../Container'; import { TaggedServiceFactoryReference } from '../../../Value/TaggedServiceFactoryReference'; describe('createFeatureFactoryRegistryContext', () => { it('Can register map', () => { const context = createFeatureFactoryRegistryContext(new ServiceFunctionReferenceContainer()); const map = context.registerMap<number>(['a', () => 1]); expect(map().toArray()).toEqual([['a', 1]]); }); it('Can register list', () => { const context = createFeatureFactoryRegistryContext(new ServiceFunctionReferenceContainer()); const list = context.registerList<number>(() => 1, () => 2); expect(Array.from(list())).toEqual([1, 2]); }); it('Can register to map', async () => { const container = new ServiceFunctionReferenceContainer(); container.add(new TaggedServiceFactoryReference({ tag: 'MyRegister', factory: () => makeImmutableRegistryMap<number>(['bar', 2]), feature: () => Object, })); const context = createFeatureFactoryRegistryContext<{ MyRegister: RegistryMap<number> }>(container); context.registers.MyRegister(['foo', () => 1]); await container.build(); const registry: RegistryMap<number> = container.getService('MyRegister')() as any; expect(registry.toArray()).toEqual([['bar', 2], ['foo', 1]]); }); it('Can register to list', async () => { const container = new ServiceFunctionReferenceContainer(); container.add(new TaggedServiceFactoryReference({ tag: 'MyRegister', factory: () => makeImmutableRegistryList(2), feature: () => Object, })); const context = createFeatureFactoryRegistryContext<{ MyRegister: RegistryList<number> }>(container); context.registers.MyRegister(() => 1); await container.build(); const registry: RegistryList<number> = container.getService('MyRegister')() as any; expect(registry.toArray()).toEqual([2, 1]); }); });