CSC/ECE 517 Spring 2022 - E2217: Refactor questionnaires controller: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 21: | Line 21: | ||
===='''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==== | ===='''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''': Where applicable, <code>questionnaire_id</code> was changed to <code>params[:id]</code>. This was done in methods where <code>params[:id].nil?</code> was not called, and in methods where <code>questionnaire_id = params[:id]</code> was called | ||
Change of <code>questionnaire_id</code> to <code>params[:id]</code> in <code>save_all_questions</code>: | Change of <code>questionnaire_id</code> to <code>params[:id]</code> in <code>save_all_questions</code>: |
Revision as of 20:25, 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 as create
.
- 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.
Addition of constants to scored_question.rb
:
Problem: Several methods have a questionnaire_id
as a parameter, this may be unnecessary in several situations where params[:id]
would suffice
- Solution: Where applicable,
questionnaire_id
was changed toparams[:id]
. This was done in methods whereparams[:id].nil?
was not called, and in methods wherequestionnaire_id = params[:id]
was called
Change of questionnaire_id
to params[:id]
in save_all_questions
:
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