/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.ide.workspace.state; import com.google.inject.Provider; import elemental.json.Json; import elemental.json.JsonObject; import org.eclipse.che.ide.api.parts.PartPresenter; import org.eclipse.che.ide.api.parts.Perspective; import org.eclipse.che.ide.api.parts.PerspectiveManager; import org.eclipse.che.ide.menu.MainMenuPresenter; import org.eclipse.che.ide.menu.StatusPanelGroupPresenter; import org.eclipse.che.ide.ui.toolbar.ToolbarPresenter; import org.eclipse.che.ide.workspace.WorkspacePresenter; import org.eclipse.che.ide.workspace.WorkspaceView; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import java.util.HashMap; import java.util.Map; import static org.fest.assertions.Assertions.assertThat; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; /** * @author Evgen Vidolob */ @RunWith(MockitoJUnitRunner.class) public class WorkspacePresenterPersistenceTest { @Mock private WorkspaceView workspaceView; @Mock private Perspective perspective1; @Mock private Perspective perspective2; @Mock private MainMenuPresenter mainMenuPresenter; @Mock private StatusPanelGroupPresenter statusPanelGroupPresenter; @Mock private ToolbarPresenter toolbarPresenter; @Mock private PartPresenter part1; private WorkspacePresenter presenter; @Mock private Provider<PerspectiveManager> perspectiveManagerProvider; private PerspectiveManager perspectiveManager; @Before public void setUp() throws Exception { Map<String, Perspective> map = new HashMap<>(); map.put("perspective1", perspective1); map.put("perspective2", perspective2); perspectiveManager = new PerspectiveManager(map, "perspective1"); when(perspectiveManagerProvider.get()).thenReturn(perspectiveManager); presenter = new WorkspacePresenter(workspaceView, perspectiveManagerProvider, mainMenuPresenter, statusPanelGroupPresenter, toolbarPresenter, "perspective1"); } @Test public void shouldStorePerspectives() throws Exception { when(perspective1.getState()).thenReturn(Json.createObject()); when(perspective2.getState()).thenReturn(Json.createObject()); JsonObject state = presenter.getState(); JsonObject perspectives = state.getObject("perspectives"); assertThat(perspectives).isNotNull(); assertThat(perspectives.getObject("perspective1")).isNotNull(); } @Test public void shouldRestoreStorePerspectives() throws Exception { JsonObject state = Json.createObject(); state.put("currentPerspectiveId", "perspective2"); JsonObject perspectives = Json.createObject(); state.put("perspectives", perspectives); JsonObject perspective1State = Json.createObject(); perspectives.put("perspective1", perspective1State); presenter.loadState(state); verify(perspective1).loadState(perspective1State); } }