CSC/ECE 517 Fall 2020 - E2068. Refactor quiz questionnaires controller.rb: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 13: Line 13:
#Make appropriate changes to tests so that they pass after the above changes.
#Make appropriate changes to tests so that they pass after the above changes.


=Implementation=
==Min and Max Question Score==
===Current Implementation===
Quizzes are created with a default minimum_ and maximum_question_score, which is the minimum or maximum score that can be obtained for any one question.  The values are automatically set by the controller as 0 and 1, respectively.  The final score of a quiz is calculated by multiplying the weight of the question by the score and summing the value of each question.
===Problem(s)===
Currently, minimum and maximum values cannot be set in a custom way per quiz.
===Solution===
Fields for minimum_question_score and maximum_question_score have been added to the form for creating each new quiz.  The value is set per quiz, not per question.  The values are not restricted.


 
==Creating Questions==
=Implementation=
===Current Implementation===
When creating a quiz, there are currently three different methods for each of the three different question types:  true-false, radio, and multiple choice. 
===Problem(s)===
Radio and multiple choice implement very similar, almost duplicated, functionality in both methods.
===Solution===
Radio and multiple choice questions have been combined into a single method so as to remove the duplicated functionality.  True-false questions will remain separate, because the functionality is significantly different.  Future adjustments would require too many changes in the code and tests.


==Files Involved==
==Files Involved==

Revision as of 17:40, 10 October 2020

Introduction

This project contributes to Expertiza, an open-source project using Ruby on Rails. Expertiza is a platform for student learning that encourages active and cooperative learning while discouraging plagiarism.

Background

quiz_questionnaires_controller.rb is used in Expertiza to handle all functionality related to quizzes. A quiz is a type of questionnaire that allows reviewees to interact with their reviewers and making sure they read the submissions before reviewing. The student creating a quiz is supposed to ask questions related to their work, which, ideally, a reviewer should be able to answer. (If a reviewer cannot answer the questions about the reviewed work, then we might doubt the quality of that reviewer’s review.) This controller needs some changes as detailed below.

Issues

  1. Change the way min_question_score and max_question_score are set for @questionnaire on lines 39-40, as well as on lines 53-54.
    • These statements set the max and min scores to 0 and 1 regardless of what the user enters, which is not intended.
    • Change it so that the values are set according to what the user enters from the UI.
  2. Change the error message on line 78:
  3. Consider lines 259-265, different methods are called with the same parameters (question, choice_key, q_choices) to create different types of questions, depending on q_type.
  4. Make appropriate changes to tests so that they pass after the above changes.

Implementation

Min and Max Question Score

Current Implementation

Quizzes are created with a default minimum_ and maximum_question_score, which is the minimum or maximum score that can be obtained for any one question. The values are automatically set by the controller as 0 and 1, respectively. The final score of a quiz is calculated by multiplying the weight of the question by the score and summing the value of each question.

Problem(s)

Currently, minimum and maximum values cannot be set in a custom way per quiz.

Solution

Fields for minimum_question_score and maximum_question_score have been added to the form for creating each new quiz. The value is set per quiz, not per question. The values are not restricted.

Creating Questions

Current Implementation

When creating a quiz, there are currently three different methods for each of the three different question types: true-false, radio, and multiple choice.

Problem(s)

Radio and multiple choice implement very similar, almost duplicated, functionality in both methods.

Solution

Radio and multiple choice questions have been combined into a single method so as to remove the duplicated functionality. True-false questions will remain separate, because the functionality is significantly different. Future adjustments would require too many changes in the code and tests.

Files Involved

app/controllers/quiz_questionnaires_controller.rb app/views/questionnaires/_quiz_questionnaire.html.erb app/views/questionnaires/view.html.erb spec/controllers/quiz_questionnaires_controller_spec.rb

Code Modifications

Testing our Solutions

Running Tests

rspec spec/controllers/quiz_questionnaires_controller.rb

Testing Server

Creating New Quiz

Team Information

Colleen "Bria" Engen (ceengen)
Justin Kirschner (jkirsch)
Darby Madewell (demadewe)
Mentor: Sanket Pai (sgpai)

References