@Test public void testSetupWithOneSectionSetupRejection() { final Section<ProjectScreenModel> section1 = newMockedSection(); final Section<ProjectScreenModel> section2 = newMockedSection(); doReturn(new ArrayList<>(Arrays.asList(section1, section2))).when(sectionManager).getSections(); doReturn(promises.reject("Test")).when(presenter).setupSections(any()); presenter.setupUsingCurrentSection(); verify(view).init(eq(presenter)); verify(view).showBusyIndicator(); verify(projectScreenService).load(any()); verify(presenter).setupSections(any()); // All sections are setup regardless of exceptions/rejections verify(notificationEvent).fire(any()); }
@Test public void nameIsNotTaken() { service.setupExamples(exampleOrganizationalUnit, importProjects); verify(repositoryCopier).copy(any(OrganizationalUnit.class), eq("example-module1"), any(Path.class)); verify(projectScreenService, never()).save(any(), any(), any()); }
@Test public void testDuplicateCommand() { doNothing().when(projectScreenService).copy(any(), any()); final CopyPopUpView copyPopUpView = mock(CopyPopUpView.class); doReturn(copyPopUpView).when(copyPopUpPresenter).getView(); this.presenter.getDuplicateCommand().execute(new FileNameAndCommitMessage("newFileName", "commitMessage")); verify(copyPopUpView).hide(); verify(view).showBusyIndicator(anyString()); verify(projectScreenService).copy(presenter.workspaceProject, "newFileName"); verify(view).hideBusyIndicator(); verify(notificationEvent).fire(any()); verify(promises).resolve(); }
protected WorkspaceProject renameIfNecessary(final OrganizationalUnit ou, final WorkspaceProject project) { String name = project.getName(); Collection<WorkspaceProject> projectsWithSameName = projectService.getAllWorkspaceProjectsByName(ou, name); if (projectsWithSameName.size() > 1) { name = this.projectService.createFreshProjectName(ou, project.getName()); } if (!name.equals(project.getName())) { final Path pomXMLPath = project.getMainModule().getPomXMLPath(); final ProjectScreenModel model = projectScreenService.load(pomXMLPath); model.getPOM().setName(name); projectScreenService.save(pomXMLPath, model, ""); return projectService.resolveProject(pomXMLPath); } return project; }
@Test public void testReImport() throws Exception { service.reImport(pathToPom); verify(moduleService).reImport(pathToPom); }
@Test public void testDelete() throws Exception { final WorkspaceProject project = mock(WorkspaceProject.class); final Repository repository = mock(Repository.class); final String ouName = "test-realm"; final Space space = new Space(ouName); doReturn(repository).when(project).getRepository(); doReturn("myrepo").when(repository).getAlias(); doReturn(space).when(repository).getSpace(); service.delete(project); verify(repositoryService).removeRepository(eq(space), eq("myrepo")); } }
@Test public void testReimport() { { doReturn(false).when(this.presenter).userCanUpdateProject(); this.presenter.reimport(); verify(this.copyPopUpPresenter, never()).show(any(), any(), any()); } { doNothing().when(projectScreenService).reImport(any()); doReturn(true).when(this.presenter).userCanUpdateProject(); CommandWithFileNameAndCommitMessage duplicateCommand = mock(CommandWithFileNameAndCommitMessage.class); doReturn(duplicateCommand).when(presenter).getDuplicateCommand(); this.presenter.reimport(); verify(view).showBusyIndicator(anyString()); verify(projectScreenService).reImport(presenter.workspaceProject.getMainModule().getPomXMLPath()); verify(view).hideBusyIndicator(); verify(notificationEvent).fire(any()); verify(promises).resolve(); } }
@Test public void testForceSave() { WorkspaceProject project = mock(WorkspaceProject.class); doReturn(project).when(projectScreenService).save(any(), any(), any(), any()); presenter.concurrentPomUpdateInfo = mock(ObservablePath.OnConcurrentUpdateEvent.class); presenter.forceSave("Test comment", null); assertEquals(null, presenter.concurrentPomUpdateInfo); verify(conflictingRepositoriesPopup).hide(); verify(presenter).saveProjectScreenModel(eq("Test comment"), eq(DeploymentMode.FORCED), any()); }
@Test public void setupUsingCurrentSectionWithRemovalDueToErrors() { final Section<ProjectScreenModel> section = newMockedSection(); doReturn(new ArrayList<>(singletonList(section))).when(sectionManager).getSections(); doReturn(false).when(sectionManager).manages(eq(section)); doReturn(promises.resolve()).when(sectionManager).goToFirstAvailable(); doReturn(promises.resolve()).when(presenter).setupSections(any()); presenter.setupUsingCurrentSection(); verify(view).init(eq(presenter)); verify(view).showBusyIndicator(); verify(projectScreenService).load(any()); verify(presenter).setupSections(any()); verify(sectionManager).goToFirstAvailable(); verify(view).hideBusyIndicator(); verify(sectionManager, never()).goToCurrentSection(); verify(notificationEvent, never()).fire(any()); }
@Test public void testCopyNoPOM() throws Exception { final WorkspaceProject project = mock(WorkspaceProject.class); final OrganizationalUnit ou = mock(OrganizationalUnit.class); final Path projectRoot = mock(Path.class); doReturn(ou).when(project).getOrganizationalUnit(); doReturn(projectRoot).when(project).getRootPath(); final Repository newRepository = mock(Repository.class); final Path newRepositoryRoot = PathFactory.newPath("root", "file:///root"); doReturn(Optional.of(new Branch("master", newRepositoryRoot))).when(newRepository).getDefaultBranch(); doReturn(newRepository).when(repositoryCopier).copy(ou, "newName", projectRoot); doReturn(null).when(pomService).load(any(Path.class)); service.copy(project, "newName"); verify(repositoryCopier).copy(ou, "newName", projectRoot); verify(metadataService, never()).getMetadata(any(Path.class)); verify(pomService, never()).save(any(Path.class), any(POM.class), any(Metadata.class), anyString(), anyBoolean()); }
public void reimport() { if (this.userCanUpdateProject()) { final Path pomXMLPath = workspaceProject.getMainModule().getPomXMLPath(); view.showBusyIndicator(view.getLoadingMessage()); promises.promisify(projectScreenService, s -> { s.reImport(pomXMLPath); }).then(i -> { view.hideBusyIndicator(); notificationEvent.fire(new NotificationEvent(view.getReimportSuccessfulMessage(), NotificationEvent.NotificationType.SUCCESS)); return promises.resolve(); }).catch_(this::onError); } }
@Test public void testSaveProjectScreenModelThrowingException() { final RuntimeException testException = mock(RuntimeException.class); doThrow(testException).when(projectScreenService).save(any(), any(), any(), any()); presenter.saveProjectScreenModel("Test comment", DeploymentMode.VALIDATED, null).catch_(i -> { fail("Promise should've been resolved!"); return promises.resolve(); }); verify(projectScreenService).save(any(), any(), eq("Test comment"), eq(DeploymentMode.VALIDATED)); verify(presenter, never()).handlePomConcurrentUpdate(any(), any()); }
@Test public void setupUsingCurrentSectionWithoutPermission() { final Section<ProjectScreenModel> section = newMockedSection(); doReturn(new ArrayList<>(singletonList(section))).when(sectionManager).getSections(); doReturn(true).when(sectionManager).manages(any()); doReturn(promises.resolve()).when(sectionManager).goToCurrentSection(); doReturn(promises.resolve()).when(presenter).setupSections(any()); doReturn(false).when(libraryPermissions).userCanUpdateProject(any()); presenter.setupUsingCurrentSection(); verify(view).init(eq(presenter)); verify(view).showBusyIndicator(); verify(view).disableActions(); verify(projectScreenService).load(any()); verify(presenter).setupSections(any()); verify(sectionManager).goToCurrentSection(); verify(view).hideBusyIndicator(); verify(sectionManager, never()).goToFirstAvailable(); verify(notificationEvent, never()).fire(any()); }
doReturn(metadata).when(metadataService).getMetadata(any(Path.class)); service.copy(project, "newName");
@Test public void nameIsNotTaken() { String module1 = "module1"; WorkspaceProject project1 = mock(WorkspaceProject.class, Answers.RETURNS_DEEP_STUBS.get()); doReturn(module1).when(project1).getName(); when(project1.getMainModule().getPomXMLPath()).thenReturn(mock(Path.class)); doReturn(project1).when(service).importProject(eq(organizationalUnit), any()); service.importProjects(organizationalUnit, importProjects); verify(projectService, never()).createFreshProjectName(any(), anyString()); verify(projectScreenService, never()).save(any(), any(), any()); }
@Test public void setupUsingCurrentSection() { final Section<ProjectScreenModel> section = newMockedSection(); doReturn(new ArrayList<>(singletonList(section))).when(sectionManager).getSections(); doReturn(true).when(sectionManager).manages(any()); doReturn(promises.resolve()).when(sectionManager).goToCurrentSection(); doReturn(promises.resolve()).when(presenter).setupSections(any()); doReturn(true).when(libraryPermissions).userCanUpdateProject(any()); presenter.setupUsingCurrentSection(); verify(view).init(eq(presenter)); verify(view).showBusyIndicator(); verify(view, never()).disableActions(); verify(projectScreenService).load(any()); verify(presenter).setupSections(any()); verify(sectionManager).goToCurrentSection(); verify(view).hideBusyIndicator(); verify(sectionManager, never()).goToFirstAvailable(); verify(notificationEvent, never()).fire(any()); }
CommandWithFileNameAndCommitMessage getDuplicateCommand() { return details -> { copyPopUpPresenter.getView().hide(); view.showBusyIndicator(view.getLoadingMessage()); promises.promisify(projectScreenService, s -> { s.copy(workspaceProject, details.getNewFileName()); }).then(i -> { view.hideBusyIndicator(); notificationEvent.fire(new NotificationEvent(view.getItemSuccessfullyDuplicatedMessage(), NotificationEvent.NotificationType.SUCCESS)); return promises.resolve(); }).catch_(this::onError); }; }
@Test public void testSaveProjectScreenModelWithLocallyDetectedConcurrentUpdate() { presenter.concurrentPomUpdateInfo = mock(ObservablePath.OnConcurrentUpdateEvent.class); doNothing().when(presenter).handlePomConcurrentUpdate(eq("Test comment"), any()); presenter.saveProjectScreenModel("Test comment", DeploymentMode.VALIDATED, null).then(i -> { fail("Promise should've not been resolved!"); return promises.resolve(); }); verify(projectScreenService, never()).save(any(), any(), any(), any()); verify(presenter).handlePomConcurrentUpdate(eq("Test comment"), any()); }
doReturn(model).when(projectScreenService).load(any());
@Test public void testSaveProjectScreenModel() { WorkspaceProject project = mock(WorkspaceProject.class); Module module = mock(Module.class); doReturn(module).when(project).getMainModule(); doReturn(project).when(projectScreenService).save(any(), any(), any(), any()); presenter.saveProjectScreenModel("Test comment", DeploymentMode.VALIDATED, null).catch_(i -> { fail("Promise should've been resolved!"); return promises.resolve(); }); verify(projectScreenService).save(any(), any(), eq("Test comment"), eq(DeploymentMode.VALIDATED)); verify(projectContext).updateProjectModule(module); verify(presenter, never()).handlePomConcurrentUpdate(any(), any()); }