Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] [DESAFIO] Evolução Projeto

Estava evoluindo o projeto para melhorar meu portifólio, enquanto criava a classe ArtistaServicTest para testar os métodos tive a ideia de melhorar o cadastro de artistas criado validações. Decidi então criar o pacote de validações e a classe ArtistaValidator para validar se o artista é único e se os campos nome e gênero foram preenchidos. Abaixo segue a classe para exemplificar:

package br.com.alura.exercicios.my_musics.validacoes;

import br.com.alura.exercicios.my_musics.DTO.ArtistaDTO;
import br.com.alura.exercicios.my_musics.Exception.DuplicateResourceException;
import br.com.alura.exercicios.my_musics.Exception.ResourceNotFoundException;
import br.com.alura.exercicios.my_musics.Models.Artista;
import br.com.alura.exercicios.my_musics.Models.Genero;
import br.com.alura.exercicios.my_musics.Repository.ArtistaRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class ArtistaValidator {

    @Autowired
    private ArtistaRepository repository;

    public void validarArtista(ArtistaDTO dto){

        validarNome(dto.getNome());
        validarGenero(dto.getGenero());
        validarUnico(dto.getNome());

    }

    private void validarUnico(String nome) {

        if (repository.existsByNomeEqualsIgnoreCase(nome)){
            throw new DuplicateResourceException("Artista já cadastrado!");
        }
    }


    private void validarGenero(Genero genero) {

        if(genero == null ){
            throw new ResourceNotFoundException("Gênero não pode ficar em branco!");
        }
    }

    private void validarNome(String nome) {

        if (nome.isBlank()){

            throw new ResourceNotFoundException("É necessário inserir nome!");
        }
    }


}

Segue repositório com o projeto completo: https://github.com/TheV1k/my-music

1 resposta

Oi, Victor! Tudo bem?

O seu projeto Evolução projeto mostra uma ótima iniciativa para fortalecer o portfólio, trazendo validações para o cadastro de artistas em uma aplicação com Spring Data JPA.

A ideia de criar uma classe ArtistaValidator separada ficou bem interessante, porque centraliza regras como nome obrigatório, gênero obrigatório e artista único, deixando o serviço mais limpo e facilitando os testes.

Uma dica é revisar o método validarNome, pois nome.isBlank() pode gerar erro se nome vier como null; você pode proteger com uma verificação como if (nome == null || nome.isBlank()). Também vale considerar injeção por construtor no lugar de @Autowired direto no atributo, o que costuma deixar a classe mais fácil de testar.

Você pretende criar testes unitários específicos para cada validação do ArtistaValidator?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!