Home Reference Source Test

test/specs/generic/utils/Services.spec.js

describe('Services', () => {

    it('is initialized to NONE if no parameters are passed to the constructor', () => {
        const services = new Services();
        expect(services.provided).toBe(Services.NONE);
        expect(services.accepted).toBe(Services.NONE);
    });

    it('is initialized correctly to the parameters that are passed to the constructor', () => {
        const services = new Services(Services.FULL, Services.FULL | Services.NANO);
        expect(services.provided).toBe(Services.FULL);
        expect(services.accepted).toBe(Services.FULL | Services.NANO);
    });

    it('has working getter and setter for provided services', () => {
        const services = new Services();
        services.provided = Services.LIGHT;
        expect(services.provided).toBe(Services.LIGHT);
    });

    it('has working getter and setter for accepted services', () => {
        const services = new Services();
        services.accepted = Services.FULL | Services.LIGHT | Services.NANO;
        expect(services.accepted).toBe(Services.FULL | Services.LIGHT | Services.NANO);
    });

    it('correctly identifies Full Nodes', () => {
        expect(Services.isFullNode(Services.FULL)).toBe(true);
        expect(Services.isFullNode(Services.LIGHT)).toBe(false);
        expect(Services.isFullNode(Services.NANO)).toBe(false);
    });

    it('correctly identifies Light Nodes', () => {
        expect(Services.isLightNode(Services.LIGHT)).toBe(true);
        expect(Services.isLightNode(Services.FULL)).toBe(false);
        expect(Services.isLightNode(Services.NANO)).toBe(false);
    });

    it('correctly identifies Nano Nodes', () => {
        expect(Services.isNanoNode(Services.NANO)).toBe(true);
        expect(Services.isNanoNode(Services.FULL)).toBe(false);
        expect(Services.isNanoNode(Services.LIGHT)).toBe(false);
    });
});