All files / src/__tests__ IDIContainer.spec.ts

100% Statements 20/20
100% Branches 0/0
100% Functions 7/7
100% Lines 19/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47              1x 1x     1x 3x     1x 1x 1x   1x     1x 1x     1x 1x 1x   1x     1x 1x     1x 1x   1x            
import { ITSinjex_, ITSinjex } from '../interfaces/ITSinjex';
 
/**
 * Test the implementation of a DIContainer
 * @param Container The DIContainer implementation to test.
 * Must implement {@link ITSinjex}, {@link ITSinjex_}
 */
export function test_IDIContainer(Container: ITSinjex_): void {
    describe('IDIContainer Implementation Tests', () => {
        let container: ITSinjex;
 
        beforeEach(() => {
            container = Container.getInstance();
        });
 
        it('should register and resolve a dependency', () => {
            const identifier = 'myDependency';
            const dependency = { value: 42 };
 
            container.register(identifier, dependency);
 
            const resolvedDependency =
                container.resolve<typeof dependency>(identifier);
            expect(resolvedDependency).toBe(dependency);
        });
 
        it('should register and resolve a dependency static', () => {
            const identifier = 'myDependency';
            const dependency = { value: 42 };
 
            Container.register(identifier, dependency);
 
            const resolvedDependency =
                Container.resolve<typeof dependency>(identifier);
            expect(resolvedDependency).toBe(dependency);
        });
 
        it('should throw an error when resolving a non-registered dependency static', () => {
            const identifier = 'nonExistentDependency';
 
            expect(() => Container.resolve<unknown>(identifier)).toThrow();
        });
 
        // Add more tests as necessary
    });
}