CSC/ECE 517 Spring 2022 - E2236: Fix issues related to deadlines and late policies: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 61: Line 61:
=== Testing Goals and Test Objects ===
=== Testing Goals and Test Objects ===


''Drawing from the project objectives:''
#Ways to get added to the waitlist for a topic
#Ways to get added to the waitlist for a topic
##Team requests a topic that has no slot available.
##Team requests a topic that has no slot available.
Line 73: Line 72:
##team is deleted
##team is deleted
##student gets added to a new team, then the old team's waitlist should be dropped
##student gets added to a new team, then the old team's waitlist should be dropped


=== RSpec Unit Tests ===
=== RSpec Unit Tests ===

Revision as of 20:54, 11 April 2022

Problem Description

Expertiza can automatically deduct points if a student is late in performing some action (e.g., submitting or reviewing). This is implemented by defining a new “late policy” and applying it to the assignment. Late policies are managed on the Due dates tab of assignment creation (or editing). The team found some issues in the current implementation which either cause errors are completely not functional. The goal of this project is to eliminate these issues by making necessary changes and adding new test cases which cover all scenarios.

Issues with the Current Implementation

The following issues have been raised in the current implementation:

  • Issue 1 - When creating a late policy, the “back” link does not take the user back to editing the assignment.


  • Issue 2 - After creating a late policy, the “back” link does not take the user back to editing the assignment.



  • Issue 3 - After checking the "Apply penalty policy" box and clicking the 'save' or 'create' button on the Due dates tab, the box is unchecked on page refresh.




  • Issue 4 - There is also no indication of this penalty policy for students, and no proof it actually works




  • Issue 5 - No Botton navigating to the list of all late policies



  • Issue 6 - When creating/editing an assignment, you can’t see the detail of each late policy


  • Issue 7 - Adding test cases to check the late policy applied actually works to subtract points from the students.

Refactoring and Design Patterns

Since our goal is to fix existing functionalities we will not be updating the existing design patterns being employed in the code. Yet, we would like to discuss what makes these refactoring important. Refactoring is a systematic process of improving code without creating new functionality. Thus, a key to the success of our project is ensuring everything that was working before our changes work even after our changes have been added. To ensure this, we will continue to test the system after each issue has been fixed. This will allow us to ensure two things:

  • We are only changing what we set out to change when fixing a particular issue.
  • We are not breaking what was working before we deployed our fix.

We believe at the end our changes will increase the quality of Expertiza and improve the experience for users an developers alike.

Project Scope

Testing

Testing Goals and Test Objects

  1. Ways to get added to the waitlist for a topic
    1. Team requests a topic that has no slot available.
    2. When capacity/max choosers for a topic is increased
    3. When a student gets added to a team that already has a signed up topic
  2. Ways to get off a waitlist
    1. team gets the topic they are waiting for ( all other waitlists are dropped for the team)
    2. team drops off the waitlist
    3. instructor drops team from the waitlist
    4. a drop-topic deadline passes
    5. team is deleted
    6. student gets added to a new team, then the old team's waitlist should be dropped

RSpec Unit Tests

Test cases provided here, will add RSpec code blocks for the final submission

  • Student Waitlist
Scenario: Getting added to the waitlist for a topic 
 Given: Logged in as a Student
  When: The topic for an assignment has no available slots
   And: Student tries to signup for a topic
  Then: The team that the student is a part of should be added to the waitlist for the topic.
Scenario: Getting enrolled in a topic 
 Given: Logged in as a Student
  When: The topic for an assignment has available slots
   And: Student tries to signup for a topic
  Then: The team that the student is a part of should be enrolled for the topic.
Scenario: All waitlisted topics getting dropped
 Given: Logged in as a Student
  When: Student gets enrolled into a course for which he was waitlisted before.
  Then: The team that the student is a part of should be dropped from the remaining waitlisted topics.
Scenario: All waitlisted teams getting dropped
 Given: Logged in as a Student
  When: The deadline for a topic passes.
  Then: All the waitlisted teams for that particular topic must be dropped.
Scenario: Getting enrolled in a topic
 Given: Logged in as a Student
  When: The enrolled team for a topic drops
  Then: The team that was waitlisted earlier for the topics must be enrolled.

Manual Testing

Student's View




Instructor's View



Instructor's View With Waitlists




Test 1:
Student should be able to add their team to the waitlist by clicking on Check icon (see the image above) if the team has not signed up in any topic.

Test 2:
Student should be able to drop the team from the waitlist by clicking on Delete icon (see the image above) if they are no longer interested in it.

Test 3:
Instructor should be able to add a student to the topic by clicking on Check (see the image above) icon.

Test 4:
Instructor should be able to delete a student to the topic by clicking on Delete (see the image above) icon.

Test 5:
Instructor should be able to view all the students signup for a topic in the page displayed.

Test 6:
Instructor should be able to view all the topics available

Test 7:
Instructor should be able to view waitlisted and signed up teams for all the topics in the assignment

Test 8:
Instructor should be able to drop waitlisted team for a topics in the assignment

we will be adding more test cases as the project progress.

Regression Testing

In order to ensure complete coverage, testing of the changes done between the end of last semester and this project will be done to ensure that old test cases still pass.

  1. Make sure all existing waitlist functionality still passes

Project Mentors

  • Nicholas Himes

Team Members

  • Zhiyuan Ma
  • Gaolin Zhang
  • Zhijin Yang
  • Yuyang Jiang

Useful Links

E2236

  1. GitHub Repository

Expertiza

  1. Expertiza on GitHub
  2. Live Expertiza website