Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
153 commits
Select commit Hold shift + click to select a range
f1a8e06
feat: adjustments the dashboard of the coordinator
Eduardo-Tamborelli-Ferreira-lino Jul 28, 2026
c75ef91
feat: adjustments the dashboard of the coordinator
Eduardo-Tamborelli-Ferreira-lino Jul 28, 2026
cf63a3e
feat: adjustments the dashboard of the coordinator
Eduardo-Tamborelli-Ferreira-lino Jul 28, 2026
7e6dac1
feat: adjustments the dashboard of the coordinator
Eduardo-Tamborelli-Ferreira-lino Jul 28, 2026
e0699c7
feat: adjustments the dashboard of the coordinator
Eduardo-Tamborelli-Ferreira-lino Jul 28, 2026
2a4fa0f
feat: adjustments the dashboard of the coordinator
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
d6f939e
feat: adjustments the dashboard of the coordinator
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
9d10cb3
Merge pull request #28 from quick-transfer/refactor/fix-the-dashboar-…
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
53e1554
Merge branch 'develop' into feature/manager-screens
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
96aff4b
Merge pull request #30 from quick-transfer/feature/manager-screens
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
9ee7270
feat: adjustments in the design system.
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
0a05b7c
Merge pull request #31 from quick-transfer/feature/adjusments-design-…
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
ccb8f4b
fix: fix some errors in the login page
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
8420176
feat: first version of the implementation test
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
5b72965
Merge pull request #32 from quick-transfer/refactor/login-input
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
150760d
Merge pull request #33 from quick-transfer/feature/created-implementa…
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
e4abcc4
feat: Creating user separation for the side bar and functions
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
0e02883
Merge pull request #34 from quick-transfer/feature/Creating-user-base…
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
b71c46f
docs: add comprehensive test plan with code snippets for admin, manag…
Matheus-de-Borba-da-Silva Jul 29, 2026
4254f24
fix: move candidate actions from student profile to vacancy detail
Matheus-de-Borba-da-Silva Jul 29, 2026
1a4841d
feat: Finish the design of the dashboard of the coordinator
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
5b91740
Merge pull request #36 from quick-transfer/docs/test-plan
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
57f2b92
Merge pull request #37 from quick-transfer/refactor/menager-students-…
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
7656b6c
Merge pull request #38 from quick-transfer/feature/finish-design-dash…
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
f1c57ce
fix: Set a one-year limit from now for conducting an interview; addit…
Matheus-de-Borba-da-Silva Jul 29, 2026
67739c9
Merge pull request #40 from quick-transfer/feature/date-validation
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
418a1e7
feat: creating the home page for the coordinator
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
bd896ee
fix: creating and adjustments components
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
bdcb8cc
feat: creating the pages and adjustments some pages
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
94f5502
fix: fix the auth
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
a794097
Merge branch 'develop' into refactor/adjustments-components
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
ffbc9f2
Merge pull request #41 from quick-transfer/refactor/adjustments-compo…
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
9957a6d
Merge pull request #42 from quick-transfer/feature/adjustments-in-pages
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
9138e09
Merge pull request #43 from quick-transfer/refactor/lib
Eduardo-Tamborelli-Ferreira-lino Jul 29, 2026
50ffb36
feat: alter the logo for the web
Eduardo-Tamborelli-Ferreira-lino Jul 30, 2026
f6f91d7
feat: alter the logo for the web
Eduardo-Tamborelli-Ferreira-lino Jul 30, 2026
543a953
feat(api): proxy backend requests through Next
Matheus-de-Borba-da-Silva Jul 30, 2026
e3a8fbc
feat(manager): add typed manager API client
Matheus-de-Borba-da-Silva Jul 30, 2026
ac31dbf
feat(admin): connect location management to API
Matheus-de-Borba-da-Silva Jul 30, 2026
b880bad
feat(manager): connect vacancy workflow to API
Matheus-de-Borba-da-Silva Jul 30, 2026
ad179f1
feat(manager): load real student data
Matheus-de-Borba-da-Silva Jul 30, 2026
12e70d4
fix: refactor the login page
Eduardo-Tamborelli-Ferreira-lino Jul 30, 2026
03cb90b
feat(auth): authenticate registered users
Matheus-de-Borba-da-Silva Jul 30, 2026
3a23819
feat(manager): add interview scheduling workflow
Matheus-de-Borba-da-Silva Jul 30, 2026
0b69fa6
Merge pull request #44 from quick-transfer/feature/real-api-auth-manager
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
f4eb4ca
Merge pull request #45 from quick-transfer/feature/add-logo-for-web
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
1186d13
Merge branch 'develop' into refactor/final-version-login-page
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
56c4d5b
Merge pull request #46 from quick-transfer/refactor/final-version-log…
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
ce2d473
Revert "fix: refactor the login page"
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
ae3d3d2
Merge pull request #47 from quick-transfer/revert-46-refactor/final-v…
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
91e1cb9
Revert "Feature/add logo for web"
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
b70774c
Merge pull request #48 from quick-transfer/revert-45-feature/add-logo…
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
56b46bd
Revert "feat: integrate real API, manager workflows and authentication"
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
ea05adb
Merge pull request #49 from quick-transfer/revert-44-feature/real-api…
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
19dcd4b
fix(proxy): handle backend unavailability
Matheus-de-Borba-da-Silva Jul 31, 2026
bf7e7b8
fix(api): normalize HTTP error responses
Matheus-de-Borba-da-Silva Jul 31, 2026
c178ef2
fix(auth): validate JWT session routing
Matheus-de-Borba-da-Silva Jul 31, 2026
7d85810
fix(login): harden authentication flow
Matheus-de-Borba-da-Silva Jul 31, 2026
3e00413
feat(admin): create managers and coordinators
Matheus-de-Borba-da-Silva Jul 31, 2026
20305b3
Merge pull request #50 from quick-transfer/bugfix/backend-proxy-unava…
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
9b1711e
Merge pull request #51 from quick-transfer/bugfix/http-error-handling
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
2691e72
Merge pull request #52 from quick-transfer/bugfix/jwt-session-validation
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
fbca07f
Merge pull request #53 from quick-transfer/bugfix/login-flow
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
2d71377
Merge pull request #54 from quick-transfer/feature/admin-user-creation
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
5451dd4
hotfix: resolve merge conflits
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
d7630e3
feat: Finally finish the merge conflits
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
341ebc9
Merge pull request #57 from quick-transfer/hotfix/adjustments-merge-c…
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
23427f6
Merge branch 'develop' into feature/real-api-auth-manager
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
8ef0f40
Merge pull request #55 from quick-transfer/feature/real-api-auth-manager
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
ed5014f
fix(api): restore proxy authentication contract
Matheus-de-Borba-da-Silva Jul 31, 2026
e6b8ef5
feat: Finally finish the login page
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
37b7a63
Merge pull request #58 from quick-transfer/hotfix/api-fetch-merge-reg…
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
6a45ec7
Merge pull request #59 from quick-transfer/feature/finish-login-page
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
f746bce
feat(auth): add configurable mock user fallback
Matheus-de-Borba-da-Silva Jul 31, 2026
bae19e6
Merge pull request #60 from quick-transfer/feature/mock-auth-fallback
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
8e542d7
feat(manager): restore interviews page
Matheus-de-Borba-da-Silva Jul 31, 2026
e5f17d4
Merge pull request #61 from quick-transfer/feature/restore-manager-in…
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
f95d9d6
feat: fix the separator to the side bar
Eduardo-Tamborelli-Ferreira-lino Jul 31, 2026
00daeea
Merge pull request #62 from quick-transfer/refactor/finish-sidebar
Eduardo-Tamborelli-Ferreira-lino Aug 2, 2026
00fa03c
feat: finals adjustments in the sidebar
Eduardo-Tamborelli-Ferreira-lino Aug 2, 2026
0130b19
feat: finals adjustments in the sidebar
Eduardo-Tamborelli-Ferreira-lino Aug 2, 2026
3f9428f
feat: finals adjustments in the header
Eduardo-Tamborelli-Ferreira-lino Aug 2, 2026
4529fa3
feat: Remove some rotes for the admin.
Eduardo-Tamborelli-Ferreira-lino Aug 2, 2026
f214216
feat: adjustment the dashboard in the ADM
Eduardo-Tamborelli-Ferreira-lino Aug 2, 2026
0f35402
feat: adjustments some UX informations in the page users in the ADMIN…
Eduardo-Tamborelli-Ferreira-lino Aug 2, 2026
24624c4
Merge pull request #63 from quick-transfer/feature/finish-header
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
f8e91e4
Merge pull request #64 from quick-transfer/refactor/finish-sidebar
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
45bc743
Merge branch 'develop' into feacture/finish-admin-pages
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
28b6165
Merge pull request #65 from quick-transfer/feacture/finish-admin-pages
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
d221106
feat: adjustment some colors in the system
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
106ef62
Merge pull request #66 from quick-transfer/refactor/final-version-des…
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
dc1c7cb
feat: remove the icon of the table
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
81dc37f
feat: remove the icon of the table
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
653f4df
feat: remove the icon of the table
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
5b8a381
feat: remove the icon of the table
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
b6b9456
feat: creating the readme.md for the git hub
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
6a24aad
Merge pull request #67 from quick-transfer/feacture/finish-admin-pages
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
7917da6
Merge pull request #68 from quick-transfer/feature/creating-readme
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
6301ef8
feat: finish the design of 3 pages in the manager
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
6b2f8ae
feat: alter some UX in components
Eduardo-Tamborelli-Ferreira-lino Aug 3, 2026
44678cb
Merge pull request #69 from quick-transfer/feature/finish-manager-pages
Eduardo-Tamborelli-Ferreira-lino Aug 4, 2026
9dc6622
feat: finish the UX for the dashboard page
Eduardo-Tamborelli-Ferreira-lino Aug 4, 2026
651f65d
feat: commenting the code to better understand what is happening
Eduardo-Tamborelli-Ferreira-lino Aug 4, 2026
6874f3c
feat: commenting the code to better understand what is happening
Eduardo-Tamborelli-Ferreira-lino Aug 4, 2026
d353a31
feat: commenting the code to better understand what is happening
Eduardo-Tamborelli-Ferreira-lino Aug 4, 2026
f8477c3
feat: commenting the code to better understand what is happening
Eduardo-Tamborelli-Ferreira-lino Aug 4, 2026
3824287
feat: commenting the code to better understand what is happening
Eduardo-Tamborelli-Ferreira-lino Aug 4, 2026
1d60781
feat: commenting the code to better understand what is happening
Eduardo-Tamborelli-Ferreira-lino Aug 4, 2026
69b9fc5
feat: commenting the code to better understand what is happening
Eduardo-Tamborelli-Ferreira-lino Aug 4, 2026
9560c92
feat: commenting the code to better understand what is happening
Eduardo-Tamborelli-Ferreira-lino Aug 4, 2026
79a722e
feat: finish the UX for the site
Eduardo-Tamborelli-Ferreira-lino Aug 4, 2026
80d710a
Merge pull request #70 from quick-transfer/feature/finish-coordinator…
Eduardo-Tamborelli-Ferreira-lino Aug 5, 2026
67fa388
Merge branch 'develop' into feature/finish-UX
Eduardo-Tamborelli-Ferreira-lino Aug 5, 2026
dbf48a7
Merge pull request #71 from quick-transfer/feature/finish-UX
Eduardo-Tamborelli-Ferreira-lino Aug 5, 2026
5fbb138
feat: finish design
Eduardo-Tamborelli-Ferreira-lino Aug 5, 2026
a2c4183
Merge pull request #73 from quick-transfer/refactor/finish-disign
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
83aca71
refactor(ui): update form layouts to right side, standardize pill sta…
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
9932983
Merge pull request #74 from quick-transfer/feature/ux-refactor-forms-…
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
f7b2ae5
fix: resolve merge conflicts keeping develop version - preserve all c…
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
488d6c0
fix: restore missing UI components, dependencies and verify productio…
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
3dffb15
fix(dev): stabilize Next.js runtime on Windows
Matheus-de-Borba-da-Silva Aug 6, 2026
903a875
feat(api): integrate authenticated backend data flows
Matheus-de-Borba-da-Silva Aug 6, 2026
79f6773
feat(auth): enforce role-based navigation and routes
Matheus-de-Borba-da-Silva Aug 6, 2026
bfa1aab
feat(admin): manage system user accounts
Matheus-de-Borba-da-Silva Aug 6, 2026
e7192b1
feat(coordinator): show real operational dashboard data
Matheus-de-Borba-da-Silva Aug 6, 2026
8d51194
feat(courses): manage courses with backend data
Matheus-de-Borba-da-Silva Aug 6, 2026
a2af7ed
feat(classes): create and inspect academic classes
Matheus-de-Borba-da-Silva Aug 6, 2026
ed552d4
feat(vacancies): manage vacancies and safe student routing
Matheus-de-Borba-da-Silva Aug 6, 2026
f7bf9d0
feat(interviews): schedule and track manager interviews
Matheus-de-Borba-da-Silva Aug 6, 2026
71668fe
feat(locations): manage operational locations
Matheus-de-Borba-da-Silva Aug 6, 2026
04008a3
docs: document audited roles and functional flows
Matheus-de-Borba-da-Silva Aug 6, 2026
0e4c330
feat(students): manage students as domain entities
Matheus-de-Borba-da-Silva Aug 6, 2026
b457e71
Merge pull request #79 from quick-transfer/fix/next-dev-runtime
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
878369e
Merge pull request #80 from quick-transfer/feat/api-integration
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
3908cf3
Merge pull request #81 from quick-transfer/feat/rbac-navigation
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
a5d3408
Merge pull request #82 from quick-transfer/feat/admin-user-management
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
d4602c4
Merge pull request #83 from quick-transfer/feat/coordinator-dashboard
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
cf57c0f
Merge pull request #84 from quick-transfer/feat/course-management
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
9fd73c7
Merge pull request #85 from quick-transfer/feat/class-management
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
9084452
Merge pull request #86 from quick-transfer/feat/student-entity-manage…
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
82c16e0
Merge pull request #87 from quick-transfer/feat/vacancy-management
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
bf26f88
Merge pull request #88 from quick-transfer/feat/interview-management
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
c5e0631
Merge pull request #89 from quick-transfer/feat/location-management
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
9ba0b4d
Merge pull request #90 from quick-transfer/docs/functional-audit
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
be92cc3
feat: add class deletion modal, update coordinator course filter to w…
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
b8481df
feat: finish
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
0d4a66e
Merge pull request #91 from quick-transfer/feature/class-deletion-and…
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
24ddd27
fix: synchronize npm lockfile
Matheus-de-Borba-da-Silva Aug 6, 2026
d077529
fix: align role routes and admin access
Matheus-de-Borba-da-Silva Aug 6, 2026
103d428
Merge pull request #92 from quick-transfer/fix/npm-lockfile-sync
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
ded6ee3
Merge pull request #93 from quick-transfer/fix/role-routing-admin-access
Eduardo-Tamborelli-Ferreira-lino Aug 6, 2026
c83e668
fix: padroniza formulários de criação com o layout de turmas
Vinicius-Deretti Aug 7, 2026
3613b4a
Merge pull request #94 from quick-transfer/fix/forms-create-entities
Eduardo-Tamborelli-Ferreira-lino Aug 7, 2026
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
Binary file modified README.md
Binary file not shown.
11 changes: 11 additions & 0 deletions my-app/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Endereço opcional da API. Sem esta variável, o frontend usa o proxy /backend.
# NEXT_PUBLIC_API_URL=https://api.exemplo.com

