@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
64 lines (63 loc) • 2.64 kB
JavaScript
import { it, describe, expect, beforeAll, afterAll } from 'vitest';
import StateToggleManager from './stateToggleManager';
import MockHelper from '../tests/mockhelper';
import StateManager from '../state/statemanager';
let stateManager;
beforeAll(() => {
MockHelper.startMocking();
stateManager = StateManager.getInstance();
});
afterAll(() => {
MockHelper.stopMocking();
});
describe('StateToggleManager class', () => {
let state;
let stateToggleManager;
const paths = [
'interface.helpVisible',
'interface.drawingPanelVisible',
'interface.printPanelVisible',
'state.language',
'interface.userPreferencesPanelVisible',
'interface.sharePanelVisible'
];
beforeAll(() => {
state = stateManager.state;
state.interface.helpVisible = true;
state.interface.drawingPanelVisible = false;
state.interface.printPanelVisible = true;
state.interface.sharePanelVisible = false;
state.interface.userPreferencesPanelVisible = false;
state.language = 'fr';
stateToggleManager = new StateToggleManager(paths, stateManager);
});
it('initToggle', () => {
expect(state.interface.helpVisible).toBeTruthy();
expect(state.interface.drawingPanelVisible).toBeFalsy();
expect(state.interface.printPanelVisible).toBeFalsy();
expect(state.interface.sharePanelVisible).toBeFalsy();
expect(state.interface.userPreferencesPanelVisible).toBeFalsy();
expect(state.language).toEqual('fr');
});
it('toggles by watching', () => {
state.interface.drawingPanelVisible = true;
expect(state.interface.helpVisible).toBeFalsy();
expect(state.interface.drawingPanelVisible).toBeTruthy();
expect(state.interface.printPanelVisible).toBeFalsy();
expect(state.interface.sharePanelVisible).toBeFalsy();
expect(state.interface.userPreferencesPanelVisible).toBeFalsy();
});
it('deactivateAll', () => {
stateToggleManager.deactivateAll();
expect(state.interface.helpVisible).toBeFalsy();
expect(state.interface.drawingPanelVisible).toBeFalsy();
expect(state.interface.printPanelVisible).toBeFalsy();
expect(state.interface.sharePanelVisible).toBeFalsy();
expect(state.interface.userPreferencesPanelVisible).toBeFalsy();
});
it('filterValidTogglePaths', () => {
const filteredPaths = StateToggleManager.filterValidTogglePaths(stateManager, paths);
expect(filteredPaths).not.toContain(paths[3]);
expect(filteredPaths.length).toEqual(5);
});
});