API REST desenvolvida pelo grupo Beta Campers para o Desafio Quality focado em testes durante o IT Bootcamp Backend Java (wave 6).
- Observações
- Funcionalidades
- Diagrama UML
- Imóveis
- Bairros
- Testes
- Testes de Integração District
- Testes de Integração Property
- Testes Unitários Repositório Property
⋆ getById_returnProperty_whenPropertyExist
⋆ getById_throwException_whenPropertyNotExist
⋆ save_returnProperty_whenNewProperty
⋆ save_throwException_whenNull - Testes Unitários Repositório District
⋆ getById_returnDistrict_whenDistrictExists
⋆ getById_throwException_whenDistrictNotExist
⋆ save_returnDistrict_whenNewDistrict
⋆ save_updateDistrict_whenDistrictWithId
⋆ save_throwException_whenDistrictIdExistsAndDistrictNotExist - Testes Unitários Service District
- Testes Unitários Service Property
POST /api/v1/property
Cadastra um novo imóvel.
Payload Example:
{
"propName": "Casa A",
"districtId": 1,
"propRooms": [
{
"roomName": "Quarto de solteiro",
"roomWidth": 2.5,
"roomLength": 4.2
},
{
"roomName": "Quarto de casal",
"roomWidth": 3.5,
"roomLength": 4.6
},
{
"roomName": "Cozinha",
"roomWidth": 3.6,
"roomLength": 4.8
},
{
"roomName": "Banheiro",
"roomWidth": 1.8,
"roomLength": 2.4
}
]
}
Response:
{
"propId": 1,
"propName": "Casa A",
"propDistrict": {
"districtId": 1,
"districtName": "lalala",
"valueDistrictM2": 12
},
"propRooms": [
{
"roomName": "Quarto de solteiro",
"roomWidth": 2.5,
"roomLength": 4.2
},
{
"roomName": "Quarto de casal",
"roomWidth": 3.5,
"roomLength": 4.6
},
{
"roomName": "Cozinha",
"roomWidth": 3.6,
"roomLength": 4.8
},
{
"roomName": "Banheiro",
"roomWidth": 1.8,
"roomLength": 2.4
}
]
}
- Será validado se:
- O nome do imóvel não está vazio
- O nome do imóvel começa com letra maiúscula
- O nome do imóvel não excede o limite de 30 caracteres
- O nome do bairro não está vazio
- O imóvel tem pelo menos um cômodo
- O nome do cômodo não pode estar vazio
- O nome do cômodo começa com letra maiúscula
- O nome do cômodo não excede o limite de 30 caracteres
- A largura do cômodo não está vazia
- A largura do cômodo não excede o limite de 25 metros
- O comprimento do cômodo não excede 33 metros
- O nome do imóvel não está vazio
GET /api/v1/1/area
Retorna a área de um imóvel.
Response:
48.2
GET /api/v1/1/value
Retorna o valor de um imóvel.
Response:
482.00
GET /api/v1/1/largest-room
Retorna o maior cômodo do imóvel.
Response:
{
"roomName": "Cozinha",
"roomWidth": 3.6,
"roomLength": 4.8,
"roomArea": 17.28
}
GET /api/v1/1/roomsArea
Retorna nome, largura, comprimento e área de um cômodo.
Response:
[
{
"roomName": "Quarto de solteiro",
"roomWidth": 2.5,
"roomLength": 4.2,
"roomArea": 10.5
},
{
"roomName": "Quarto de casal",
"roomWidth": 3.5,
"roomLength": 4.6,
"roomArea": 16.099999999999998
},
{
"roomName": "Cozinha",
"roomWidth": 3.6,
"roomLength": 4.8,
"roomArea": 17.28
},
{
"roomName": "Banheiro",
"roomWidth": 1.8,
"roomLength": 2.4,
"roomArea": 4.32
}
]
POST /api/v1/1/district
Cadastra um novo bairro.
Payload example:
{
"districtName" : "Centro",
"valueDistrictM2" : "12"
}
Response:
{
"districtId": 1,
"districtName": "Centro",
"valueDistrictM2": 70
}
- Será validado se:
- O nome do bairro não está vazio
- O nome do bairro começa com letra maiúscula
- O nome do imóvel não excede o limite de 45 caracteres
- O valor do m2 do bairro não está vazio
- O valor do m2 não excede 13 dígitos e 2 casas decimais
- O nome do bairro não está vazio
GET /api/v1/1/district/1
Retorna o bairro de acordo com o Id passado.
Response:
{
"districtId": 1,
"districtName": "Centro",
"valueDistrictM2": 70
}
getById_returnDistrict_whenDistrictExists
Testa o caso do método getById, quando o bairro existe e deve retornar o bairro.
É gerado um bairro como exemplo e ele é salvo.
Em seguida é aplicado o método getById.
Por fim é analisado se:
- O resultado retornado do getById não é null
- Se o id retornado é igual ao requisitado
- Se o nome retornado é igual ao requisitado
getById_throwException_whenDistrictNotExist
Testa o caso do método getById, de quando o bairro não existe e lança uma exceção.
É gerado um bairro sem Id e é esperado que quando for usado o método getById retorne uma exceção.
Por fim é analisado se:
- Se contém o Id do bairro na mensagem de erro
- Se o Status recebido é NOT FOUND
save_returnDistrict_whenNewDistrict
Testa o caso do método save, quando é adicionado um novo bairro e o mesmo é retornado.
É gerado um novo bairro e ele é aplicado o método save.
Por fim é analisado se:
- O resultado retornado do save não é null
- Se o id retornado é positivo
- Se o nome do bairro retornado é o mesmo do bairro criado.
save_updateDistrict_whenDistrictWithId
Testa o caso do método save, quando é o bairro existe e é atualizado.
É gerado um novo bairro com Id e ele é salvo.
É modificado o nome e o valor é salvo.
Por fim é analisado se:
- O resultado retornado do save não é null
- Se o Id retornado continua sendo o mesmo
- Se o nome do bairro foi atualizado
save_throwException_whenDistrictIdExistsAndDistrictNotExist
Testa o caso do método save, de quando o Id já existe e o bairro não existe e lança uma exceção.
É gerado um bairro com Id e é esperado que quando for usado o método save retorne uma exceção.
Por fim é analisado se:
- Se contém o Id do bairro na mensagem de erro
- Se o Status recebido é NOT FOUND
getById_returnProperty_whenPropertyExist
Testa o caso do método getById, quando o imóvel existe e deve retornar o imóvel.
É gerado um imóvel como exemplo e ele é salvo.
Em seguida é aplicado o método getById.
Por fim é analisado se:
- O resultado retornado do getById não é null
- Se o id retornado é igual ao requisitado
getById_throwException_whenPropertyNotExist
Testa o caso do método getById, de quando o imóvel não existe e lança uma exceção.
É gerado um imóvel sem Id e é esperado que quando for usado o método getById retorne uma exceção.
Por fim é analisado se:
- Se contém o Id não existente do imóvel na mensagem de erro
- Se o Status recebido é NOT FOUND
save_returnProperty_whenNewProperty
Testa o caso do método save, quando é adicionado um novo imóvel e o mesmo é retornado.
É gerado um novo imóvel e nele é aplicado o método save.
Por fim é analisado se:
- O resultado retornado do save não é null
save_throwException_whenNull
Testa o caso do método save, quando o parâmetro passado é null e lança uma exceção.
É verificado se a exceção é lançada quando o parâemtro é null.