# Destino usado pelo proxy interno /backend. Para desenvolvimento com a API local:
API_PROXY_TARGET=http://localhost:8080/api

# Acesso de contingência para ambientes de demonstração sem API.
# Em produção, só habilite temporariamente e faça um novo deploy.
NEXT_PUBLIC_ENABLE_MOCK_AUTH=false
NEXT_PUBLIC_MOCK_AUTH_USERNAME=admin.mock
NEXT_PUBLIC_MOCK_AUTH_PASSWORD=Mock@123456789!
1 change: 1 addition & 0 deletions my-app/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ yarn-error.log*

# env files (can opt-in for committing if needed)
.env*
!.env.example

# vercel
.vercel
Expand Down
309 changes: 309 additions & 0 deletions my-app/PLANO_DE_TESTES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,309 @@
# PLANO DE TESTES - QUICK TRANSFER

---

## 1. Informações Gerais
- **Projeto:** Quick Transfer - Frontend
- **Versão:** 1.0.0
- **Documento:** Plano de Testes de Software (Seção 7 - Requisitos de Qualidade)
- **Data de Elaboração:** 29/07/2026

---

## 2. Estrutura Padrão dos Casos de Teste
Cada teste contemplado neste plano possui a seguinte estrutura padronizada de atributos:
1. **Código / Identificação do Teste** (ex: `CT-001`)
2. **Funcionalidade Testada**
3. **Objetivo do Teste**
4. **Pré-condições**
5. **Dados Utilizados**
6. **Etapas de Execução**
7. **Resultado Esperado**
8. **Trecho de Código de Exemplo (Componentes do Projeto / React Testing Library)**
9. **Prioridade** (`Alta`, `Média`, `Baixa`)
10. **Responsável pela Execução**

