Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
66097af
Add Cenarios file
JoaoTeles87 Dec 16, 2024
0778d09
Create criacaoManutencaoUsuario.rb
JoaoTeles87 Dec 16, 2024
afd7fff
feat: creation of the CadastroManutencao and Login features
JoaoTeles87 Dec 18, 2024
a529771
feat(CadastroManutencao): add validation for mismatched passwords and…
JoaoTeles87 Dec 18, 2024
79d5180
feat: add file ReservaSalas
JoaoTeles87 Dec 18, 2024
6b9bd3e
feat: add file ReservaSalas
JoaoTeles87 Dec 19, 2024
9715914
feat: update file ReservaSalas
JoaoTeles87 Dec 19, 2024
1c5ae9d
feat: adding backend and connecting with vite.js server in frontend
JoaoTeles87 Feb 7, 2025
e9daa0f
Update README.md
JoaoTeles87 Feb 7, 2025
4707504
feat: adding requirements.txt in backend venv
JoaoTeles87 Feb 7, 2025
2f277e8
Merge branch 'dev' of https://github.com/JoaoTeles87/2024.2-Equipe3 i…
JoaoTeles87 Feb 7, 2025
df69306
Adicionando rotas de Login e Cadastro e sistematizandoesqueleto da ap…
JoaoTeles87 Feb 9, 2025
c2b59a4
fix: retirando expiração de token, access_token
JoaoTeles87 Feb 9, 2025
7a2f68d
updating: requirements.txt
JoaoTeles87 Feb 9, 2025
b8c1083
criacao de rotas backend
JoaoTeles87 Feb 9, 2025
f8a8f4f
Merge pull request #1 from JoaoTeles87/login/cadastro
JoaoTeles87 Feb 9, 2025
db1fb93
feat: implements resource and maintenance request routes
fernandapascoal Feb 11, 2025
6d6ee5b
refactor: adjust new route conditions according to scenarios
fernandapascoal Feb 15, 2025
b6f050e
fix(validatio): correcting imports and routes
JoaoTeles87 Feb 15, 2025
a563162
fix(service): adequando as rotas as features de serviço.
JoaoTeles87 Feb 15, 2025
7d7a165
test(service): Adicionando testes de serviço.
JoaoTeles87 Feb 15, 2025
0082b65
feat: adds necessary routes/endpoints to reservas and salas
lucasddmc Feb 16, 2025
e2285bd
fix(backend): Changing the logic to catch edge cases
JoaoTeles87 Feb 16, 2025
fd588ef
fix(services): Changing scenarios and tests requests
JoaoTeles87 Feb 16, 2025
34af047
fix(services): Correcting comments and Login Feature
JoaoTeles87 Feb 16, 2025
271d0a2
Refactoring(services): changing success scenarios
JoaoTeles87 Feb 16, 2025
659077f
test: Atualizando testes para rodá-los na mesma instância
JoaoTeles87 Feb 16, 2025
a7dc31c
remove: JWT engine
JoaoTeles87 Feb 16, 2025
34408e9
cleanup: comments and standardizing variables
JoaoTeles87 Feb 16, 2025
107e873
docs: updating tips for run the project
JoaoTeles87 Feb 16, 2025
7ede35d
feat(recursos/manutencao): adds all service scenarios and tests and a…
fernandapascoal Feb 17, 2025
0b4c924
feat: Adds new feature files for salas and reservas
lucasddmc Feb 17, 2025
a44ac21
feat: Adds new feature files for salas and reservas
lucasddmc Feb 17, 2025
c42f32c
Merge pull request #3 from lucasddmc/reservas-salas
fernandapascoal Feb 17, 2025
33ea051
Merge branch 'dev' into login/cadastro
fernandapascoal Feb 18, 2025
c01227f
Merge pull request #7 from JoaoTeles87/login/cadastro
fernandapascoal Feb 18, 2025
2d0cc33
Merge branch 'dev' into recursos/manutencao
JoaoTeles87 Feb 18, 2025
bd14a5f
Merge pull request #8 from JoaoTeles87/recursos/manutencao
JoaoTeles87 Feb 18, 2025
4f6e805
fix: back to the merge before conflicts in backend
JoaoTeles87 Feb 18, 2025
89b3f47
fix: conflicts in blueprints
JoaoTeles87 Feb 18, 2025
347c597
refactoring: using non deprecated functions in editing and deleting r…
JoaoTeles87 Feb 18, 2025
35b6131
fix: scenario loginSucesso and login.py route
JoaoTeles87 Feb 19, 2025
9b97134
Modificações feitas em todos os arquivos referentes à feature de Revi…
chgs3 Feb 19, 2025
1365a18
Pequenas alterações dentro do arquivo da conftest, pelo sono, foi esq…
chgs3 Feb 19, 2025
b5de412
Alterações pontuais, novas importações adicionadas em blueprints.
chgs3 Feb 19, 2025
280baf2
Merge branch 'recuperar-backend' into reviewSala(basedRecuperarBackend)
JoaoTeles87 Feb 19, 2025
b2f308e
fix: dependency between new instance of app
JoaoTeles87 Feb 19, 2025
fb3539e
feat: Adding backend/frontend connection in Login and Cadastro
JoaoTeles87 Mar 4, 2025
5fad590
feat: Adding details about how the frontend directorys works
JoaoTeles87 Mar 4, 2025
3abcbeb
remove: cookies.txt
JoaoTeles87 Mar 17, 2025
3022596
fix: CORS policy
JoaoTeles87 Mar 17, 2025
bec2eb7
feat: Updating all the connections between the API
JoaoTeles87 Mar 17, 2025
2e0a23a
feat: adding the UX designs to the pages.
JoaoTeles87 Mar 17, 2025
7f94c2a
feat: updating endpoint "/" and "/cadastro"
JoaoTeles87 Mar 19, 2025
a9bae1e
fix: success in cadastro
JoaoTeles87 Mar 22, 2025
1ed8bd9
reafactor: excluding comments
JoaoTeles87 Mar 22, 2025
a63857f
feat: adding test files from login/cadastro
JoaoTeles87 Mar 22, 2025
ed5293e
feat: add new pages with sidebar and update routing structure
ergdln Mar 23, 2025
da823e4
Merge pull request #18 from JoaoTeles87/screen-modal
fernandapascoal Mar 23, 2025
7cb4d18
feature: implementing recursos
ergdln Mar 23, 2025
cdce085
Merge pull request #19 from JoaoTeles87/feature-recursos
fernandapascoal Mar 23, 2025
bb059bb
"feat: add maintenance frontend and backend/frontend connection to th…
fernandapascoal Mar 24, 2025
faa8eca
"style: adjusting resource page alignment to the left"
fernandapascoal Mar 24, 2025
8a2bfc5
"tests: add login/register features and login/register tests at cypre…
fernandapascoal Mar 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .env.example

