private void setManagedSdkUiAvailable(boolean available) { if (ServiceManager.getService(PluginInfoService.class).shouldEnable(GctFeature.MANAGED_SDK)) { enableAutomaticUpdatesCheckbox.setEnabled(available); // only make it visible if managed SDK is active, not currently installing or updating, and // not up-to-date. if (available && CloudSdkServiceUserSettings.getInstance().getUserSelectedSdkServiceType() == CloudSdkServiceType.MANAGED_SDK) { ManagedCloudSdkService managedCloudSdkService = (ManagedCloudSdkService) CloudSdkService.getInstance(); updateNowButton.setEnabled( managedCloudSdkService.getStatus() == SdkStatus.READY && !managedCloudSdkService.isUpToDate()); } else { updateNowButton.setEnabled(false); } } }
@Test public void interruptedInstall_status_notAvailable() throws Exception { emulateMockSdkInstallationProcess(MOCK_SDK_PATH); SdkInstaller sdkInstaller = mockManagedCloudSdk.newInstaller(); when(sdkInstaller.install(any(), any())).thenThrow(new InterruptedException()); when(mockManagedCloudSdk.newInstaller()).thenReturn(sdkInstaller); sdkService.install(); assertThat(sdkService.getStatus()).isEqualTo(SdkStatus.NOT_AVAILABLE); }
@Test public void initial_service_notActivated_status_notAvailable() { assertThat(new ManagedCloudSdkService().getStatus()).isEqualTo(SdkStatus.NOT_AVAILABLE); }
@Test public void cancelledInstall_stops_installing_onActivation() throws Exception { emulateMockSdkInstallationProcess(MOCK_SDK_PATH); SdkInstaller sdkInstaller = mockManagedCloudSdk.newInstaller(); when(sdkInstaller.install(any(), any())).thenThrow(new CancellationException()); when(mockManagedCloudSdk.newInstaller()).thenReturn(sdkInstaller); sdkService.install(); // cancelled, now attempt to do clean install process and activation. emulateMockSdkInstallationProcess(MOCK_SDK_PATH); sdkService.activate(); // install is not supposed to run on activation anymore. assertThat(sdkService.getStatus()).isEqualTo(SdkStatus.NOT_AVAILABLE); }
@Test public void activate_service_sdkInstalled_status_ready() { makeMockSdkInstalled(MOCK_SDK_PATH); sdkService.activate(); assertThat(sdkService.getStatus()).isEqualTo(SdkStatus.READY); }
@Test public void updateNow_enabled_whenSdkReadyToUpdate() { ManagedCloudSdkService managedCloudSdkService = mock(ManagedCloudSdkService.class); when(mockCloudSdkServiceManager.getCloudSdkService()).thenReturn(managedCloudSdkService); when(managedCloudSdkService.getStatus()).thenReturn(SdkStatus.READY); when(managedCloudSdkService.isUpToDate()).thenReturn(false); ApplicationManager.getApplication() .invokeAndWait( () -> { // use non-spy panel as spy messes up with UI event thread field updates. CloudSdkPanel sdkPanel = new CloudSdkPanel(); CloudSdkServiceUserSettings.getInstance() .setUserSelectedSdkServiceType(CloudSdkServiceType.MANAGED_SDK); sdkPanel.reset(); assertThat(sdkPanel.getUpdateNowButton().isEnabled()).isTrue(); }); }
@Test public void updateNow_notEnabled_whenSdkUpToDate() { ManagedCloudSdkService managedCloudSdkService = mock(ManagedCloudSdkService.class); when(mockCloudSdkServiceManager.getCloudSdkService()).thenReturn(managedCloudSdkService); when(managedCloudSdkService.getStatus()).thenReturn(SdkStatus.READY); when(managedCloudSdkService.isUpToDate()).thenReturn(true); ApplicationManager.getApplication() .invokeAndWait( () -> { // use non-spy panel as spy messes up with UI event thread field updates. CloudSdkPanel sdkPanel = new CloudSdkPanel(); CloudSdkServiceUserSettings.getInstance() .setUserSelectedSdkServiceType(CloudSdkServiceType.MANAGED_SDK); sdkPanel.reset(); assertThat(sdkPanel.getUpdateNowButton().isEnabled()).isFalse(); }); }
@Test public void updateNow_notEnabled_whenSdkNotReady() { when(mockCloudSdkService.getStatus()).thenReturn(SdkStatus.INSTALLING); ApplicationManager.getApplication() .invokeAndWait( () -> { // use non-spy panel as spy messes up with UI event thread field updates. CloudSdkPanel sdkPanel = new CloudSdkPanel(); CloudSdkServiceUserSettings.getInstance() .setUserSelectedSdkServiceType(CloudSdkServiceType.MANAGED_SDK); sdkPanel.reset(); assertThat(sdkPanel.getUpdateNowButton().isEnabled()).isFalse(); }); }