---

## 3. Matriz de Casos de Teste

### CT-001: Autenticação e Navegação por Perfil (RBAC / Sidebar)
- **Funcionalidade Testada:** Navegação entre telas e Controle de Acesso Baseado em Perfil (RBAC).
- **Objetivo do Teste:** Verificar se a Sidebar (`src/components/layout/sidebar.tsx`) exibe exclusivamente os módulos autorizados para cada perfil (`MANAGER`, `COORDINATOR`, `ADMIN`).
- **Pré-condições:** Aplicação em execução na rota `/login`.
- **Dados Utilizados:**
- Gestor: `userRole = "MANAGER"`
- Coordenador: `userRole = "COORDINATOR"`
- Admin: `userRole = "ADMIN"`
- **Etapas de Execução:**
1. Renderizar o componente `Sidebar` passando as propriedades de perfil.
2. Verificar os itens de menu renderizados na arvore DOM.
- **Resultado Esperado:**
- **MANAGER:** Exibe "Minhas Vagas", "Alunos", "Entrevistas" e "Locais".
- **COORDINATOR:** Exibe "Painel", "Turmas", "Alunos", "Cursos" e "Direcionar Alunos".
- **ADMIN:** Exibe somente "Painel Admin" e "Usuários".
- **Trecho de Código:**
```typescript
import { render, screen } from "@testing-library/react";
import Sidebar from "@/components/layout/sidebar";

describe("CT-001: Autenticação e RBAC da Sidebar", () => {
it("deve renderizar apenas módulos do Gestor para o papel MANAGER", () => {
// Renderiza a Sidebar real do projeto com o perfil MANAGER
render(<Sidebar initialRole="MANAGER" />);

expect(screen.getByText("Minhas Vagas")).toBeInTheDocument();
expect(screen.getByText("Alunos")).toBeInTheDocument();
expect(screen.queryByText("Painel Admin")).not.toBeInTheDocument();
});
});
```
- **Prioridade:** Alta
- **Responsável pela Execução:** QA / Equipe de Desenvolvimento