This file was deleted.

93 changes: 93 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# 🚀 Guia de Integração do Frontend

Este guia explica como configurar, estruturar e integrar o frontend do projeto React com o backend Flask.

---

# ESS Front-end React

This is the Front-end base project in React for the Software and Systems Engineering discipline, offered by the Informatics Center (CIn) of the Federal University of Pernambuco (UFPE).
Expand Down Expand Up @@ -46,6 +52,26 @@ npm run

This project uses `.env` files to manage environment variables. You can create a `.env.development` file in the project directory and set the environment variables in the file (iou can create it from .`env.example`). The `env` script in the `package.json` file uses the `env-cmd` package to load the environment variables from the `.env.development` file.

Crie um arquivo .env na raiz do frontend e adicione a URL da API:
```
VITE_API_URL=http://127.0.0.1:5000
```

📂 src/ → Código-fonte do projeto │
├── 📂 app/ → Páginas principais (leva a estilização das telas) │ ├── 📂 home/ │ │ ├── 📂 pages/ │ │ │ ├── Login.tsx → Tela de Login │ │ │ ├── Cadastro.tsx → Tela de Cadastro │ │ │ ├── Reservas.tsx → Tela após login │
├── 📂 shared/ → Recursos compartilhados │ ├── 📂 services/ → Serviços de integração com a API │ │ ├── autorizacao.tsx → Requisições de login/cadastro │
├── App.tsx → Arquivo principal do React onde você adiciona suas rotas criadas nas pages! ├── main.tsx → Ponto de entrada da aplicação │ ├── .env → Configuração da API ├── package.json → Lista de dependências ├── README.md → Você está aqui! 📌

Endereço para se colocar as estilizações próprias de cada tela.
```
src\app\home\styles
```

Endereço onde se pode colocar arquivos css em comum ao sistema
```
src\shared\components
```

### Running the App

To start the app, run the following command:
Expand All @@ -56,6 +82,73 @@ npm run dev

This command will run the React app in development with Vite.js script



## Rodando o backend Flask

