UNPKG

inversify

Version:

A powerful and lightweight inversion of control container for JavaScript and Node.js apps powered by TypeScript.

60 lines 2.07 kB
import { __decorate, __metadata, __param } from "tslib"; import { describe, expect, it } from 'vitest'; import { Container, inject, injectable, named, optional } from '../../index.js'; describe('Issue 1190', () => { it('should inject a katana as default weapon to ninja', () => { // eslint-disable-next-line @typescript-eslint/typedef const TYPES = { Weapon: 'Weapon', }; // eslint-disable-next-line @typescript-eslint/typedef const TAG = { throwable: 'throwable', }; let Katana = class Katana { name; constructor() { this.name = 'Katana'; } }; Katana = __decorate([ injectable(), __metadata("design:paramtypes", []) ], Katana); let Shuriken = class Shuriken { name; constructor() { this.name = 'Shuriken'; } }; Shuriken = __decorate([ injectable(), __metadata("design:paramtypes", []) ], Shuriken); let Ninja = class Ninja { name; katana; shuriken; constructor(katana, shuriken) { this.name = 'Ninja'; this.katana = katana; this.shuriken = shuriken; } }; Ninja = __decorate([ injectable(), __param(0, inject(TYPES.Weapon)), __param(0, optional()), __param(1, inject(TYPES.Weapon)), __param(1, named(TAG.throwable)), __metadata("design:paramtypes", [Object, Object]) ], Ninja); const container = new Container(); container.bind(TYPES.Weapon).to(Katana).whenDefault(); container.bind(TYPES.Weapon).to(Shuriken).whenNamed(TAG.throwable); container.bind('Ninja').to(Ninja); const ninja = container.get('Ninja'); expect(ninja.katana).toStrictEqual(new Katana()); }); }); //# sourceMappingURL=issue_1190.test.js.map