---

### CT-002: Carregamento de Dados e Estado de Carregamento (Loading State)
- **Funcionalidade Testada:** Carregamento de dados e estados de carregamento.
- **Objetivo do Teste:** Garantir que indicadores visuais de carregamento (`DataTable` / Skeleton) são exibidos adequadamente em componentes de listagem como `DataTable` (`src/components/shared/data-table.tsx`).
- **Pré-condições:** Componente de tabela acionado antes da resolução do *fetch* da API.
- **Dados Utilizados:** `isLoading = true`, `data = []`.
- **Etapas de Execução:**
1. Renderizar `<DataTable isLoading={true} data={[]} columns={columns} />`.
2. Verificar a exibição das linhas de esqueleto (*loading skeleton*).
- **Resultado Esperado:** O componente renderiza o estado de carregamento visual sem falhas na interface.
- **Trecho de Código:**
```typescript
import { render, screen } from "@testing-library/react";
import { DataTable } from "@/components/shared/data-table";

describe("CT-002: Estado de Carregamento na DataTable", () => {
it("deve exibir as linhas de carregamento quando isLoading for true", () => {
const columns = [{ key: "name", header: "Nome" }];

render(<DataTable columns={columns} data={[]} isLoading={true} />);

// Verifica a presença das células de carregamento (Skeleton)
const skeletonRows = screen.getAllByRole("row");
expect(skeletonRows.length).toBeGreaterThan(0);
});
});
```
- **Prioridade:** Média
- **Responsável pela Execução:** QA / Tester

---

### CT-003: Validação de Formulário e Cadastro de Nova Turma
- **Funcionalidade Testada:** Cadastro e Validação de Formulários (`src/app/classes/new/page.tsx`).
- **Objetivo do Teste:** Validar o comportamento do formulário de criação de turma `NovaTurmaPage` ao submeter dados.
- **Pré-condições:** Usuário autenticado na rota `/classes/new`.
- **Dados Utilizados:**
- `className`: "Turma 2026-A"
- `classCode`: "TURMA-2026-A"
- **Etapas de Execução:**
1. Preencher os campos de input de Nome da Turma e Código da Turma.
2. Disparar a submissão do formulário clicando no botão "Salvar Turma".
- **Resultado Esperado:** O evento `handleSubmit` deve processar os dados cadastrados e redirecionar para `/admin/classes`.
- **Trecho de Código:**
```typescript
import { render, screen, fireEvent } from "@testing-library/react";
import NovaTurmaPage from "@/app/classes/new/page";

describe("CT-003: Cadastro de Nova Turma", () => {
it("deve permitir preencher o nome da turma e acionar a gravação", () => {
render(<NovaTurmaPage />);

const inputClassName = screen.getByLabelText(/Nome da Turma/i);
fireEvent.change(inputClassName, { target: { value: "Turma 2026-A" } });

const saveButton = screen.getByRole("button", { name: /Salvar Turma/i });
expect(saveButton).toBeInTheDocument();
fireEvent.click(saveButton);
});
});
```
- **Prioridade:** Alta
- **Responsável pela Execução:** Tester / Desenvolvedor Frontend

---

### CT-004: Edição e Exclusão de Registro com Confirmação Visual
- **Funcionalidade Testada:** Edição e Exclusão na Gestão de Usuários (`src/app/admin/users/page.tsx`).
- **Objetivo do Teste:** Assegurar que as ações de "Editar" e "Excluir" exibidas no componente `UsuariosPage` invoquem os manipuladores corretos.
- **Pré-condições:** Acesso à página `/admin/users` com a API autenticada.
- **Dados Utilizados:** Registro do usuário `UserDTO` com perfil `ADMIN` ou `COORDINATOR`.
- **Etapas de Execução:**
1. Renderizar a página `UsuariosPage`.
2. Localizar a tabela de usuários com os botões de ação (ícones `Edit` e `Trash2`).
3. Clicar na ação de exclusão do registro target.
- **Resultado Esperado:** As ações acionam os modais de confirmação visual sem erros de execução.
- **Trecho de Código:**
```typescript
import { render, screen, fireEvent } from "@testing-library/react";
import UsuariosPage from "@/app/admin/users/page";

describe("CT-004: Tabela de Usuários Admin - Ações de Edição e Exclusão", () => {
it("deve renderizar a tabela de usuários com os botões de ação", () => {
render(<UsuariosPage />);

// Confirma a renderização das colunas da página de usuários do projeto
expect(screen.getByText("Usuário")).toBeInTheDocument();
expect(screen.getByText("Papel / Função")).toBeInTheDocument();
expect(screen.getByText("Status")).toBeInTheDocument();
});
});
```
- **Prioridade:** Média
- **Responsável pela Execução:** QA / Tester

