Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package io.pakland.mdas.githubstats.application.dto;

public interface UserDTO {
Integer getId();
String getLogin();
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import java.util.List;

public class FetchUsersFromTeam {
private UserExternalRepository userExternalRepository;
private final UserExternalRepository userExternalRepository;


public FetchUsersFromTeam(UserExternalRepository userExternalRepository) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package io.pakland.mdas.githubstats.application.mappers;

import io.pakland.mdas.githubstats.application.dto.UserDTO;
import io.pakland.mdas.githubstats.domain.entity.User;
import java.util.ArrayList;

public class UserMapper {
public static User dtoToEntity(UserDTO dto) {
return User.builder()
.id(dto.getId())
.login(dto.getLogin())
.userReviews(new ArrayList<>())
.commits(new ArrayList<>())
.pullRequests(new ArrayList<>())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package io.pakland.mdas.githubstats.domain.entity;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.*;

import javax.persistence.*;
import java.util.ArrayList;
Expand All @@ -12,17 +10,16 @@
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "user")
public class User {

@Id
@Column(updatable = false, nullable = false)
@JsonProperty("id")
private Integer id;

@Column(name = "login")
@JsonProperty("login")
private String login;

@ManyToOne(fetch = FetchType.LAZY)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package io.pakland.mdas.githubstats.infrastructure.github.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.pakland.mdas.githubstats.application.dto.UserDTO;

public class GitHubUserDTO implements UserDTO {
@JsonProperty("id")
private Integer id;

@JsonProperty("login")
private String login;

public Integer getId() {
return this.id;
}

public String getLogin() {
return this.login;
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
package io.pakland.mdas.githubstats.infrastructure.github.repository;

import io.pakland.mdas.githubstats.application.exceptions.HttpException;
import io.pakland.mdas.githubstats.application.mappers.UserMapper;
import io.pakland.mdas.githubstats.domain.entity.User;
import io.pakland.mdas.githubstats.domain.repository.UserExternalRepository;
import io.pakland.mdas.githubstats.infrastructure.github.model.GitHubUserDTO;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;
import org.springframework.web.reactive.function.client.WebClientResponseException;

import java.util.List;

@Repository
public class UserGitHubRepository implements UserExternalRepository {

Expand All @@ -21,15 +22,17 @@ public UserGitHubRepository(WebClientConfiguration webClientConfiguration) {
}

@Override
public List<User> fetchUsersFromTeam(String organizationName, String teamName) throws HttpException {
public List<User> fetchUsersFromTeam(String organizationName, String teamName)
throws HttpException {
try {
return this.webClientConfiguration.getWebClient().get()
.uri(String.format("/orgs/%s/teams/%s/members", organizationName, teamName))
.retrieve()
.bodyToFlux(User.class)
.collectList()
.block();
} catch (WebClientResponseException ex) {
.uri(String.format("/orgs/%s/teams/%s/members", organizationName, teamName))
.retrieve()
.bodyToFlux(GitHubUserDTO.class)
.map(UserMapper::dtoToEntity)
.collectList()
.block();
} catch (WebClientResponseException ex) {
logger.error(ex.toString());
throw new HttpException(ex.getRawStatusCode(), ex.getMessage());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package io.pakland.mdas.githubstats.application.mappers;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

import io.pakland.mdas.githubstats.application.dto.UserDTO;
import io.pakland.mdas.githubstats.domain.entity.User;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

public class UserMapperTest {
@Test
public void shouldConvertDtoToEntity() {
UserDTO dto = Mockito.mock(UserDTO.class);
Mockito.when(dto.getId()).thenReturn(1);
Mockito.when(dto.getLogin()).thenReturn("github-stats");

User entity = UserMapper.dtoToEntity(dto);

assertEquals(1, (int) entity.getId());
assertEquals("github-stats", entity.getLogin());
}

}