CSC/ECE 517 Spring 2022 - E2217: Refactor questionnaires controller: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
== Description == | == Description == | ||
This project focused on sanding down the rough edges of questionnaires_controller.rb through the removal of the unused ''create_questionnaire'' method, breaking up the exceedingly long ''create'' method, transfer of hardcoded values in the ''add_new_questions'' method, and general code cleanup. | This project focused on sanding down the rough edges of <code>questionnaires_controller.rb</code> through the removal of the unused ''create_questionnaire'' method, breaking up the exceedingly long ''create'' method, transfer of hardcoded values in the ''add_new_questions'' method, and general code cleanup. | ||
=== Problems and Solutions === | === Problems and Solutions === | ||
Line 8: | Line 8: | ||
**'''Solution''': | **'''Solution''': | ||
* '''Problem''': The | * '''Problem''': The <code>create</code> method is 49 lines long, and needs to be broken up | ||
**'''Solution''': | **'''Solution''': | ||
*'''Problem''': There are three checks for whether a question is a | *'''Problem''': There are three checks for whether a question is a <code>QuizQuestionnaire</code>. These checks are likely unnecessary, and testing the class of an object carries potential problems. | ||
**'''Solution''': | **'''Solution''': | ||
*'''Problem''': There are assignment values hardwired into the code in | *'''Problem''': There are assignment values hardwired into the code in <code>add_new_questions</code>. Although these fields are okay to default to the given values, these should be defined constants | ||
**'''Solution''': As these values related to | **'''Solution''': As these values related to <code>ScoredQuestion</code> items, constants were created in <code>scored_question.rb</code>. <code>add_new_questions</code> now uses these class constants when assigning default values for fields. These values are all changeable in the UI after initialization. | ||
Addition of constants to | Addition of constants to <code>scored_question.rb</code>: | ||
[[File:Scored_question_changes.png]] | [[File:Scored_question_changes.png]] | ||
*'''Problem''': Several methods have a | *'''Problem''': Several methods have a <code>questionnaire_id</code> as a parameter, this may be unnecessary in several situations where <code>params[:id]</code> would suffice | ||
**'''Solution''': | **'''Solution''': | ||
Revision as of 19:31, 17 March 2022
This page describes the changes made for the Spring 2022 OSS Project E2217: Refactoring Questionnaires Controller
Description
This project focused on sanding down the rough edges of questionnaires_controller.rb
through the removal of the unused create_questionnaire method, breaking up the exceedingly long create method, transfer of hardcoded values in the add_new_questions method, and general code cleanup.
Problems and Solutions
- Problem: The
create_questionnaire
method is not used.create_questionnaire
has no immediate apparent calls, and appears to have the same functionality ascreate
.- Solution:
- Problem: The
create
method is 49 lines long, and needs to be broken up- Solution:
- Problem: There are three checks for whether a question is a
QuizQuestionnaire
. These checks are likely unnecessary, and testing the class of an object carries potential problems.- Solution:
- Problem: There are assignment values hardwired into the code in
add_new_questions
. Although these fields are okay to default to the given values, these should be defined constants- Solution: As these values related to
ScoredQuestion
items, constants were created inscored_question.rb
.add_new_questions
now uses these class constants when assigning default values for fields. These values are all changeable in the UI after initialization.
- Solution: As these values related to
Addition of constants to scored_question.rb
:
- Problem: Several methods have a
questionnaire_id
as a parameter, this may be unnecessary in several situations whereparams[:id]
would suffice- Solution:
- Problem: Several bad if statements exist
- Solution:
Modified Files
(Add modified files and list of changes here)
Testing
Running Tests
rspec ./spec/controllers/questionnaires_controller_spec.rb
Future Improvements
Pull Request
GitHub link: https://github.com/expertiza/expertiza/pull/2320