---

### CT-005: Tratamento de Indisponibilidade da API
- **Funcionalidade Testada:** Resiliência do cliente de API (`src/lib/api.ts`).
- **Objetivo do Teste:** Verificar o comportamento do método `apiFetch` do projeto ao receber erro de conexão ou status HTTP 500 do Spring Boot (`http://localhost:8080`).
- **Pré-condições:** Servidor da API simulando indisponibilidade.
- **Dados Utilizados:** Chamada para o endpoint `/api/v1/students`.
- **Etapas de Execução:**
1. Invocar a função `apiFetch("/students")` com endpoint inacessível.
2. Tratar a exceção capturada para exibir feedback gracioso.
- **Resultado Esperado:** O sistema captura o erro e exibe uma mensagem amigável, sem simular persistência local em uma sessão real.
- **Trecho de Código:**
```typescript
import { apiFetch } from "@/lib/api";

describe("CT-005: Resiliência da API e Fallback", () => {
it("deve lançar erro tratável quando a API estiver offline", async () => {
global.fetch = jest.fn().mockRejectedValue(new TypeError("Failed to fetch"));

await expect(apiFetch("/students")).rejects.toThrow("Failed to fetch");
});
});
```
- **Prioridade:** Alta
- **Responsável pela Execução:** Equipe de QA / Desenvolvedor

---

### CT-006: Responsividade da Interface e Toggle da Sidebar Mobile
- **Funcionalidade Testada:** Responsividade e alternância da Sidebar (`src/components/layout/sidebar.tsx`).
- **Objetivo do Teste:** Testar a exibição do botão de menu mobile e o controle do estado `mobileOpen` no componente `Sidebar`.
- **Pré-condições:** Resolução de tela mobile (< 1024px).
- **Dados Utilizados:** Evento de clique no botão do menu hambúrguer (`Menu`).
- **Etapas de Execução:**
1. Renderizar a `Sidebar` em ambiente simulado mobile.
2. Localizar o botão de alternância do menu mobile.
3. Clicar para abrir/fechar.
- **Resultado Esperado:** O estado de visibilidade da barra lateral alterna entre visível e oculto.
- **Trecho de Código:**
```typescript
import { render, screen, fireEvent } from "@testing-library/react";
import Sidebar from "@/components/layout/sidebar";

describe("CT-006: Menu Mobile e Responsividade", () => {
it("deve acionar a abertura do menu mobile ao clicar no ícone de Menu", () => {
render(<Sidebar />);

const menuButtons = screen.getAllByRole("button");
expect(menuButtons.length).toBeGreaterThan(0);
});
});
```
- **Prioridade:** Média
- **Responsável pela Execução:** Designer UI/UX / QA Tester

---

### CT-007: Telas do Perfil Gestor (Minhas Vagas, Meus Alunos e Entrevistas)
- **Funcionalidade Testada:** Módulo do Gestor (`src/app/manager/vacancies/page.tsx`, `src/app/manager/students/page.tsx` e `src/app/manager/interviews/page.tsx`).
- **Objetivo do Teste:** Validar a renderização da interface e listagem de dados das vagas geridas pelo perfil Gestor.
- **Pré-condições:** Autenticado com perfil `MANAGER`.
- **Dados Utilizados:** Vagas retornadas pela API.
- **Etapas de Execução:**
1. Acessar e renderizar a rota `/manager/vacancies`.
2. Verificar os cards e dados das vagas ofertadas.
- **Resultado Esperado:** Exibir corretamente os títulos e o status das vagas sob gestão.
- **Trecho de Código:**
```typescript
import { render, screen } from "@testing-library/react";
import MinhasVagasPage from "@/app/manager/vacancies/page";

describe("CT-007: Módulo do Gestor - Minhas Vagas", () => {
it("deve renderizar a tela de Minhas Vagas do Gestor", () => {
render(<MinhasVagasPage />);
expect(screen.getByText(/Minhas Vagas/i)).toBeInTheDocument();
});
});
```
- **Prioridade:** Alta
- **Responsável pela Execução:** QA / Tester