No powerShell mude para o diretório backend
```
cd backend
```
Crie arquivos __init__.py em todos diretórios dentro de backend, inclusive nele.

backend/
__init__.py
main.py
testes/
__init__.py
teste_exemplo.py

MacOS
Dentro da pasta backend no terminal, execute os seguintes comandos:

```
export PYTHONPATH=$(pwd)/backend
export FLASK_APP=main
flask run
```

Dentro da pasta backend/testes, execute:

```
export PYTHONPATH=$(pwd)/backend
pytest
Windows (Powershell)
```
Dentro da pasta backend no PowerShell, execute os seguintes comandos:

```
$env:PYTHONPATH = "$(pwd)/backend"
$env:FLASK_APP = "main"
flask run
```


Crie a venv
```
python -m venv venv
```
Ative a venv
```
venv\Scripts\activate
```
e agora você deve instalar todas as dependencias do projeto

```
pip install -r requirements.txt
```

obs: caso sejam necessárias novas bibliotecas e deseja atualizar o requirements.txt por favor recirar arquivo.
```
pip freeze > requirements.txt
```

Rodando servidor Flask localmente na rota 5000.
```
python main.py
```


## Running the tests

There are two types of tests configured in the base project: unit tests using Vitest with React Testing Library and E2E acceptance tests using Cypress with Cucumber. It's interesting to create the **.env.testing** at the root of the project the same way it was created to run in development, changing the necessary values.
Expand Down
Empty file added backend/__init__.py
Empty file.
Binary file added backend/__pycache__/__init__.cpython-313.pyc
Binary file not shown.
Binary file added backend/__pycache__/blueprints.cpython-313.pyc
Binary file not shown.
Binary file added backend/__pycache__/config.cpython-313.pyc
Binary file not shown.
Binary file added backend/__pycache__/main.cpython-313.pyc
Binary file not shown.
38 changes: 38 additions & 0 deletions backend/blueprints.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
from backend.rotas.login import login_bp
from backend.rotas.cadastro import cadastro_bp
from backend.rotas.logout import logout_bp
from backend.rotas.criar_solicitacao_manutencao import criar_manutencao_bp
from backend.rotas.criar_solicitacao_recursos import criar_recursos_bp
from backend.rotas.excluir_solicitacao_manutencao import excluir_manutencao_bp
from backend.rotas.excluir_solicitacao_recursos import excluir_recursos_bp
from backend.rotas.editar_solicitacao_manutencao import editar_manutencao_bp
from backend.rotas.editar_solicitacao_recursos import editar_recursos_bp
from backend.rotas.reservas import reservas_bp
from backend.rotas.salas import salas_bp
from backend.rotas.usuario import usuarios_bp
from backend.rotas.criarReview import criar_review_bp
from backend.rotas.atualizarReview import atualizar_review_bp
from backend.rotas.deletarReview import deletar_review_bp
from backend.rotas.obterReview import obter_review_bp
from backend.rotas.listarReview import listar_reviews_bp
from flask_cors import CORS

# Registra os Blueprints
def registrarBlueprints(app):
blueprints = [
login_bp, cadastro_bp, logout_bp, criar_manutencao_bp, criar_recursos_bp, excluir_manutencao_bp, excluir_recursos_bp, editar_recursos_bp, editar_manutencao_bp,
salas_bp, usuarios_bp, reservas_bp, criar_review_bp, listar_reviews_bp, obter_review_bp, deletar_review_bp, atualizar_review_bp
]

for blueprint in blueprints:
CORS(blueprint)
app.register_blueprint(blueprint)

CORS(app, supports_credentials=True)

@app.after_request
def add_cors_headers(response):
response.headers["Access-Control-Allow-Origin"] = "*"
response.headers["Access-Control-Allow-Methods"] = "GET, POST, PUT, DELETE, OPTIONS"
response.headers["Access-Control-Allow-Headers"] = "Content-Type, Authorization"
return response
7 changes: 7 additions & 0 deletions backend/config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import os

class Config:
SECRET_KEY = os.urandom(24)
SQLALCHEMY_DATABASE_URI = "sqlite:///users.db"
SQLALCHEMY_TRACK_MODIFICATIONS = False

13 changes: 13 additions & 0 deletions backend/features/atualizarReview.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Feature: Atualizar avaliação

Scenario: Atualizar uma avaliação existente
Given o professor Suruagy deseja editar uma avaliação feita anteriormente
When ele envia uma requisição PUT "/api/reviews/1" especificando o id "1" da avaliação que deseja editar
And modifica a nota de "4" para "5" e o comentário de "Sala boa, mas com algumas falhas." para "Modificações feitas, a sala está impecável agora!"
Then o sistema retorna a mensagem "Avaliação atualizada com sucesso." e o status 200 OK

