Skip to content

MarcosSimao/builders-Test

Repository files navigation

builders-Test

Teste Builders api REST Crud

Construído com

  • Maven - Gerenciador de Dependências
  • JDK 11 - Java™️ Platform, Standard Edition Development Kit - Versão 11
  • Spring Boot - Framework utilizado facilitar e agilizar as Aplicações Springs
  • MongoDb- Bancos de Dados orientados a Documentos utilizam o conceito de dados e documentos autocontidos e auto descritivos.
  • git - Sistema de Controle de Versões, Open-Source api REST

Ferramenta Externa Usada

  • Postman - Ambiente de Desenvolvimento de Testes e Documentação

O problema

Desenvolva um projeto Java com Spring Boot (utilizando qualquer modulo que achar necessário), que possua uma api REST com CRUD de Cliente (id, nome, cpf, dataNascimento). O CRUD deve possuir uma api de GET, POST, DELETE, PATCH e PUT.

A api de GET deve aceitar query strings para pesquisar os clientes por CPF e nome. Também é necessário que nessa api os clientes voltem paginados e que possua um campo por cliente com a idade calculado dele considerando a data de nascimento.

Solução

Aqui eu irei mostrar todo o processo de teste feito pelo postman:

O primeiro é o GET, nele há 4 maneiras para acessá-lo... A primeira é com o método findAll que está incluído dentro do mesmo... tudo paginado. Nele lista todos que estão cadastrados no banco... para acessa-lo colocamos esta url:

GET http://localhost:8080/clientes

Esse é o resultado:

[
    {
        "id": "5f580a6fa4742943b47c87d2",
        "nome": "Januario ferreira",
        "cpf": "345.784.093.23",
        "dataNascimento": "22/10/1990",
        "idade": 29
    },
    {
        "id": "5f580a6fa4742943b47c87d1",
        "nome": "Leticia afrodite",
        "cpf": "983.345.456.11",
        "dataNascimento": "23/11/2001",
        "idade": 18
    },
    {
        "id": "5f580a6fa4742943b47c87d0",
        "nome": "Lucas almeida",
        "cpf": "234.123.093.33",
        "dataNascimento": "01/12/1999",
        "idade": 20
    },
    {
        "id": "5f580a6fa4742943b47c87cf",
        "nome": "Marcos alecrim",
        "cpf": "123.345.093.23",
        "dataNascimento": "12/02/1993",
        "idade": 27
    }
]

O segundo GET é pesquisado pelo id do cliente ... e segue esta url:

http://localhost:8080/clientes/5f580a6fa4742943b47c87d2

Resultado:

{
    "id": "5f580a6fa4742943b47c87d2",
    "nome": "Januario ferreira",
    "cpf": "345.784.093.23",
    "dataNascimento": "22/10/1990",
    "idade": 29
}

O terceiro GET é pesquisado pelo cpf do cliente, e segue esta url:

http://localhost:8080/clientes/cpf/234.123.093.33

Resultado:

{
    "id": "5f580a6fa4742943b47c87d0",
    "nome": "Lucas almeida",
    "cpf": "234.123.093.33",
    "dataNascimento": "01/12/1999",
    "idade": 20
}

O Quarto GET é pesquisado pelo nome do cliente , e segue esta url:

http://localhost:8080/clientes/nome/Marcos alecrim

Resultado:

{
    "id": "5f580a6fa4742943b47c87cf",
    "nome": "Marcos alecrim",
    "cpf": "123.345.093.23",
    "dataNascimento": "12/02/1993",
    "idade": 27
}

O segundo verbo é o POST, para acessá-lo segue este modelo de url:

 POST  http://localhost:8080/clientes

No POST segue as seguintes variáveis criada na classe Cliente: nome, cpf, dataNascimento. O id é gerado pelo próprio banco, e idade é criada a partir da data de nascimento pelo método na classe DTO cliente... Se você olhar esse modelo vai perceber que idade não está inserida no banco de dados, ela é um método chamado pelo verbo GET... E segue neste Resultado:

{
       
       "nome": "Laiane Silva ",
       "cpf": "800.784.093.23",
       "dataNascimento": "14/01/1991"
   }
   

Caso o cpf já esteja cadastrado, é retornado o erro :

{
    "timeStamp": 1599609852160,
    "status": 401,
    "error": "acesso invalido!!",
    "message": "cpf ja Cadastrado !!!",
    "path": "/clientes"
}

Caso não esteja cadastrado, o resultado segue com 200 de sucesso !!! E mais um cliente é colocado na lista:

