CSC/ECE 517 Spring 2023 - E2317: Reimplement participant.rb
This wiki page is for the description of changes made under E2317 OSS assignment for Spring 2023, CSC/ECE 517
About Expertiza
Expertiza is an open source project based on Ruby on Rails framework. It is a web application which is maintained collectively by NC State faculty and students which allows instructors to create new assignments and customize new or existing assignments. It also allows the instructors to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.
Overview of the Classes
participant.rb
The participant.rb is a model class that has many associations with other models. There are many methods present in it such as fullname, name, team and handle. There is a method called delete which checks for any associations before performing the delete operation. The other methods include topic_name, mail_assigned_reviewers, able_to_review, email, authorization and self.sort_by_name. There is one more method self.export that returns the information of the participant as a CSV file.
Backgroud of the Project
The participant.rb model has many new changes to be implemented. The reimplementation has to make sense and while checking the original model, we realised that some of the methods were irrelevant to participants model and that it has to be implemented in some other model. The changes mainly dealt with removing, merging and replacing methods to segregate methods with a single functionality relevant to participants model. Tests were written for all of the methods that were introduced and modified. Existing tests for the methods that were unchanged were run to ensure proper functioning of the model. Comments are added to each method to enhance readability. Further information about the reimplementations are discussed below.
Design Decisions
The following changes were reimplemented in the participant.rb
1. Replaced force_delete method with leave_team method.
2. mail_assigned_reviewers method was removed.
3. able_to_review method was eliminated.
4. email method was removed as it was not required.
5. Merged export and export_fields methods.
Replaced force_delete Method with leave_team Method
The original 'force_delete' method would delete the participant from the team and if there is only one participant in the team then it would delete the team.
A new method 'leave_team' was introduced in place of 'force_delete' as 'force_delete' method is supposed to be present in the teams.rb and not participant.rb. The difference between force_delete method and this is that even if there is only one participant it wouldn't delete the team.
Testing Plan
The reimplementation codebase originally used Minitest to test the included models: assignment.rb, role.rb, and user.rb. But since Expertiza was originally tested with RSpec, we used RSpec to test out model. The participants.rb contains many methods and associations with other models. Hence, to test the methods in participants, the other dedpendent methods have to be stubbed and dummy models of the associated models have to be created as well.