Scenario: Tentar atualizar uma avaliação que não existe
Given o professor Suruagy deseja editar uma avaliação cuja qual não está presente no sistema
When ele envia uma requisição PUT "/api/reviews/1" especificando o id "1" da avaliação que deseja editar
And modifica a nota de "4" para "5" e o comentário de "Sala boa, mas com algumas falhas." para "Falhas corrigidas, a sala está impecável!"
Then o sistema retorna a mensagem "Avaliação não encontrada para o ID fornecido." e o status 404 NOT FOUND
100 changes: 100 additions & 0 deletions backend/features/cadastroServico.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
Feature: Serviço de Cadastro de Usuários

Scenario: Sucesso no cadastro de usuário
Given o usuário deseja se cadastrar
When ele informa o nome "Demosténes"
And ele informa o CPF "126.455.789-00"
And ele informa o email "demostenessouza@example.com"
And ele informa se é professor "N"
And ele informa a senha "SecurePassword123"
And ele informa a confirmação da senha "SecurePassword123"
And ele envia uma requisição POST para "/cadastro"
Then a resposta deve conter a mensagem "Cadastro criado com sucesso!"
And o status code deve ser "201"

Scenario: Sucesso no cadastro de professor
Given o usuário deseja se cadastrar
When ele informa o nome "Tatiana"
And ele informa o CPF "331.879.789-33"
And ele informa o email "vanessasilva@example.com"
And ele informa se é professor "S"
And ele informa o SIAPE "101110"
And ele informa a senha "12345678"
And ele informa a confirmação da senha "12345678"
And ele envia uma requisição POST para "/cadastro"
Then a resposta deve conter a mensagem "Cadastro criado com sucesso!"
And o status code deve ser "201"

Scenario: Fracasso no cadastro por campos obrigatórios não preenchidos
Given o usuário deseja se cadastrar
When ele informa o nome "João"
And ele informa o CPF "987.654.321-00"
And ele informa o email "joao@iat.com"
And ele informa se é professor "N"
And ele informa a senha "Password123"
And ele deixa o campo "Confirmar Senha" com ""
And ele envia uma requisição POST para "/cadastro"
Then a resposta deve conter a mensagem "Confirmar Senha é obrigatório."
And o status code deve ser "400"

Scenario: Fracasso no cadastro por duplicação de ID única
Given o usuário deseja se cadastrar
When ele informa o nome "Carlos Mendes"
And ele informa o CPF "126.456.789-00"
And ele informa o email "demostenes@example.com"
And ele informa se é professor "S"
And ele informa o SIAPE "010101"
And ele informa a senha "Password456"
And ele informa a confirmação da senha "Password456"
And ele envia uma requisição POST para "/cadastro"
Then a resposta deve conter a mensagem "Erro: email/cpf já está registrado."
And o status code deve ser "409"

Scenario: Fracasso no cadastro por senhas que não coincidem
Given o usuário deseja se cadastrar
When ele informa o nome "Beatriz"
And ele informa o CPF "789.456.123-00"
And ele informa o email "Beatriz.oliveira@example.com"
And ele informa se é professor "N"
And ele informa a senha "MyPassword123"
And ele informa a confirmação da senha "DifferentPassword123"
And ele envia uma requisição POST para "/cadastro"
Then a resposta deve conter a mensagem "As senhas não coincidem."
And o status code deve ser "400"

Scenario: Fracasso no cadastro por formato inválido de email
Given o usuário deseja se cadastrar
When ele informa o nome "Lucas"
And ele informa o CPF "987.654.321-00"
And ele informa o email "lucas.example.com"
And ele informa se é professor "N"
And ele informa a senha "SenhaForte123"
And ele informa a confirmação da senha "SenhaForte123"
And ele envia uma requisição POST para "/cadastro"
Then a resposta deve conter a mensagem "Formato de email inválido. Use um email válido, como exemplo@dominio.com."
And o status code deve ser "400"

Scenario: Fracasso no cadastro por formato inválido de CPF
Given o usuário deseja se cadastrar
When ele informa o nome "Fabricio"
And ele informa o CPF "123"
And ele informa o email "fabricio@example.com"
And ele informa se é professor "N"
And ele informa a senha "SenhaSegura456"
And ele informa a confirmação da senha "SenhaSegura456"
And ele envia uma requisição POST para "/cadastro"
Then a resposta deve conter a mensagem "CPF inválido. Digite um CPF válido no formato XXX.XXX.XXX-XX."
And o status code deve ser "400"

