-
Notifications
You must be signed in to change notification settings - Fork 92
Feature/teste cucumber #303
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
feat: especificação dos cenários BDD das issues 12 a 17
feat: especificação BDD das issues 248, 113, 112, 111, 110, 109 - Cauet
feat: especificação BDD das issues 7 a 11
… ER elaborado e refatorado; criação de resources, models e controllers, definição de rotas, db postgresql
… criacao home controller, teste inicial do rspec e cucumber
…dor com testes rspec
Strint 2: implementação de login
… de modelo de formularios e questões dissertativas e de múltipla escola
…m base em templates com questões
…sistema de login e senha seguros, backend do cadastro de usuários e matérias, pendente front end de importação de dados
…de dados do sigaa a partir dos arquivos json modelos, implementação de relatórios de respostas e sistema de definição de senha precisando de correções
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request introduces Cucumber BDD testing infrastructure for the CAMAAR system (Sistema para Avaliação de Atividades Acadêmicas Remotas). The PR adds comprehensive test specifications, factory definitions, step definitions, and extensive documentation for Sprint 1.
Key changes:
- Added Cucumber BDD testing framework with feature files for 16 user stories
- Created RSpec test infrastructure with factories and helpers
- Added comprehensive Sprint 1 documentation in wiki.md covering all features and business rules
Reviewed changes
Copilot reviewed 231 out of 260 changed files in this pull request and generated 30 comments.
Show a summary per file
| File | Description |
|---|---|
| wiki.md | Sprint 1 documentation with user stories, BDD scenarios, and project planning (contains minor spelling issues) |
| desktop.ini | System file for Windows folder customization |
| CAMAAR/spec/* | RSpec test files for models, requests, views, and helpers |
| CAMAAR/features/* | Cucumber feature files and step definitions for BDD testing |
| CAMAAR/lib/tasks/cucumber.rake | Cucumber rake task configuration |
| CAMAAR/public/* | Static error pages and assets |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - **RN07:** Título do formulário é definido como "[Avaliação] - [Nome_da_matéria] - [Semestre]" | ||
| - **RN08:** Respostas devem ser anônimas | ||
| - **RN09:** Usuário deve visualizar confirmação de resposta | ||
| - **RN10:** Usuário não deve virualizar resposta |
Copilot
AI
Dec 16, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo in business rule RN10: "virualizar" should be "visualizar".
| |-------|----------------|-------------|--------|--------| | ||
| | #103 | Criar formulário de avaliação | Mateus | 8 | ✅ Especificado | | ||
| | #102 | Criar Template de Formulário | Mateus | 5 | ✅ Especificado | | ||
| | #101 | Gerar reltório do administrador | Mateus | 5 | ✅ Especificado | |
Copilot
AI
Dec 16, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo in table: "reltório" should be "relatório".
| ### Issue #113: Criação de formulário para docentes ou dicentes | ||
|
|
||
| **Responsável:** Cauet Gabriel Dias Braga | ||
| **Pontos:** 5 | ||
| **Status:** Cenários BDD especificados | ||
|
|
||
| #### História de Usuário | ||
|
|
||
| > **Como** Administrador | ||
| > **Eu quero** escolher criar um formulário para os docentes ou os dicentes de uma turma | ||
| > **Para que** eu possa avaliar o desempenho de uma matéria | ||
|
|
||
| #### Regras de Negócio | ||
|
|
||
| - **RN01:** Apenas administradores podem criar formulários | ||
| - **RN02:** Tipo de formulário (Docentes/Dicentes) é obrigatório | ||
| - **RN03:** Turma é obrigatória | ||
| - **RN04:** Template é obrigatório | ||
| - **RN05:** Formulário para docentes deve estar disponível apenas para professores da turma | ||
| - **RN06:** Formulário para dicentes deve estar disponível apenas para alunos da turma | ||
| - **RN07:** Formulário deve conter todas as questões do template selecionado | ||
|
|
||
| #### Cenários BDD Implementados | ||
|
|
||
| **Cenários Felizes (Caminhos de Sucesso):** | ||
| 1. Criar formulário para docentes com sucesso | ||
| 2. Criar formulário para dicentes com sucesso | ||
|
|
||
| **Cenários Tristes (Validações e Erros):** | ||
| 1. Tentar criar formulário sem selecionar tipo | ||
| 2. Tentar criar formulário sem selecionar turma | ||
| 3. Tentar criar formulário sem selecionar template | ||
|
|
||
| **Total de cenários:** 5 | ||
|
|
||
| #### Arquivo de Especificação | ||
|
|
||
| 📄 `features/criacao_formulario_docentes_dicentes_113.feature` |
Copilot
AI
Dec 16, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The term "dicentes" is used throughout this file but "discentes" (with an 's') is the correct spelling in Portuguese for students. Consider using "discentes" for consistency with standard Portuguese terminology, or verify if "dicentes" is an intentional project-specific term.
| console.log('➕ Adicionando opção'); | ||
|
|
||
| const wrapper = e.target.closest('.questao-wrapper'); | ||
| const opcoesContainer = wrapper.querySelector('.opcoes-container'); |
Copilot
AI
Dec 16, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unused variable opcoesContainer.
| redirect_to importacao_atualizar_path | ||
| end | ||
|
|
||
| rescue => e |
Copilot
AI
Dec 16, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This assignment to e is useless, since its value is never read.
| Materia.find_or_create_by!( | ||
| codigo: row['codigo'], | ||
| codigo_turma: 'TA', | ||
| semestre: row['semestre'] || '2024.1' | ||
| ) do |m| | ||
| m.nome = row['nome'] | ||
| m.departamento = row['departamento'] | ||
| end |
Copilot
AI
Dec 16, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This call to a database query operation happens inside this loop, and could be hoisted to a single call outside the loop.
|
|
||
| Dado('que respondeu todos os formulários das minhas turmas') do | ||
| @usuario&.materias&.each do |materia| | ||
| formulario = Formulario.find_by(materia: materia) |
Copilot
AI
Dec 16, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This call to a database query operation happens inside this loop, and could be hoisted to a single call outside the loop.
| Resposta.find_or_create_by!( | ||
| usuario: @usuario, | ||
| formulario: formulario, | ||
| questao: questao | ||
| ) do |r| | ||
| r.conteudo = 'Resposta teste' | ||
| r.respondido_em = Time.current | ||
| r.questao_opcao = opcao | ||
| end |
Copilot
AI
Dec 16, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This call to a database query operation happens inside this loop, and could be hoisted to a single call outside the loop.
|
|
||
| Dado('foram importados os seguintes usuários do SIGAA:') do |table| | ||
| table.hashes.each do |row| | ||
| user = Usuario.find_by(email: row['email']) |
Copilot
AI
Dec 16, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This call to a database query operation happens inside this loop, and could be hoisted to a single call outside the loop.
| E devo ver o nome do aluno que respondeu | ||
| E devo ver a data de resposta | ||
| E devo ver as respostas de cada questão | ||
| E devo ver estatísticas das respostas (média, moda, etc) |
Copilot
AI
Dec 16, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
O cenário Visualizar detalhes das respostas de um formulário exige que a página de resultados exiba o nome do aluno que respondeu, o que contradiz a regra de negócio de anonimato das respostas (Formulários não devem expor identificação dos respondentes) e resulta em exposição direta de autoria de cada resposta. Se implementado assim, qualquer administrador autenticado poderia associar avaliações sensíveis a indivíduos específicos, o que amplia risco de retaliação ou uso indevido dos dados mesmo sem quebrar a autenticação. Ajuste o comportamento esperado (e os testes) para que apenas dados agregados ou anonimizados sejam exibidos por resposta, removendo nomes ou substituindo-os por identificadores não reversíveis, ou então atualize explicitamente o modelo de ameaças se a identidade realmente precisar ser exposta.
No description provided.