UNPKG

playable

Version:

Video player based on HTML5Video

137 lines 7.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var chai_1 = require("chai"); var sinon = (0, tslib_1.__importStar)(require("sinon")); var Lifetime_1 = (0, tslib_1.__importDefault)(require("./constants/Lifetime")); var NotAFunctionError_1 = (0, tslib_1.__importDefault)(require("./errors/NotAFunctionError")); var registrations_1 = require("./registrations"); describe('registration method', function () { var container = { resolve: sinon.spy(function (name) { return name; }), }; afterEach(function () { container.resolve.resetHistory(); }); describe('asValue', function () { it('should return object in proper format', function () { var value = 10; var registeredValue = (0, registrations_1.asValue)(value); (0, chai_1.expect)(registeredValue.lifetime).to.be.equal(Lifetime_1.default.TRANSIENT); (0, chai_1.expect)(registeredValue.resolve()).to.be.equal(value); }); }); describe('asFunction', function () { it('should return error if not function passed', function () { var func = 10; var errorThrown = function () { return (0, registrations_1.asFunction)(func); }; (0, chai_1.expect)(errorThrown).to.throw(new NotAFunctionError_1.default('asFunction', 'function', typeof func).message); }); it('should return object in proper format', function () { var func = function () { }; var registeredFunction = (0, registrations_1.asFunction)(func); (0, chai_1.expect)(registeredFunction.lifetime).to.be.equal(Lifetime_1.default.TRANSIENT); (0, chai_1.expect)(registeredFunction.resolve).to.exist; }); it('should except options', function () { var func = function () { }; var registeredFunction = (0, registrations_1.asFunction)(func, { lifetime: Lifetime_1.default.SCOPED, }); (0, chai_1.expect)(registeredFunction.lifetime).to.be.equal(Lifetime_1.default.SCOPED); }); describe("returned object's resolve method", function () { it('should call initial method only with container passed', function () { var func = sinon.spy(); var registeredFunction = (0, registrations_1.asFunction)(func); registeredFunction.resolve(container); (0, chai_1.expect)(func.calledWith(container)).to.be.true; }); it('should combine wrapper object with resolved dependencies from container', function () { var func = sinon.spy(); var moduleName = 'moduleName'; func[registrations_1.PROPERTY_FOR_DEPENDENCIES] = [moduleName]; var registeredFunction = (0, registrations_1.asFunction)(func); registeredFunction.resolve(container); (0, chai_1.expect)(container.resolve.calledWithExactly(moduleName)).to.be.true; (0, chai_1.expect)(func.calledWithExactly({ moduleName: moduleName, }, container)).to.be.true; }); }); describe('returned object should have fluid interface', function () { var func = function () { }; var registeredFunction = (0, registrations_1.asFunction)(func); registeredFunction.transient(); (0, chai_1.expect)(registeredFunction.lifetime).to.be.equal(Lifetime_1.default.TRANSIENT); registeredFunction.scoped(); (0, chai_1.expect)(registeredFunction.lifetime).to.be.equal(Lifetime_1.default.SCOPED); registeredFunction.singleton(); (0, chai_1.expect)(registeredFunction.lifetime).to.be.equal(Lifetime_1.default.SINGLETON); registeredFunction.setLifetime(Lifetime_1.default.SCOPED); (0, chai_1.expect)(registeredFunction.lifetime).to.be.equal(Lifetime_1.default.SCOPED); }); }); describe('asClass', function () { it('should return error if not function passed', function () { var classDeclare = 10; var errorThrown = function () { return (0, registrations_1.asClass)(classDeclare); }; (0, chai_1.expect)(errorThrown).to.throw(new NotAFunctionError_1.default('asClass', 'class', typeof classDeclare).message); }); it('should return object in proper format', function () { var Class = /** @class */ (function () { function Class() { } return Class; }()); var registeredClass = (0, registrations_1.asClass)(Class); (0, chai_1.expect)(registeredClass.lifetime).to.be.equal(Lifetime_1.default.TRANSIENT); (0, chai_1.expect)(registeredClass.resolve).to.exist; }); it('should except options', function () { var Class = /** @class */ (function () { function Class() { } return Class; }()); var registeredClass = (0, registrations_1.asClass)(Class, { lifetime: Lifetime_1.default.SCOPED, }); (0, chai_1.expect)(registeredClass.lifetime).to.be.equal(Lifetime_1.default.SCOPED); }); describe("returned object's resolve method", function () { it('should call initial method only with container passed', function () { var constructor = sinon.spy(); var registeredClass = (0, registrations_1.asClass)(constructor); registeredClass.resolve(container); (0, chai_1.expect)(constructor.calledWithNew()).to.be.true; (0, chai_1.expect)(constructor.calledWith(container)).to.be.true; }); it('should combine wrapper object with resolved dependencies from container', function () { var constructor = sinon.spy(); var moduleName = 'moduleName'; constructor[registrations_1.PROPERTY_FOR_DEPENDENCIES] = [moduleName]; var registeredClass = (0, registrations_1.asClass)(constructor); registeredClass.resolve(container); (0, chai_1.expect)(constructor.calledWithNew()).to.be.true; (0, chai_1.expect)(container.resolve.calledWithExactly(moduleName)).to.be.true; (0, chai_1.expect)(constructor.calledWithExactly({ moduleName: moduleName, }, container)).to.be.true; }); }); describe('returned object should have fluid interface', function () { var constructor = sinon.spy(); var registeredClass = (0, registrations_1.asClass)(constructor); registeredClass.transient(); (0, chai_1.expect)(registeredClass.lifetime).to.be.equal(Lifetime_1.default.TRANSIENT); registeredClass.scoped(); (0, chai_1.expect)(registeredClass.lifetime).to.be.equal(Lifetime_1.default.SCOPED); registeredClass.singleton(); (0, chai_1.expect)(registeredClass.lifetime).to.be.equal(Lifetime_1.default.SINGLETON); registeredClass.setLifetime(Lifetime_1.default.SCOPED); (0, chai_1.expect)(registeredClass.lifetime).to.be.equal(Lifetime_1.default.SCOPED); }); }); }); //# sourceMappingURL=registrations.spec.js.map