Scenario: Fracasso no cadastro por siape já registrado
Given o usuário deseja se cadastrar
When ele informa o nome "Max"
And ele informa o CPF "987.654.321-00"
And ele informa o email "max@gmail.com"
And ele informa se é professor "S"
And ele informa o SIAPE "101010"
And ele informa a senha "Senha123"
And ele informa a confirmação da senha "Senha123"
And ele envia uma requisição POST para "/cadastro"
Then a resposta deve conter a mensagem "Erro: siape já está registrado."
And o status code deve ser "409"
26 changes: 26 additions & 0 deletions backend/features/criarReview.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Feature: Criação de Review

Scenario: Criação bem-sucedida de review
Given que o professor Suruagy deseja fazer uma avaliação pós reserva com reserva_id "1" para a sala_id "2"
When ele envia uma requisição POST para "/api/reviews" com os dados reserva_id "1", sala_id "2", usuario_id "3", nota "4" e comentário "Sala boa, mas com algumas falhas."
Then o sistema retorna "Avaliação criada com sucesso!" com o status 201

Scenario: Falha ao criar review sem nota
Given que o professor Suruagy deseja fazer uma avaliação pós reserva com reserva_id "1" para a sala_id "2"
When ele envia uma requisição POST para "/api/reviews" com os dados reserva_id "1", sala_id "2", usuario_id "3", nota "" e comentário "Sala boa, mas sem computador!"
Then o sistema retorna "A nota é obrigatória para avaliar a sala." com o status 400

Scenario: Falha ao criar review sem sala_id
Given que o professor Suruagy deseja fazer uma avaliação pós reserva com reserva_id "1" para a sala_id ""
When ele envia uma requisição POST para "/api/reviews" com os dados reserva_id "1", sala_id "", usuario_id "3", nota "4" e comentário "Sala boa, mas sem computador!"
Then o sistema retorna "O ID da Sala é obrigatório para avaliar a sala." com o status 400

Scenario: Falha ao criar review sem usuario_id
Given que o professor Suruagy deseja fazer uma avaliação pós reserva com reserva_id "1" para a sala_id "2"
When ele envia uma requisição POST para "/api/reviews" com os dados reserva_id "1", sala_id "2", usuario_id "", nota "4" e comentário "Sala boa, mas sem computador!"
Then o sistema retorna "O ID do Usuário é obrigatório para avaliar a sala." com o status 400

Scenario: Falha ao criar review sem reserva_id
Given que o professor Suruagy deseja fazer uma avaliação pós reserva com reserva_id ""
When ele envia uma requisição POST para "/api/reviews" com os dados reserva_id "", sala_id "2", usuario_id "3", nota "4" e comentário "Sala boa, mas sem computador!"
Then o sistema retorna "O ID da Reserva é obrigatório para avaliar a sala." com o status 400
11 changes: 11 additions & 0 deletions backend/features/deletarReview.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Feature: Deletar Avaliação

Scenario: Deletar avaliação existente
Given o professor Suruagy deseja deletar uma avaliação feita anteriormente
When ele envia uma requisição DELETE para "/api/reviews/1" especificando o id "1" da avaliação que deseja deletar
Then o sistema retorna a mensagem "Avaliação deletada com sucesso!" e o status 200 OK

Scenario: Deletar avaliação que não existe
Given o professor Suruagy deseja deletar uma avaliação que não existe
When ele envia uma requisição DELETE para "/api/reviews/1" especificando o id "1" da avaliação que deseja deletar
Then o sistema retorna a mensagem "Avaliação não encontrada para o ID fornecido." e o status 404 NOT FOUND
12 changes: 12 additions & 0 deletions backend/features/listarReview.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Feature: Listar Avaliações

Scenario: Listar avaliações quando há avaliações no sistema
Given o professor Suruagy deseja consultar as avaliações presentes no sistema e existem avaliações cadastradas
When ele envia uma requisição GET para "/api/reviews"
Then o sistema lista todas as avaliações que foram postadas anteriormente para todas as salas com o status 200 OK

