CSC/ECE 517 Spring 2023 - E2302: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 169: Line 169:
7) Create the assignment
7) Create the assignment


8) Go to the Assignment page and add participants to the assignment.
8) Go to the Assignment page and add participants (ex. Paul & Dan) to the assignment.


9) Check the sidekiq page for queued jobs.
9) Check the sidekiq page for queued jobs.

Revision as of 02:48, 23 March 2023

E2302. Refactoring the Delayed Mailer and Scheduler

Expertiza Overview

Background

Expertiza is an open source software written using Ruby on Rails which functions as a learning management software system. It has man different functions and abilities including the ability to create assignments, quizzes, assignment groups and topics, and also a complete mechanism for providing peer reviews and feedback for other groups and other teammates.


Prior Work

History: Previous projects

* E2253 [1]
* E2144 [2]
* E2273 [3]

The latest Pull Request was not merged into the repository due to some failing tests and missing comments.
Tests were failing in the following files-

  • spec/models/assignment_form_spec.rb
  • spec/controllers/assignments_controller_spec.rb

We try to address those failing tests and add block comments before function definition wherever needed.
Additional testing of some related files is also in the scope of the project.

Our Changes

Upon review of previous PRs, we found that the work was thorough, albeit a few test cases were failing, and comments and methods could be refactored better. Based on the prompts we got, we focussed on refactoring the create method of assignments controller, and assignments form, along with the refactoring of sidekiq-related files.

Below is the summary of all the changes as part of this PR.

Changes to spec/controllers/auth_controller_spec.rb

 #  Change Rationale Commit Link
1 Refactored the create method into multiple methods The current create method is long and have multiple complex references and if statements. Created separate helpers to simplify complex DB context Commit
2 Used early return in case of errors We refactored the code such that the errors like the assignment already being present or the directory already being present were caught early in the code. It leads to cleaner code as well. Commit
3 Renamed variable names Some of the current variable names were ambiguous as to what they meant, (cur_questionnaire, cur_due, etc.). Renamed those names to be less ambiguous and state their function. Commit
4 Added comments to other helper methods Some functions had no comments which were needed. Commit

Changes to app/mailers/mail_worker.rb

 #  Change Rationale Commit Link
1 Removed inline comments and added block comments to the function perform Block comments before the function allows better readability and looks clean Commit
2 Moved the line to find the participants of a course inside the conditional block Earlier the list of participants of a course were found even when the deadline_type was 'drop_outstanding_reviews’. We do find the list of emails when it is not 'drop_outstanding_reviews’ and send emails to them. Commit
3 Combined the multiple attr_accessorlines into a single line Better readability and shorter function code. Commit
4 @mail object is not used as it is not reused anywhere else Any temporary variable that is used once should be avoided as it takes up valuable resources. Commit

Changes to spec/models/assignment_form_spec.rb

 #  Change Rationale Commit Link
1 Replaced ‘mailers’ with ‘jobs’ in add_to_delayed_queue test Test was failing due to checking the wrong Sidekiq queue, currently add_to_delayed_queue adds to job queue NOT mailers queue Commit

Changes to app/models/assignment_form.rb

 #  Change Rationale Commit Link
1 Added block comments to methods and removed inline comments Better readability and looks clean Commit
2 Created default_assignment_questionaire to handle creation of a default assignment_questionnaire that was originally in assignment questionnaire assignment_questionnaire originally not only searched for an assignment_questionnaire but created one if one matching type did not exist. Now the second functionality (creating a default assignment_questionnaire) is its own method. Commit
3 In line 58 of original code replaced [][] method of searching with .dig This particular line could throw errors and .dig is a safer way to search a table without the risk of getting nil errors Commit


Changes to spec/sidekiq_mail_worker_spec.rb

 #  Change Rationale Commit Link
1 Added test case for method perform in mail_worker.rb This test case was not implemented in the earlier Pull Request Commit
2 Added test case for method find_participant_emails in mail_worker.rb This test case was not implemented in the earlier Pull Request Commit
3 Added test case for method email_reminder in mail_worker.rb This test case was not implemented in the earlier Pull Request Commit

Test Coverage for some related files

spec/controllers/auth_controller_spec.rb

After making the changes to assignment_form and assignment_form_spec we ran the rspec tests with the command bundle exec rspec spec/models/assignment_form_spec.rb

spec/models/assignment_form_spec.rb

Automated testing of sidekiq_mailer_worker_spec.rb

spec/sidekiq_mail_worker_spec.rb

Automated testing of assignments_controller_spec.rb

Testing

VCL : http://152.7.178.223:8080/

Login: instructor_Lien

Password: password

To Test via UI

1) Login to VCL

2) Click on Manage

3) Click on Assignments

4) click on +

5) Create an assignment with a non-zero delay in SimiCheck and Similarity Threshold to a non-zero.

6) Go to the due date and add a due date for tomorrow.

7) Create the assignment

8) Go to the Assignment page and add participants (ex. Paul & Dan) to the assignment.

9) Check the sidekiq page for queued jobs.