designMode.service.spec.ts 1.28 KB
import {DesignModeService} from './designMode.service';
import {INoosferoLocalStorage} from "./../../shared/models/interfaces";

describe('DesignMode Service', () => {
    let service: DesignModeService;

    let $localStorage = <INoosferoLocalStorage>{ currentUser: null, settings: { designMode: false } };    
    beforeEach(() => {
        service = new DesignModeService($localStorage);
    });

    it('has the designModeOn equals false as default', () => {
        expect(service.isInDesignMode()).toBeFalsy();
    });

    it('allows set the designMode value', () => {
        spyOn(service.onToggle, 'next').and.stub();
        service.setInDesignMode(true);
        expect(service.isInDesignMode).toBeTruthy();
    });

    it('emits the onToggle event when changing the designModeOn property', () => {
        service.setInDesignMode(false);
        spyOn(service.onToggle, 'next').and.stub();
        service.setInDesignMode(true);
        expect(service.onToggle.next).toHaveBeenCalled();
    });

    it('does not emit onToggle event when there is no change on designModeOn property', () => {
        service.setInDesignMode(false);
        spyOn(service.onToggle, 'next').and.stub();
        service.setInDesignMode(false);
        expect(service.onToggle.next).not.toHaveBeenCalled();
    });
});