[
   {
       "id": "5f581b74a4742943b47c87d3",
       "nome": "Laiane Silva ",
       "cpf": "800.784.093.23",
       "dataNascimento": "14/01/1991",
       "idade": 29
   },
   {
       "id": "5f580a6fa4742943b47c87d2",
       "nome": "Januario ferreira",
       "cpf": "345.784.093.23",
       "dataNascimento": "22/10/1990",
       "idade": 29
   },
   {
       "id": "5f580a6fa4742943b47c87d1",
       "nome": "Leticia afrodite",
       "cpf": "983.345.456.11",
       "dataNascimento": "23/11/2001",
       "idade": 18
   },
   {
       "id": "5f580a6fa4742943b47c87d0",
       "nome": "Lucas almeida",
       "cpf": "234.123.093.33",
       "dataNascimento": "01/12/1999",
       "idade": 20
   },
   {
       "id": "5f580a6fa4742943b47c87cf",
       "nome": "Marcos alecrim",
       "cpf": "123.345.093.23",
       "dataNascimento": "12/02/1993",
       "idade": 27
   }
]

O próximo verbo é o PUT... nele podemos atualizar um objeto por indicação do id , e segue neste modelo:

PUT http://localhost:8080/clientes/5f581b74a4742943b47c87d3

Pegamos o id de Laiane e alteramos o nome dela para Lorena... Caso o cpf seja mudado segue o mesmo método do post, retorna o erro 401 E o modelo para atualizar segue neste padrão:


{
        
        "nome": "Lorena Silva ",
        "cpf": "800.784.093.23",
        "dataNascimento": "14/01/1991"
    }

E se listarmos novamente, podemos observar que Laiane, agora, se chama Lorena...

[
    {
        "id": "5f581b74a4742943b47c87d3",
        "nome": "Lorena Silva ",
        "cpf": "800.784.093.23",
        "dataNascimento": "14/01/1991",
        "idade": 29
    },
    {
        "id": "5f580a6fa4742943b47c87d2",
        "nome": "Januario ferreira",
        "cpf": "345.784.093.23",
        "dataNascimento": "22/10/1990",
        "idade": 29
    },
    {
        "id": "5f580a6fa4742943b47c87d1",
        "nome": "Leticia afrodite",
        "cpf": "983.345.456.11",
        "dataNascimento": "23/11/2001",
        "idade": 18
    },
    {
        "id": "5f580a6fa4742943b47c87d0",
        "nome": "Lucas almeida",
        "cpf": "234.123.093.33",
        "dataNascimento": "01/12/1999",
        "idade": 20
    },
    {
        "id": "5f580a6fa4742943b47c87cf",
        "nome": "Marcos alecrim",
        "cpf": "123.345.093.23",
        "dataNascimento": "12/02/1993",
        "idade": 27
    }
]

E o Próximo verbo é o DELETE ... ele recebe o id do cliente e assim o mesmo é excluído do sistema ... Segue esta url:

DELETE http://localhost:8080/clientes/5f581b74a4742943b47c87d3

Agora se listarmos novamente, é perceptível que Lorena não se encontra mais entre os cadastrados.

[
    {
        "id": "5f580a6fa4742943b47c87d2",
        "nome": "Januario ferreira",
        "cpf": "345.784.093.23",
        "dataNascimento": "22/10/1990",
        "idade": 29
    },
    {
        "id": "5f580a6fa4742943b47c87d1",
        "nome": "Leticia afrodite",
        "cpf": "983.345.456.11",
        "dataNascimento": "23/11/2001",
        "idade": 18
    },
    {
        "id": "5f580a6fa4742943b47c87d0",
        "nome": "Lucas almeida",
        "cpf": "234.123.093.33",
        "dataNascimento": "01/12/1999",
        "idade": 20
    },
    {
        "id": "5f580a6fa4742943b47c87cf",
        "nome": "Marcos alecrim",
        "cpf": "123.345.093.23",
        "dataNascimento": "12/02/1993",
        "idade": 27
    }
]

Caso não encontre o cpf, nome e id, será retornado esse erro:

{
    "timeStamp": 1599611064332,
    "status": 404,
    "error": "nao Encontrado!!",
    "message": "Objeto não encontrado",
    "path": "/clientes/hyyyy"
}

Esses testes foram realizados no servidor Local ...

caso queira testar é só baixá-lo...!!!!

Releases

No releases published

Packages

No packages published

Languages