/** * Loads active {@link CloudProject}, if IDE {@link Project} has been specified. This should be * called when project selector and the related UI are completely initialized. Calls listeners to * notify on new project selection. */ public void loadActiveCloudProject() { Optional<CloudProject> projectOptional = Optional.ofNullable(ideProject) .map(p -> ActiveCloudProjectManager.getInstance().getActiveCloudProject(p)); projectOptional.ifPresent( activeCloudProject -> { // do not preset and notify on active project if not signed in to avoid misleading client // code to assume project selection is made with an active account. if (Services.getLoginService().isLoggedIn()) { setSelectedProject(activeCloudProject); notifyProjectSelectionListeners(); } }); }
@VisibleForTesting void handleOpenProjectSelectionDialog() { ProjectSelectionDialog projectSelectionDialog = createProjectSelectionDialog(this); CloudProject newSelection = projectSelectionDialog.showDialog(cloudProject); // if null, it means no change or user cancelled selection dialog - no update required. if (newSelection != null) { setSelectedProject(newSelection); notifyProjectSelectionListeners(); // keep as last active project if IDE project has been specified. if (ideProject != null) { ActiveCloudProjectManager.getInstance().setActiveCloudProject(newSelection, ideProject); } } }
@Test public void loadActiveProject_validProject_triggerListeners() { projectSelector.setIdeProject(mockIdeProject); when(mockActiveCloudProjectManager.getActiveCloudProject(mockIdeProject)) .thenReturn(TEST_PROJECT); projectSelector.loadActiveCloudProject(); verify(projectSelectionListener).projectSelected(TEST_PROJECT); }
@Test public void lastSelectedProject_saved_withValidIdeProject() { projectSelector.setIdeProject(mockIdeProject); when(projectSelectionDialog.showDialog(any())).thenReturn(TEST_PROJECT); projectSelector.handleOpenProjectSelectionDialog(); verify(mockActiveCloudProjectManager).setActiveCloudProject(TEST_PROJECT, mockIdeProject); }
@Before public void setUp() { projectSelector = new ProjectSelector(null /* no IDE project by default for tests. */) { @Override ProjectSelectionDialog createProjectSelectionDialog(Component parent) { return projectSelectionDialog; } }; projectSelector.addProjectSelectionListener(projectSelectionListener); ActiveCloudProjectManager.setInstance(mockActiveCloudProjectManager); when(mockLoginService.isLoggedIn()).thenReturn(true); }
@Test public void loadActiveProject_setsValidProject_withValidIdeProject() { projectSelector.setIdeProject(mockIdeProject); when(mockActiveCloudProjectManager.getActiveCloudProject(mockIdeProject)) .thenReturn(TEST_PROJECT); projectSelector.loadActiveCloudProject(); assertThat(projectSelector.getSelectedProject()).isEqualTo(TEST_PROJECT); verifyUiStateForProject(TEST_PROJECT); }