import {ComponentTestHelper, createClass} from '../../../spec/component-test-helper'; import {INgForwardJQuery} from 'ng-forward/cjs/util/jqlite-extensions'; import * as helpers from '../../../spec/helpers'; import {DesignModeTogglerComponent} from './designModeToggler.component'; import {DesignModeService} from './designMode.service'; import {INoosferoLocalStorage} from "./../../shared/models/interfaces"; describe('DesignModeToggler Component', () => { const htmlTemplate: string = ''; let helper: ComponentTestHelper; beforeEach(() => { angular.mock.module('templates'); angular.mock.module('ngSanitize'); angular.mock.module('uiSwitch'); }); let designModeService: DesignModeService; let $localStorage = { currentUser: null, settings: { designMode: false } }; beforeEach((done) => { designModeService = new DesignModeService($localStorage); let cls = createClass({ template: htmlTemplate, directives: [DesignModeTogglerComponent], providers: [ helpers.createProviderToValue('DesignModeService', designModeService), helpers.createProviderToValue('AuthService', helpers.mocks.authService), ] }); helper = new ComponentTestHelper(cls, done); }); it('changes css classes representing the switch is on or off', () => { let switchEl: INgForwardJQuery = helper.debugElement.query('span.switch'); expect(switchEl.hasClass('checked')).toBeFalsy(); helper.component.inDesignMode = true; helper.detectChanges(); expect(switchEl.hasClass('checked')).toBeTruthy(); }); it('emits event with value "true" when changing inDesignMode to On', (done) => { designModeService.setInDesignMode(false); designModeService.onToggle.subscribe((designModeOn: boolean) => { expect(designModeOn).toBeTruthy(); done(); }); helper.component.inDesignMode = true; helper.detectChanges(); }); it('emits events with value "false" when changing inDesignMode to Off', (done) => { helper.component.inDesignMode = true; helper.detectChanges(); designModeService.onToggle.subscribe((designModeOn: boolean) => { expect(designModeOn).toBeFalsy(); done(); }); helper.component.inDesignMode = false; helper.detectChanges(); }); });