Skip to content

Conversation

@cauet-code
Copy link

No description provided.

avlis-mat and others added 21 commits November 16, 2025 18:45
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
Strint 2: implementação de login
… de modelo de formularios e questões dissertativas e de múltipla escola
…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
Copilot AI review requested due to automatic review settings December 16, 2025 01:49
Copy link

Copilot AI left a 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
Copy link

Copilot AI Dec 16, 2025

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".

Copilot uses AI. Check for mistakes.
|-------|----------------|-------------|--------|--------|
| #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 |
Copy link

Copilot AI Dec 16, 2025

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".

Copilot uses AI. Check for mistakes.
Comment on lines +536 to +573
### 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`
Copy link

Copilot AI Dec 16, 2025

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.

Copilot uses AI. Check for mistakes.
console.log('➕ Adicionando opção');

const wrapper = e.target.closest('.questao-wrapper');
const opcoesContainer = wrapper.querySelector('.opcoes-container');
Copy link

Copilot AI Dec 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused variable opcoesContainer.

Copilot uses AI. Check for mistakes.
redirect_to importacao_atualizar_path
end

rescue => e
Copy link

Copilot AI Dec 16, 2025

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.

Copilot uses AI. Check for mistakes.
Comment on lines +70 to +77
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
Copy link

Copilot AI Dec 16, 2025

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.

Copilot uses AI. Check for mistakes.

Dado('que respondeu todos os formulários das minhas turmas') do
@usuario&.materias&.each do |materia|
formulario = Formulario.find_by(materia: materia)
Copy link

Copilot AI Dec 16, 2025

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.

Copilot uses AI. Check for mistakes.
Comment on lines +369 to +377
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
Copy link

Copilot AI Dec 16, 2025

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.

Copilot uses AI. Check for mistakes.

Dado('foram importados os seguintes usuários do SIGAA:') do |table|
table.hashes.each do |row|
user = Usuario.find_by(email: row['email'])
Copy link

Copilot AI Dec 16, 2025

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.

Copilot uses AI. Check for mistakes.
Comment on lines +28 to +31
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)
Copy link

Copilot AI Dec 16, 2025

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.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants