CSC/ECE 517 Spring 2019 E1910 Refactor assignments controller.rb

From Expertiza_Wiki
Revision as of 21:40, 19 March 2019 by Vkhanna (talk | contribs) (Created page with "This wiki page is for the description of changes made under E1910 OSS assignment for Spring 2019, CSC/ECE 517. == Expertiza Background== Expertiza is an educational web applica...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This wiki page is for the description of changes made under E1910 OSS assignment for Spring 2019, CSC/ECE 517.

Expertiza Background

Expertiza is an educational web application created and maintained by the joint efforts of the students and the faculty at NCSU. It’s an open source project developed on Ruby on Rails platform and it’s code is available on Github. It allows students to review each other’s work and improve their work upon this feedback.

Description of the current project

The assignments_controller has multiple functions with wrong naming convention, they are classic examples of bad function names. Few of the variables names used in the method can also be refactored to make it more relevant and understandable. In addition, functions code can be optimized to ensure that it follows DRY principle. Also, most of the functions have missing code comments, which should be added to the functions.

Files modified in current project

A controller was modified for this project namely:
1. AssignmentsController

The method names that were updated are:

 - handle_assignment_directory_path_nonexist_case_and_answer_tagging
 - assignment_form_key_nonexist_case_handler
 - Handle_current_user_timezonepref_nil
 - update_nil_dd_deadline_name
 - update_nil_dd_description_url
 - assignment_form_assignment_staggered_deadline?
 - check_due_date_nameurl_not_empty
 - update_feedback_assignment_form_attributes
 - allowed_action?


AssignmentsController

This is a controller that helps instructors, TA's, administrators, and super-administrators create/update/edit/show/delete current and past assignments. We updated the afore mentioned method names to

 - nonexist_path_with_tagging
 - assignment_saving
 - nil_timezone_handler
 - update_due_date_deadline_name
 - update_due_date_description_url

 - assignment_staggered_deadline?
 - check_due_date_nameurl

 - update_feedback_attributes


The action_allowed? method was updated to be less repetitive in the if-else statement. The 'else' was removed since it was an extension to a previous statement in the 'if' portion.

There were many existing test cases for this controller. We have made sure that no test cases were violated by our changes. No changes were made to the views or model.


This is the new method created after the above refactoring:


Testing Details

RSpec

There were no existing test cases for the GradesController. We have added a new spec file 'grades_spec.rb' which covers testing scenario for the newly added method. The specs were run on the previous and current files and they return the same results implying that the refactored code does not break anything. As the model was not changed, no test cases were added for the model.


Scope for future improvement

1. The construct_table method in GradesHelper is not used anywhere. It has no reference in the project. So we feel it can be safely removed.
2. The has_team_and_metareview? method in GradesHelper can be broken down into separate methods, one each for team and metareview. This will provide improved flexibility. It needs some analysis though, as both the entities(team & metareview) are currently checked in conjuction from all the views they are referenced from.