Scenario: Listar avaliações quando não há nenhuma avaliação
Given o professor Suruagy deseja consultar as avaliações presentes no sistema e não existem avaliações cadastradas
When ele envia uma requisição GET para "/api/reviews"
Then o sistema não encontra nenhuma avaliação no sistema
And exibe a mensagem de erro "Nenhuma avaliação encontrada." com o status 404 NOT FOUND
21 changes: 21 additions & 0 deletions backend/features/loginServico.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
Feature: Autenticação de usuários

Scenario: Sucesso no login
Given o usuário possui o email "demostenes@example.com" e a senha "SecurePassword123" válidos
When ele envia uma requisição POST para "/api/login" com os dados "demostenes@example.com" e "SecurePassword123"
Then a resposta deve conter o email "demostenes@example.com" e a mensagem "success" igual a True
And o status code deve ser "200"

Scenario: Fracasso no login por senha incorreta
Given o usuário possui o email "demostenes@example.com" válido e a senha "SecureIncorreta123" inválida
When ele envia uma requisição POST para "/api/login" com os dados "demostenes@example.com" e "SecureIncorreta123"
Then a resposta deve conter a mensagem "Usuário ou senha inválidos."
And o status code deve ser "401"

Scenario: Fracasso no login por falta de email ou senha
Given o usuário envia uma requisição sem email ou senha
When ele envia uma requisição POST para "/api/login" com os dados " " e " "
Then a resposta deve conter a mensagem "Usuário e senha são obrigatórios."
And o status code deve ser "400"


28 changes: 28 additions & 0 deletions backend/features/manutencao.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
Feature: Criar/remover solicitação de manutenção de sala

Scenario: sucesso ao criar uma solicitação de manutenção para uma reserva concluída
Given o professor possui uma reserva de sala reserva_id "1" que já foi encerrada
When ele envia uma requisição POST /solicitacoes/manutencao com os dados: reserva_id: "1", descricao: "Mesa quebrada."
Then o sistema retorna "mensagem" "Parabéns, sua solicitação de manutenção foi criada!" e um status "201"
And a reserva reserva_id: "1" possui uma solicitação de manutenção com descricao: "Mesa quebrada."

Scenario: fracasso ao criar uma solicitação de manutenção sem preencher o campo descricao
Given o professor possui uma reserva de sala reserva_id "1" que já foi encerrada
When ele envia uma requisição POST /solicitacoes/manutencao com os dados: reserva_id: "1", descricao: " "
Then o sistema retorna "erro" "O campo 'descricao' não pode estar vazio." e um status "400"

Scenario: sucesso ao editar uma solicitação de manutenção existente
Given o professor já criou uma solicitação de manutenção associada a reserva_id "1"
When ele envia uma requisição PUT /solicitacoes/manutencao/"1" contendo o ID da solicitação de manutenção e a alteração descricao: "Mesa e cadeira quebradas."
Then o sistema retorna "mensagem" "Solicitação de manutenção atualizada com sucesso" e um status "200"
And o sistema atualiza os detalhes da solicitação com descricao: "Mesa e cadeira quebradas."

Scenario: fracasso ao editar solicitação de manutenção sem preencher o campo descricao
Given o professor já criou uma solicitação de manutenção associada a reserva_id "1"
When ele envia uma requisição PUT /solicitacoes/manutencao/"1" contendo o ID da solicitação de manutenção e a alteração descricao: " "
Then o sistema retorna "erro" "A descrição da manutenção não pode ser vazia" e um status "400"

Scenario: sucesso ao excluir uma solicitação de manutenção existente
Given o professor já criou uma solicitação de manutenção associada a reserva_id "1"
When ele envia uma requisição DELETE /solicitacoes/manutencao/"1",
Then o sistema remove a solicitação do banco de dados e retorna um status "204"
12 changes: 12 additions & 0 deletions backend/features/obterReview.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Feature: Consultar Avaliação

Scenario: Consulta de avaliação existente
Given o professor Suruagy deseja consultar uma avaliação presente no sistema
When ele envia uma requisição GET para "/api/reviews/1"
Then o sistema retorna a avaliação com comentário "Sala excelente, as mudanças foram feitas e ficou ótima.", data_avaliacao "Sat, 15 Feb 2025 16:31:37 GMT", id "1", nota "5", reserva_id "1", sala_id "2", usuario_id "3" com o status 200 OK

Scenario: Consulta de avaliação inexistente
Given o professor Suruagy deseja consultar uma avaliação presente no sistema
When ele envia uma requisição GET para "/api/reviews/1"
Then o sistema não encontra avaliação presente com o ID especificado
And retorna a mensagem de erro "Avaliação não encontrada para o ID fornecido." com o status 404 NOT FOUND
Loading