CSC/ECE 517 Spring 2022 - E2244. Support for saying your team pair-programmed

From Expertiza_Wiki
Jump to navigation Jump to search

Introduction

E2244 introduces a new feature of pair-programming for the teams. Pair-programming feature will allow the instructor to create an assignment with the option for pair-programming. It will allow the team members to work in collaboration and commit using a single account.

Problem Statement

Expertiza allows the students to form teams for a given assignment. At times the students wish to submit or commit their work in a collaborative way from a single account. As of now, expertiza does not capture this intent of the students which makes it difficult for the instructors and the teaching assistants to understand whether all the students have contributed towards the assignment and students have to commit using different accounts to show their work. E2244 will allow the instructors to create a new assignment with the pair-programming feature which will allow the students to mark whether they performed pair-programming or not for a given assignment. It will also ensure that all the team members have agreed to pair-programming. The instructors and teaching assistants will be able to view whether a team has opted for pair-programming or not on the UI.


What needs to be done

  • Student view
    • A button for requesting pair-programming
    • Pair-programming initiators - the user's view who has requested for pair-programming
    • Pair-programming receivers - all the other users to who have to accept/decline the pair-programming request
  • Instructor/Teaching Assistant view
    • has pair-programming? checkbox on the create assignment page
    • pair programming column of a given assignment which will show if a team has opted for pair-programming or not.
  • Table changes
    • Teams table - Add a new attribute for pair-programming (pair_programming_request)
    • Teams Users table - Add a new attribute to capture individual acceptance or rejection of pair-programming request (pair_programming_status).
    • Assignment table - Add a new attribute for pair-programming (enable_pair_programming)

Design

Files Requiring Modification

  • app/views/assignments/edit/_general.html.erb

It appears this partial renders the general tab of the create new assignments page. We need to add a checkbox for pair programming in this file.

  • app/views/assignments/list_submissions.html.erb

This file renders the list of all the submissions for a given assignment. We need to add a new column - pair-programming which will indicate if the team has pair-programmed for this assignment or not.

  • app/views/student_teams/view.html.erb

This file renders the team information of a given assignment for a particular member. We need to add a table for pair-programming and a button to request for pair-programming.

  • app/models/assignment.rb

This is a model for an assignment. We will add a method pair_programming_enabled? in this file. This will allow us to check if pair-programming has been enabled in the current assignment.

  • app/controllers/pair_programming_controller.rb

We have created a new controller to handle the send invitation and accept/decline feature.

Wireframes

  • Instructor view





  • Student View



Flow Diagrams

  • Instructor enables pair programming for an assignment


  • Instructor views teams that have performed pair-programming for a particular assignment

  • Student initiates a request for pair-programmming

  • Student accepts the pair-programming invitation

  • Student declines the pair-programming invitation

Test Plan

As this is a new feature, we will perform UI testing (functional) as well as unit testing. Following are the specifics of the testing that will be performed:

Functional Testing

  • Scenario 1: Test pair-programming? checkbox visibility
 Given: Instructor has logged in
 When: Instructor clicks on new assignment
 Then: pair-programming? checkbox is visible
  • Scenario 2: Test pair-programming? checkbox ticked
 Given: Instructor has logged in
 When: Instructor clicks on new assignment 
 And: Instructor checks the pair_programming checkbox
 And: Instructor fills the other required details
 And: Instructor clicks on create assignment
 Then: pair-programming is enabled for the assignment
  • Scenario 3: Test pair-programming column in the Instructor view assignment page
 Given: Instructor navigates to a particular assignment with pair-programming enabled
 When: Instructor clicks on view submissions
 Then: Instructor is able to view the submissions along with the pair-programming column
  • Scenario 4: Test request for pair-programming button sends invitations to the team members
 Given: Student is logged in and is assigned to an assignment
 When: Student clicks on the Request for pair-programming button
 Then: All other team members should receive the invitation for pair-programming
  • Scenario 5: Test sender status for pair-programming is accepted
 Given: Student is on the teams page of an assignment
 When: Student clicks on the request for pair-programming button
 Then: The pair-programming status for the sender is marked as accepted
  • Scenario 5: Test pair-programming invitation is visible to the student
 Given: Another student has initiated pair-programming
 When: Student navigates to the view teams page
 Then: Student is able to see the accept|decline invitation
  • Scenario 6: Test pair-programming invitation acceptance
 Given: Student is able to see the accept|decline invitation
 When: Student clicks on the accept invitation link
 Then: Pair-programming status for the student is accepted
  • Scenario 7: Test pair-programming invitation declined
 Given: Student is able to see the accept|decline invitation
 When: Student clicks on the decline invitation link
 Then: Pair-programming status for the student is declined
 And: Request for pair-programming button is visible
  • Scenario 8: Request for pair-programming button is hidden after student clicks on the button
 Given: Student is able to see request for pair-programming button
 When: Student clicks on the request for pair-programming button
 Then: request for pair-programming button is hidden for all the team members

Unit Testing

  • spec/pair_programming_controller_spec.rb

We will test the accept, decline and send_invitations method from the pair_programming_controller.rb file.

  • spec/models/assignment.rb

We will test the enable_pair_programming? method in this file

Team Information

Atharva Rajendra Patil
Atharva Milind Joshi
Kriti Khullar
Rucha Kolekar