playable
Version:
Video player based on HTML5Video
137 lines • 7.49 kB
JavaScript
;
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