diff --git a/src/main/java/io/pakland/mdas/githubstats/FetchUsersFromTeam.java b/src/main/java/io/pakland/mdas/githubstats/FetchUsersFromTeam.java index 9f54bde4..a002a751 100644 --- a/src/main/java/io/pakland/mdas/githubstats/FetchUsersFromTeam.java +++ b/src/main/java/io/pakland/mdas/githubstats/FetchUsersFromTeam.java @@ -14,7 +14,7 @@ public FetchUsersFromTeam(UserExternalRepository userExternalRepository) { this.userExternalRepository = userExternalRepository; } - public List execute(Integer organizationId, Integer teamId) throws HttpException { - return this.userExternalRepository.fetchUsersFromTeam(organizationId, teamId); + public List execute(String organizationName, String teamName) throws HttpException { + return this.userExternalRepository.fetchUsersFromTeam(organizationName, teamName); } } diff --git a/src/main/java/io/pakland/mdas/githubstats/application/FetchTeamsFromOrganization.java b/src/main/java/io/pakland/mdas/githubstats/application/FetchTeamsFromOrganization.java index 5b62dbc9..023e6e22 100644 --- a/src/main/java/io/pakland/mdas/githubstats/application/FetchTeamsFromOrganization.java +++ b/src/main/java/io/pakland/mdas/githubstats/application/FetchTeamsFromOrganization.java @@ -13,7 +13,7 @@ public FetchTeamsFromOrganization(TeamExternalRepository teamExternalRepository) this.teamExternalRepository = teamExternalRepository; } - public List execute(Integer organizationId) throws HttpException { - return teamExternalRepository.fetchTeamsFromOrganization(organizationId); + public List execute(String organizationName) throws HttpException { + return teamExternalRepository.fetchTeamsFromOrganization(organizationName); } } diff --git a/src/main/java/io/pakland/mdas/githubstats/domain/Organization.java b/src/main/java/io/pakland/mdas/githubstats/domain/Organization.java index 57bf0e74..93e7fa2b 100644 --- a/src/main/java/io/pakland/mdas/githubstats/domain/Organization.java +++ b/src/main/java/io/pakland/mdas/githubstats/domain/Organization.java @@ -22,6 +22,7 @@ public class Organization { @JsonProperty("id") private Integer id; + @Column @JsonProperty("login") private String login; diff --git a/src/main/java/io/pakland/mdas/githubstats/domain/Repository.java b/src/main/java/io/pakland/mdas/githubstats/domain/Repository.java index 81b12925..6a43bb1d 100644 --- a/src/main/java/io/pakland/mdas/githubstats/domain/Repository.java +++ b/src/main/java/io/pakland/mdas/githubstats/domain/Repository.java @@ -1,5 +1,6 @@ package io.pakland.mdas.githubstats.domain; +import java.util.Map; import javax.persistence.*; import com.fasterxml.jackson.annotation.JsonProperty; @@ -29,7 +30,6 @@ public class Repository { private String name; @Column(name = "owner_login") - @JsonProperty("owner.login") private String ownerLogin; @ManyToOne(fetch = FetchType.LAZY) @@ -41,4 +41,9 @@ public class Repository { orphanRemoval = true ) private List pullRequests = new ArrayList<>(); + + @JsonProperty("owner") + private void unpackNameFromNestedObject(Map owner) { + this.ownerLogin = owner.get("login"); + } } diff --git a/src/main/java/io/pakland/mdas/githubstats/domain/repository/TeamExternalRepository.java b/src/main/java/io/pakland/mdas/githubstats/domain/repository/TeamExternalRepository.java index 8d16c1fc..45b70736 100644 --- a/src/main/java/io/pakland/mdas/githubstats/domain/repository/TeamExternalRepository.java +++ b/src/main/java/io/pakland/mdas/githubstats/domain/repository/TeamExternalRepository.java @@ -6,5 +6,5 @@ import java.util.List; public interface TeamExternalRepository { - List fetchTeamsFromOrganization(Integer organizationId) throws HttpException; + List fetchTeamsFromOrganization(String organizationName) throws HttpException; } diff --git a/src/main/java/io/pakland/mdas/githubstats/domain/repository/UserExternalRepository.java b/src/main/java/io/pakland/mdas/githubstats/domain/repository/UserExternalRepository.java index b741ed35..0665ee78 100644 --- a/src/main/java/io/pakland/mdas/githubstats/domain/repository/UserExternalRepository.java +++ b/src/main/java/io/pakland/mdas/githubstats/domain/repository/UserExternalRepository.java @@ -6,5 +6,5 @@ import java.util.List; public interface UserExternalRepository { - List fetchUsersFromTeam(Integer organizationId, Integer teamId) throws HttpException; + List fetchUsersFromTeam(String organizationName, String teamName) throws HttpException; } diff --git a/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/PullRequestGitHubRepository.java b/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/PullRequestGitHubRepository.java index 729130f2..4945c288 100644 --- a/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/PullRequestGitHubRepository.java +++ b/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/PullRequestGitHubRepository.java @@ -19,10 +19,10 @@ public PullRequestGitHubRepository(WebClientConfiguration webClientConfiguration } @Override - public List fetchPullRequestsFromRepository(String repositoryOwnerLogin, String repositoryName) throws HttpException { + public List fetchPullRequestsFromRepository(String repositoryOwner, String repositoryName) throws HttpException { try { return this.webClientConfiguration.getWebClient().get() - .uri(String.format("/organizations/%d/team/%d/repos", repositoryOwnerLogin, repositoryName)) + .uri(String.format("/repos/%s/%s/pulls", repositoryOwner, repositoryName)) .retrieve() .bodyToFlux(PullRequest.class) .collectList() diff --git a/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/RepositoryGitHubRepository.java b/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/RepositoryGitHubRepository.java index 49872b42..b160174e 100644 --- a/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/RepositoryGitHubRepository.java +++ b/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/RepositoryGitHubRepository.java @@ -22,7 +22,7 @@ public List fetchTeamRepositories(String organizationLogin, String t throws HttpException { try { return this.webClientConfiguration.getWebClient().get() - .uri(String.format("/organizations/%d/team/%d/repos", organizationLogin, teamSlug)) + .uri(String.format("/orgs/%s/teams/%s/repos", organizationLogin, teamSlug)) .retrieve() .bodyToFlux(Repository.class) .collectList() diff --git a/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/TeamGitHubRepository.java b/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/TeamGitHubRepository.java index 822821f4..3b42616d 100644 --- a/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/TeamGitHubRepository.java +++ b/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/TeamGitHubRepository.java @@ -19,10 +19,10 @@ public TeamGitHubRepository(WebClientConfiguration webClientConfiguration) { } @Override - public List fetchTeamsFromOrganization(Integer organizationId) throws HttpException { + public List fetchTeamsFromOrganization(String organizationName) throws HttpException { try { return this.webClientConfiguration.getWebClient().get() - .uri(String.format("/orgs/%d/teams", organizationId)) + .uri(String.format("/orgs/%s/teams", organizationName)) .retrieve() .bodyToFlux(Team.class) .collectList() diff --git a/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/UserGitHubRepository.java b/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/UserGitHubRepository.java index 0ddcceb9..c6c15ea8 100644 --- a/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/UserGitHubRepository.java +++ b/src/main/java/io/pakland/mdas/githubstats/infrastructure/github/repository/UserGitHubRepository.java @@ -21,10 +21,10 @@ public UserGitHubRepository(WebClientConfiguration webClientConfiguration) { } @Override - public List fetchUsersFromTeam(Integer organizationId, Integer teamId) throws HttpException { + public List fetchUsersFromTeam(String organizationName, String teamName) throws HttpException { try { return this.webClientConfiguration.getWebClient().get() - .uri(String.format("/orgs/%d/teams/%d/members", organizationId, teamId)) + .uri(String.format("/orgs/%s/teams/%s/members", organizationName, teamName)) .retrieve() .bodyToFlux(User.class) .collectList() diff --git a/src/main/java/io/pakland/mdas/githubstats/infrastructure/shell/controller/UserOptionController.java b/src/main/java/io/pakland/mdas/githubstats/infrastructure/shell/controller/UserOptionController.java index f9cedc6a..07b76dfb 100644 --- a/src/main/java/io/pakland/mdas/githubstats/infrastructure/shell/controller/UserOptionController.java +++ b/src/main/java/io/pakland/mdas/githubstats/infrastructure/shell/controller/UserOptionController.java @@ -50,12 +50,13 @@ public void execute() { for (Organization organization : organizationList) { // Fetch the teams belonging to the available organization. List teamList = new FetchTeamsFromOrganization(teamExternalRepository) - .execute(organization.getId()); + .execute(organization.getLogin()); for (Team team : teamList) { // Fetch the members of each team. + logger.info(organization.getLogin()); List userList = new FetchUsersFromTeam(userExternalRepository) - .execute(organization.getId(), team.getId()); + .execute(organization.getLogin(), team.getSlug()); // Fetch the repositories for each team. List repositoryList = new FetchRepositoriesFromTeam(repositoryExternalRepository) .execute(organization.getLogin(), team.getSlug()); diff --git a/src/test/java/io/pakland/mdas/githubstats/infrastructure/github/repository/TeamGitHubRepositoryTest.java b/src/test/java/io/pakland/mdas/githubstats/infrastructure/github/repository/TeamGitHubRepositoryTest.java index 5dc29ddf..2ede345f 100644 --- a/src/test/java/io/pakland/mdas/githubstats/infrastructure/github/repository/TeamGitHubRepositoryTest.java +++ b/src/test/java/io/pakland/mdas/githubstats/infrastructure/github/repository/TeamGitHubRepositoryTest.java @@ -29,8 +29,8 @@ class TeamGitHubRepositoryTest { private TeamGitHubRepository teamGitHubRepository; private String organizationTeamsListResponse; - private final Integer organizationId = 119930124; - private final Integer teamId = 7098104; + private final String organizationName = "github-stats-22"; + private final String teamName = "gs-developers"; @BeforeAll void setup() throws IOException { @@ -53,22 +53,22 @@ void givenValidTeamMembersRequest_shouldCallTeamMembersEndpoint() throws Interru .addHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE); mockWebServer.enqueue(mockResponse); - teamGitHubRepository.fetchTeamsFromOrganization(this.organizationId); + teamGitHubRepository.fetchTeamsFromOrganization(this.organizationName); RecordedRequest request = mockWebServer.takeRequest(); - assertEquals(String.format("/orgs/%d/teams", this.organizationId), request.getPath()); + assertEquals(String.format("/orgs/%s/teams", this.organizationName), request.getPath()); } @Test - void givenValidTeamId_shouldReturnTeamMembers() throws HttpException { + void givenValidTeamName_shouldReturnTeamMembers() throws HttpException { MockResponse mockResponse = new MockResponse() .setBody(this.organizationTeamsListResponse) .addHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE); mockWebServer.enqueue(mockResponse); - List response = teamGitHubRepository.fetchTeamsFromOrganization(this.organizationId); + List response = teamGitHubRepository.fetchTeamsFromOrganization(this.organizationName); List expected = new ArrayList<>(); - expected.add(0, new Team(this.teamId, "gs-developers", null, new ArrayList(), new ArrayList())); + expected.add(0, new Team(7098104, "gs-developers", null, new ArrayList(), new ArrayList())); assertEquals(1, response.size()); assertArrayEquals(response.toArray(), expected.toArray()); diff --git a/src/test/java/io/pakland/mdas/githubstats/infrastructure/github/repository/UserGitHubRepositoryTest.java b/src/test/java/io/pakland/mdas/githubstats/infrastructure/github/repository/UserGitHubRepositoryTest.java index b017ace4..d014d68f 100644 --- a/src/test/java/io/pakland/mdas/githubstats/infrastructure/github/repository/UserGitHubRepositoryTest.java +++ b/src/test/java/io/pakland/mdas/githubstats/infrastructure/github/repository/UserGitHubRepositoryTest.java @@ -27,8 +27,8 @@ class UserGitHubRepositoryTest { private UserGitHubRepository userGitHubRepository; private String teamMembersListResponse; - private final Integer organizationId = 119930124; - private final Integer teamId = 7098104; + private final String organizationName = "github-stats-22"; + private final String teamName = "gs-developers"; @BeforeAll void setup() throws IOException { @@ -51,10 +51,10 @@ void givenValidTeamMembersRequest_shouldCallTeamMembersEndpoint() throws Interru .addHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE); mockWebServer.enqueue(mockResponse); - userGitHubRepository.fetchUsersFromTeam(this.organizationId, this.teamId); + userGitHubRepository.fetchUsersFromTeam(this.organizationName, this.teamName); RecordedRequest request = mockWebServer.takeRequest(); - assertEquals(String.format("/orgs/%d/teams/%d/members", this.organizationId, this.teamId), request.getPath()); + assertEquals(String.format("/orgs/%s/teams/%s/members", this.organizationName, this.teamName), request.getPath()); } @Test @@ -65,7 +65,7 @@ void givenValidTeamId_shouldReturnTeamMembers() throws HttpException { .addHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE); mockWebServer.enqueue(mockResponse); - List response = userGitHubRepository.fetchUsersFromTeam(this.organizationId, this.teamId); + List response = userGitHubRepository.fetchUsersFromTeam(this.organizationName, this.teamName); List expected = new ArrayList<>(); expected.add(0, new User(33031570, "manerow", null, new ArrayList<>(), new ArrayList<>())); expected.add(1, new User(48334745, "mikededo", null, new ArrayList<>(), new ArrayList<>()));