CSC/ECE 517 Spring 2022 - E2217: Refactor questionnaires controller: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 5: Line 5:


=== Problems and Solutions ===
=== 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''.  
*'''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''':
**'''Solution''':


* '''Problem''': The ''create'' method is 49 lines long, and needs to be broken up
* '''Problem''': The ''create'' method is 49 lines long, and needs to be broken up
** '''Solution''':
**'''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 in ''scored_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.


== Modified Files ==
== Modified Files ==

Revision as of 19:11, 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 in scored_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.

Modified Files

(Add modified files and list of changes here)

Testing

Running Tests

  rspec ./spec/controllers/questionnaires_controller_spec.rb

Pull Request

(Add pull request link here)