Skip to content

AndreMdS/xtest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A API recebe pela URL /api/pedidos um JSON contendo as informações do pedido, o JSON pode ter dois formato, um é contendo somente o Id de um endereço já salvo no banco e outro contendo um endereço novo para salvar no banco:

JSON com o Id do endereço:

{ "cliente" : 1, "valorTotal" : 70.20, "enderecoId" : 2, "produtos" : [ { "id" : 2, "quantidade" : 1 }, { "id" : 1, "quantidade" : 1 } ] }

JSON contendo um endereço novo:

{ "cliente" : 10, "valorTotal" : 70.20, "endereco" : { "logradouro" : "Rua Zé", "numero" : 100, "complemento" : "", "cidade" : "Teste", "estado" : "Opa", "cep" : "86045-804" }, "produtos" : [ { "id" : 2, "quantidade" : 1 }, { "id" : 1, "quantidade" : 1 } ] }

Caso a API recebe um JSON tendo o Id de um endereço existente e os dados de um novo endereço, será retornado uma mensagem de erro para o usuário.

A API faz algumas validações dos dados recebidos:

  • Conferência do valor total da compra -> O sistema calcula se o valor total informado no JSON está coerente, somando o valor de cada item da compra e conferindo o valor total informado. Caso esteja incoerente, a API retorna uma mensagem informando o erro.
  • Validação do endereço - > O sistema verifica se endereço informado pertence ao cliente, isso no caso do JSON que tem somente o Id do endereço, caso tenha um novo endereço, será salvo e vinculado com o cliente. Se o endereço não pertencer ao cliente, será enviado uma mensagem sobre esse erro, e se o JSON conter tanto um endereço novo e o Id de um existente, ou, nenhuma das informações, uma mensagem de erro para o usuário será enviado.
  • Outras validações -> O sistema verifica se o payload do JSON está correto, se as informações necessárias estão presentes, se há produtos na lista e se o tipo de dado está certo. Para cada tipo de erro, o sistema retorna uma mensagem indicado que tipo de erro ocorreu.

Informações adicionais:

  • Utilizei o MySQL como banco de dados, mas a API utiliza o H2 caso não encontre o banco. O hibernate está configurado para criar o banco e popular com alguns dados pré definidos toda vez que o projeto for rodado, e também quando realizar os testes unitários.
  • O envio de mensagem pelo rabbitMQ, tanto o produtor e o consumidor estão implementados no projeto, a mensagem somente será enviada se o pedido ser salvo no banco de dados.
  • O teste unitário envolve testar os métodos que extraem os dados do JSON, como também envolve fazer requisições HTTP enviando um JSON pré definido e verificar se a resposta de requisição é o esperado.
  • Para realizar as requisições, utilizei um software chamado Postman.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages