FreeAllMedia/conan

View on GitHub
es6/spec/conan/conan.addComponent.spec.js

Summary

Maintainability
A
2 hrs
Test Coverage
import Conan from "../../lib/conan.js";

describe("conan.addComponent(componentName, ComponentConstructor)", () => {
    class ServerComponent {
        constructor(...parameters) {
            this.parameters = parameters;
        }
    }

    let conan;

    beforeEach(() => {
        conan = new Conan();
        conan.addComponent("server", ServerComponent);
    });

    it("should pass conan as the first parameter to the component constructor", () => {
        const parameters = [1, 2, 3];
        const server = conan.server(...parameters);
        server.parameters[0].should.eql(conan);
    });

    it("should pass the parameters to the component constructor", () => {
        const parameters = [1, 2, 3];
        const server = conan.server(...parameters);
        parameters.unshift(conan);
        server.parameters.should.eql(parameters);
    });

    it("should return a new instance of component each time it is called", () => {
        const server = conan.server("127.0.0.1");
        server.should.be.instanceOf(ServerComponent);
    });

    it("should add the component instance to .components[componentName]", () => {
        const server = conan.server("127.0.0.1");
        conan.components.server[0].should.eql(server);
    });

    it("should add the component instance to .components[all]", () => {
        const server = conan.server("127.0.0.1");
        conan.components.all[0].should.eql(server);
    });
});