Boa noite, pessoal!
Se eu tenho uma classe que faz somente a conversão de um objeto para outro, tipo um mapper, e não há nenhuma regra de negócio nesse mapper, eu não deveria testar, certo? Eu sei que no curso o professor instruiu para não testar dto's, por exemplo, no projeto existem alguns construtores que fazem meio que um papel de mapper, exemplo:
public record AbrigoDto(Long id, String nome) {
public AbrigoDto(Abrigo abrigo) {
this(abrigo.getId(), abrigo.getNome());
}
}
Aqui a pessoa passa um Abrigo e recebe um AbrigoDto.
Mas se tivésssemos um mapper com set(), do tipo:
public class UserMapper {
public UserDTO toDTO(User user) {
if (user == null) {
return null;
}
UserDTO dto = new UserDTO();
dto.setId(user.getId());
dto.setName(user.getName());
dto.setEmail(user.getEmail());
return dto;
}
}
Também não faz sentido testar, certo?
Mas e se dentro desses sets() tivessem alguma regra de negócio do tipo:
public class UserDTO {
private String id;
private String nome;
.
.
.
public void setNome(String nome) {
if (nome == null || nome.trim().isEmpty()) {
throw new IllegalArgumentException("O nome não pode ser nulo ou em branco");
}
if (nome.length() < 2) {
throw new IllegalArgumentException("O nome deve ter pelo menos 2 caracteres");
}
if (!nome.matches("[a-zA-Z\\s]+")) {
throw new IllegalArgumentException("O nome não pode conter números ou caracteres especiais");
}
this.nome = nome;
}
}
Eu deveria testar, certo?