CSC/ECE 517 Spring 2022 - E2240. Re-write waitlist functionality: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
(added new cases)
(Reordered segments)
Line 1: Line 1:


== Project Overview ==
== Problem Statement==
 
=== Feature Overview ===
=== Feature Overview ===


 
=== Issues with existing functionality ===


=== Overview of Major Changes ===
=== Overview of Major Changes ===


=== Files Involved ===
== Proposed design and Plan of action ==
 
 
=== Testing ===
 
==== Issues with Existing Tests ====
 
== Statement of Problem ==
 
== Plan and List of Work Done ==


=== General Design Goals ===
=== General Design Goals ===
====Changes to the signed_up_teams Table====
=== Changes to the signed_up_teams Table ===
 
=== Files Involved ===


====Adding new waitlist_teams Table ====
===Adding new waitlist_teams Table ===
#Add a new table waitlist_teams
#Add a new table waitlist_teams
#The attributes for the table are team_id(refers to the teams table), topic_id (refers to the sign_up_topics table)
#The attributes for the table are team_id(refers to the teams table), topic_id (refers to the sign_up_topics table)
Line 36: Line 28:
##Get first team in waitlist for topic
##Get first team in waitlist for topic
##Check waitlist empty for topic
##Check waitlist empty for topic
##Check if team has any waitlists


Check if team has any waitlists
===Refactoring and Design Patterns===
====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:
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:



Revision as of 19:43, 6 April 2022

Problem Statement

Feature Overview

Issues with existing functionality

Overview of Major Changes

Proposed design and Plan of action

General Design Goals

Changes to the signed_up_teams Table

Files Involved

Adding new waitlist_teams Table

  1. Add a new table waitlist_teams
  2. The attributes for the table are team_id(refers to the teams table), topic_id (refers to the sign_up_topics table)
  3. This table only stores the waitlisted teams for each topic.
  4. The default timestamp in the table will be used to check the first team waitlisted instead of using queues to implement the functionality.
  5. The waitlist_helper class will perform the following operations
    1. Delete all waitlists for team
    2. Purge all waitlists for topic
    3. Add team to waitlist
    4. Delete specific team from waitlist
    5. Get all waitlisted topics for team
    6. Get all waitlisted teams for topic
    7. Get first team in waitlist for topic
    8. Check waitlist empty for topic
    9. Check if team has any waitlists

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.


Specific Tasks Completed

will be added for the final submission

Implementation

will be added for the final submission

Testing

Video Demonstration

will be added for the final submission

Testing Goals and Test Objects

Drawing from the project objectives:

  1. Ways to get added to 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 student gets added to a team which has 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 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: Topic for a 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 waitlist for the topic.

=== Manual UI Tests ===
*Student ID in header
<pre>
Scenario: Student ID in grading history view 
Logged in as an Instructor/Admin
  On Assignment page, click on Grading History
   Resulting Grading History Table is shown
    Student ID appears in the header, not in any table columns

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

Conclusions and Future Work

Comprehensive Testing and Scope

  • will be added for final submission

Conclusion

will be added for final submission

Useful Links

Pull request

Deployed application with changes

Forked repository

Contributors

Students

  • Krishna Saurabh Vankadaru (kvankad)
  • Samson Mulkur (smulkur)
  • Akhil Mengani (amengan)
  • Sai Naga Vamshi Chidara (schidar)

Mentor

  • Naman Shrimali (nshrima)