Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 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
2dac8bf
docs: update README to include react-bootstrap and bootstrap installa…
ergdln Mar 23, 2025
0bb6efb
Merge pull request #20 from JoaoTeles87/docs-fixing
fernandapascoal Mar 23, 2025
537a511
feat: implement user profile management and reservation features with…
ergdln Mar 23, 2025
40703d5
docs: update README to include react-icons installation instructions …
ergdln Mar 23, 2025
490ef28
Merge pull request #21 from JoaoTeles87/fix-profile-integration
fernandapascoal Mar 23, 2025
37c392d
feat: add StarRating component and review management styles
ergdln Mar 24, 2025
e8bf92d
feat: update review pages for better integration
ergdln Mar 24, 2025
6ea36d7
feat: implementa filtro da página de reservas
lucasddmc Mar 24, 2025
bb059bb
"feat: add maintenance frontend and backend/frontend connection to th…
fernandapascoal Mar 24, 2025
c43c41f
Modificações feitas para adicionar Sidebar
chgs3 Mar 24, 2025
1ec0ba2
Merge pull request #22 from JoaoTeles87/front-manutencoes
ergdln Mar 24, 2025
4c47764
feat: adiciona estilos à página de reservar
lucasddmc Mar 24, 2025
19017ba
Merge pull request #23 from JoaoTeles87/fix-testing-reviews-integration
ergdln Mar 24, 2025
79eb024
feat: liga o front com o back no quesito fazer uma reserva
lucasddmc Mar 24, 2025
7d999a7
fix: remove arquivos de cache
lucasddmc Mar 24, 2025
adf09a0
fix: inclui ignore para pycache
lucasddmc Mar 24, 2025
32f071a
chore: remove compiled Python files and update .gitignore for better …
ergdln Mar 24, 2025
b71f613
chore: remove compiled Python files from __pycache__ for better file …
ergdln Mar 24, 2025
9a6910a
chore: remove compiled Python files from __pycache__ for better file …
ergdln Mar 24, 2025
62aea72
chore: update .gitignore to remove unnecessary entries for better fil…
ergdln Mar 24, 2025
15c47f6
Merge branch 'dev' of https://github.com/JoaoTeles87/2024.2-Equipe3 i…
lucasddmc Mar 24, 2025
fd01409
Merge branch 'dev' of https://github.com/JoaoTeles87/2024.2-Equipe3 i…
lucasddmc Mar 24, 2025
67378e3
Merge pull request #24 from lucasddmc/dev
lucasddmc Mar 24, 2025
9185517
chore: add package.json for frontend React application setup
ergdln Mar 24, 2025
3647e94
feat: implementa testes de front para página de reservas
lucasddmc Mar 24, 2025
9547615
Merge pull request #25 from lucasddmc/dev
fernandapascoal Mar 24, 2025
faa8eca
"style: adjusting resource page alignment to the left"
fernandapascoal Mar 24, 2025
2277733
Merge pull request #26 from JoaoTeles87/front-manutencoes
lucasddmc Mar 24, 2025
8a2bfc5
"tests: add login/register features and login/register tests at cypre…
fernandapascoal Mar 24, 2025
8f10bb9
Merge pull request #27 from JoaoTeles87/front-manutencoes
JoaoTeles87 Mar 24, 2025
97dccc6
Merge pull request #28 from JoaoTeles87/fix-testing-reviews-integration
fernandapascoal Mar 24, 2025
712759f
"Refactor: componentization on the resource and maintenance front"
fernandapascoal Mar 24, 2025
df8ad56
"fix: trying fix my new changes at refactor branch"
fernandapascoal Mar 24, 2025
4681998
Merge pull request #29 from JoaoTeles87/refactor-resources-maintenance
ergdln Mar 24, 2025
f720717
"Alterações em responsividade"
chgs3 Mar 24, 2025
87c7c73
Modificação em redirecionamento de página para atualização de review.
chgs3 Mar 25, 2025
000d372
Update users.db
chgs3 Mar 25, 2025
6996fa9
Merge pull request #30 from JoaoTeles87/fix-testing-reviews-integration
chgs3 Mar 24, 2025
1c9b425
Salvando alterações front
Mar 25, 2025
b2fd5fc
rotas atualizadas para integrar com o front
Mar 25, 2025
925a3f3
Alterações no Login.tsx
Mar 25, 2025
1ee6912
feature front-perfil testes concluido
Mar 26, 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.

18 changes: 17 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,20 @@ cypress/downloads
.env.testing
.env.development
.env.staging
.env.production
.env.production

# Ambiente virtual
venv/
.env/

# Arquivos de compilação
_pychache_/
*.pyc
*.pyo

# Vscode config
.vscode/
.idea/

# Logs
*.temp
101 changes: 101 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 @@ -27,6 +33,9 @@ Clone the repository and install the dependencies by running the following comma

```
npm install
npm install react-bootstrap bootstrap
npm install react-icons --save

```

### First time running ?
Expand All @@ -46,6 +55,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 +85,78 @@ 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
```
Para windows:
venv\Scripts\activate

Para MacOS:
source venv/bin/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.
85 changes: 85 additions & 0 deletions backend/blueprints.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
from flask import Flask, jsonify # Adicionei jsonify aqui
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 backend.rotas.perfil import perfil_bp
from backend.rotas.reservas_ativas import reservas_ativas_bp
from backend.rotas.exclusao_perfil import exclusao_perfil_bp
from backend.rotas.atualizar_perfil import atualizar_perfil_bp
from backend.rotas.historico_reserva import historico_reservas_bp
from flask_cors import CORS

def registrarBlueprints(app):
blueprints = [
perfil_bp,
exclusao_perfil_bp,
atualizar_perfil_bp,
historico_reservas_bp,
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,
reservas_ativas_bp
]

# Configuração global do CORS
CORS(app,
supports_credentials=True,
resources={
r"/api/*": {
"origins": "*",
"methods": ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
"allow_headers": ["Content-Type", "Authorization"]
}
})

# Registra os blueprints
for blueprint in blueprints:
app.register_blueprint(blueprint)

@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"
response.headers["Access-Control-Allow-Credentials"] = "true"
return response

# Debug route to list all endpoints
@app.route("/routes")
def list_routes():
routes = []
for rule in app.url_map.iter_rules():
routes.append({
"endpoint": rule.endpoint,
"methods": list(rule.methods),
"path": str(rule)
})
return jsonify(routes)
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
Loading