private synchronized long generatePullRequestId(final GitMetadata metadata) { List<PullRequest> pullRequests = metadata.getPullRequests(); final Optional<PullRequest> last = pullRequests.stream().max((first, second) -> Long.compare(first.getId(), second.getId())); return last.map(pr -> pr.getId() + 1).orElse(1l); }
private synchronized long generatePullRequestId(final GitMetadata metadata) { List<PullRequest> pullRequests = metadata.getPullRequests(); final Optional<PullRequest> last = pullRequests.stream().max((first, second) -> Long.compare(first.getId(), second.getId())); return last.map(pr -> pr.getId() + 1).orElse(1l); }
@Override public boolean equals(final Object obj) { if (obj instanceof PullRequest) { return ((PullRequest) obj).getId() == this.getId(); } else { return super.equals(obj); } }
private String buildHiddenBranchName(PullRequest pullRequest) { return String.format("PR-%s-%s/%s-%s", pullRequest.getId(), pullRequest.getSourceRepository(), pullRequest.getSourceBranch(), pullRequest.getTargetBranch()); }
private String buildHiddenBranchName(PullRequest pullRequest) { return String.format("PR-%s-%s/%s-%s", pullRequest.getId(), pullRequest.getSourceRepository(), pullRequest.getSourceBranch(), pullRequest.getTargetBranch()); }
@Override public PullRequest getPullRequest(long id) { final List<PullRequest> prs = this.getPullRequests(elem -> elem.getId() == id); if (prs.size() == 0) { throw new NoSuchElementException("The Pull Request with ID #" + id + " not found"); } final PullRequest pr = prs.get(0); return new PullRequestImpl(pr.getId(), pr.getSourceSpace(), pr.getSourceRepository(), pr.getSourceBranch(), pr.getTargetSpace(), pr.getTargetRepository(), pr.getTargetBranch(), pr.getStatus()); }
@Override public PullRequest rejectPullRequest(final PullRequest pullRequest) { checkNotNull("pullRequest", pullRequest); checkNotNull("id", pullRequest.getId()); checkNotEmpty("targetRepository", pullRequest.getTargetRepository()); String repository = pullRequest.getTargetRepository(); long id = pullRequest.getId(); this.changePullRequestStatus(repository, id, PullRequestStatus.REJECTED); return this.getRepositoryMetadata(repository).getPullRequest(id); }
@Override public PullRequest closePullRequest(final PullRequest pullRequest) { checkNotNull("pullRequest", pullRequest); checkNotNull("id", pullRequest.getId()); checkNotEmpty("targetRepository", pullRequest.getTargetRepository()); String repository = pullRequest.getTargetRepository(); long id = pullRequest.getId(); this.changePullRequestStatus(repository, id, PullRequestStatus.CLOSED); return this.getRepositoryMetadata(repository).getPullRequest(id); }
@Override public PullRequest closePullRequest(final PullRequest pullRequest) { checkNotNull("pullRequest", pullRequest); checkNotNull("id", pullRequest.getId()); checkNotEmpty("targetRepository", pullRequest.getTargetRepository()); String repository = pullRequest.getTargetRepository(); long id = pullRequest.getId(); this.changePullRequestStatus(repository, id, PullRequestStatus.CLOSED); return this.getRepositoryMetadata(repository).getPullRequest(id); }
@Override public PullRequest rejectPullRequest(final PullRequest pullRequest) { checkNotNull("pullRequest", pullRequest); checkNotNull("id", pullRequest.getId()); checkNotEmpty("targetRepository", pullRequest.getTargetRepository()); String repository = pullRequest.getTargetRepository(); long id = pullRequest.getId(); this.changePullRequestStatus(repository, id, PullRequestStatus.REJECTED); return this.getRepositoryMetadata(repository).getPullRequest(id); }
@Override public PullRequest acceptPullRequest(final PullRequest pullRequest) { checkNotNull("pullRequest", pullRequest); checkNotNull("id", pullRequest.getId()); checkNotEmpty("targetRepository", pullRequest.getTargetRepository()); String repository = pullRequest.getTargetRepository(); long id = pullRequest.getId(); final GitMetadata metadata = this.getRepositoryMetadata(repository); final PullRequest acceptPullRequest = metadata.getPullRequest(id); this.createHiddenBranch(acceptPullRequest); this.mergePullRequest(acceptPullRequest); this.changePullRequestStatus(repository, id, PullRequestStatus.MERGED); return this.getRepositoryMetadata(repository).getPullRequest(id); }
@Override public PullRequest acceptPullRequest(final PullRequest pullRequest) { checkNotNull("pullRequest", pullRequest); checkNotNull("id", pullRequest.getId()); checkNotEmpty("targetRepository", pullRequest.getTargetRepository()); String repository = pullRequest.getTargetRepository(); long id = pullRequest.getId(); final GitMetadata metadata = this.getRepositoryMetadata(repository); final PullRequest acceptPullRequest = metadata.getPullRequest(id); this.createHiddenBranch(acceptPullRequest); this.mergePullRequest(acceptPullRequest); this.changePullRequestStatus(repository, id, PullRequestStatus.MERGED); return this.getRepositoryMetadata(repository).getPullRequest(id); }
@Test public void testGeneratedNumbersWhenPRAlreadyExists() { final PullRequest pr1 = service.createPullRequest("child/a", "fix", "parent/a", "master"); try { final PullRequest pr2 = service.createPullRequest("child/a", "fix", "parent/a", "master"); } catch (PullRequestAlreadyExistsException e) { } final PullRequest pr2 = service.createPullRequest("child/b", "fix", "parent/a", "master"); assertEquals(2, pr2.getId()); }
@Test public void testCreateANewPullRequestWhenItISClosed() { final PullRequest pr1 = service.createPullRequest("child/a", "fix", "parent/a", "master"); service.acceptPullRequest(pr1); final PullRequest pr2 = service.createPullRequest("child/a", "fix", "parent/a", "master"); service.acceptPullRequest(pr2); assertEquals(2, pr2.getId()); }
@Test public void testChangeStatusToMergedPullRequest() { PullRequest pullRequest = service.createPullRequest("child/a", "develop", "parent/a", "master"); ((PullRequestServiceImpl) service).changePullRequestStatus(pullRequest.getTargetRepository(), pullRequest.getId(), PullRequestStatus.MERGED); List<PullRequest> pullRequests = service.getPullRequestsByBranch(0, 0, pullRequest.getTargetRepository(), pullRequest.getTargetBranch()); assertEquals(PullRequestStatus.MERGED, pullRequests.get(0).getStatus()); }
@Test public void testChangeStatusToClosedPullRequest() { PullRequest pullRequest = service.createPullRequest("child/a", "develop", "parent/a", "master"); ((PullRequestServiceImpl) service).changePullRequestStatus(pullRequest.getTargetRepository(), pullRequest.getId(), PullRequestStatus.CLOSED); List<PullRequest> pullRequests = service.getPullRequestsByBranch(0, 0, pullRequest.getTargetRepository(), pullRequest.getTargetBranch()); assertEquals(PullRequestStatus.CLOSED, pullRequests.get(0).getStatus()); }
@Test public void testChangeStatusToMergedPullRequest() { PullRequest pullRequest = service.createPullRequest("test-realm", "child/a", "develop", "test-realm", "parent/a", "master"); ((PullRequestServiceImpl) service).changePullRequestStatus(pullRequest.getTargetRepository(), pullRequest.getId(), PullRequestStatus.MERGED); List<PullRequest> pullRequests = service.getPullRequestsByBranch(0, 0, pullRequest.getTargetRepository(), pullRequest.getTargetBranch()); assertEquals(PullRequestStatus.MERGED, pullRequests.get(0).getStatus()); }
@Test public void testChangeStatusToClosedPullRequest() { PullRequest pullRequest = service.createPullRequest("test-realm", "child/a", "develop", "test-realm", "parent/a", "master"); ((PullRequestServiceImpl) service).changePullRequestStatus(pullRequest.getTargetRepository(), pullRequest.getId(), PullRequestStatus.CLOSED); List<PullRequest> pullRequests = service.getPullRequestsByBranch(0, 0, pullRequest.getTargetRepository(), pullRequest.getTargetBranch()); assertEquals(PullRequestStatus.CLOSED, pullRequests.get(0).getStatus()); }
@Test public void testChangeStatusToMergedPullRequest() { PullRequest pullRequest = service.createPullRequest("test-realm", "child/a", "develop", "test-realm", "parent/a", "master"); ((PullRequestServiceImpl) service).changePullRequestStatus(pullRequest.getTargetRepository(), pullRequest.getId(), PullRequestStatus.MERGED); List<PullRequest> pullRequests = service.getPullRequestsByBranch(0, 0, pullRequest.getTargetRepository(), pullRequest.getTargetBranch()); assertEquals(PullRequestStatus.MERGED, pullRequests.get(0).getStatus()); }
@Test public void testChangeStatusToClosedPullRequest() { PullRequest pullRequest = service.createPullRequest("test-realm", "child/a", "develop", "test-realm", "parent/a", "master"); ((PullRequestServiceImpl) service).changePullRequestStatus(pullRequest.getTargetRepository(), pullRequest.getId(), PullRequestStatus.CLOSED); List<PullRequest> pullRequests = service.getPullRequestsByBranch(0, 0, pullRequest.getTargetRepository(), pullRequest.getTargetBranch()); assertEquals(PullRequestStatus.CLOSED, pullRequests.get(0).getStatus()); }