---

### CT-008: Telas do Perfil Coordenador (Dashboard, Turmas, Alunos, Cursos e Direcionamento)
- **Funcionalidade Testada:** Módulo do Coordenador (`src/app/dashboard/page.tsx`, `src/app/classes/page.tsx`, `src/app/students/page.tsx`, `src/app/courses/page.tsx` e `src/app/coordinator/direct/page.tsx`).
- **Objetivo do Teste:** Testar os cards do Dashboard, a consulta das entidades acadêmicas e o direcionamento de alunos para vagas.
- **Pré-condições:** Autenticado com perfil `COORDINATOR`.
- **Dados Utilizados:** Dados de alunos, turmas, cursos e vagas.
- **Etapas de Execução:**
1. Renderizar o componente de Dashboard (`/dashboard`).
2. Verificar os cards estatísticos (Total de Alunos, Turmas Ativas e Vagas Disponíveis).
- **Resultado Esperado:** Os dados e métricas do painel do coordenador são calculados e exibidos na tela.
- **Trecho de Código:**
```typescript
import { render, screen } from "@testing-library/react";
import DashboardPage from "@/app/dashboard/page";

describe("CT-008: Módulo Coordenador - Painel Dashboard", () => {
it("deve exibir os cartões de estatísticas no painel do Coordenador", () => {
render(<DashboardPage />);
expect(screen.getByText(/Painel de Controle/i)).toBeInTheDocument();
});
});
```
- **Prioridade:** Alta
- **Responsável pela Execução:** QA / Tester

---

### CT-009: Telas do Perfil Administrador (Usuários)
- **Funcionalidade Testada:** Módulo Geral de Administração (`src/app/admin/page.tsx`).
- **Objetivo do Teste:** Validar que a página principal de Administração renderiza os atalhos de gestão total do sistema.
- **Pré-condições:** Autenticado com perfil `ADMIN`.
- **Dados Utilizados:** Seções do painel administrativo.
- **Etapas de Execução:**
1. Renderizar a rota `/admin`.
2. Verificar a presença do acesso a Usuários e a ausência dos módulos de outros perfis.
- **Resultado Esperado:** Todas as opções administrativas estão visíveis e funcionais para a função `ADMIN`.
- **Trecho de Código:**
```typescript
import { render, screen } from "@testing-library/react";
import AdminDashboardPage from "@/app/admin/page";

describe("CT-009: Painel de Controle Administrador", () => {
it("deve carregar o painel geral de administração do sistema", () => {
render(<AdminDashboardPage />);
expect(screen.getByText(/Painel de Administração/i)).toBeInTheDocument();
});
});
```
- **Prioridade:** Alta
- **Responsável pela Execução:** QA / Tester

---

## 4. Resumo de Cobertura dos Requisitos do Projeto

| Categoria Requerida | Casos de Teste Associados |
| :--- | :--- |
| **Navegação entre telas** | CT-001, CT-006, CT-007, CT-008, CT-009 |
| **Carregamento de dados** | CT-002, CT-007, CT-008, CT-009 |
| **Estados de carregamento** | CT-002 |
| **Estados de erro** | CT-005 |
| **Validação de formulários** | CT-003, CT-009 |
| **Cadastro** | CT-003, CT-008, CT-009 |
| **Edição** | CT-004, CT-008, CT-009 |
| **Exclusão** | CT-004, CT-009 |
| **Responsividade** | CT-006 |
| **Feedback visual** | CT-002, CT-003, CT-004, CT-007, CT-008, CT-009 |
| **Dados inválidos / Indisponibilidade API** | CT-003, CT-005 |
Loading