CSC/ECE 517 Spring 2016 E1631 Team-based reviewing: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 126: Line 126:


===Factory Girl===
===Factory Girl===
We have used Factory Girl for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.
 
===Running RSpec===
===Running RSpec===
<code>
<code>
   $ rspec spec/models/assignment_team_spec.rb
   $ rspec spec/models/assignment_team_spec.rb
</code>
</code>

Revision as of 02:11, 12 April 2016

Purpose

When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project.

  • Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams .
  • There are occasions when it's advantageous to review projects as a team .
  • It helps foster discussion and thereby improves the process of learning.

Task Description

This project comprises of the following steps :

  1. Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. We added a boolean field "reviewer_is_team" to identify if the review is performed by a team or an individual.
  2. If reviewer_is_team is true, the reviewer_id will be a reference to the Teams table.
  3. For an Instructor to specify whether the review is a Team/Individual based review, we will be providing a dropdown on the Review Strategy tab of assignment creation.
  4. Ensure that features such as "view my scores", or the "alternate view/heat map" should continue working.
  5. Concurrency control: Shouldn't allow multiple teammates to edit the team's review at the same time. The scope of the project doesn't include concurrent editing to allow multiple teammates to edit a review simultaneously.

Design

Design Pattern

Model View Controller

In an MVC model, a software application is divided into three major components: Model, View and Controller.

Model - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.

View - Displays the data received from the controller in the user interface.

Controller - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.

Use Case Diagram

Name: Specify review type on Review Strategy tab.

Actor: Instructor.

Description: The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.


Name: Perform Review.

Actor: Individual Student/Team.

Description: The individual/team will perform a review for the Assignment.

Database Design

ResponseMap in essence, records who reviews whom. Schema of ResponseMap:

Field Data type
id int(11)
reviewed_object_id int(11)
reviewer_id int(11)
reviewee_id int(11)
type varchar(255)
created_at datetime
updated_at datetime
caliberate_to boolean
reviewer_is_team boolean

The description of the fields of the database for ResponseMap:

1. id: The unique record identifier.

2. reviewed_object_id: The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.

3. reviewer_id: The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.

4. reviewee_id: The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed.

5. type : Indicates the type of the ResponseMap.

6. created_at: The timestamp when the Response was created.

7. updated_at: The timestamp when the Response was updated.

8. calibrate_to: A field of boolean data type.

9. reviewer_is_team: If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.

Key files to be modified

Models

  • review_response_map.rb: Add a field reviewer_is_team , which determines if the reviewer is doing an individual review or on behalf of the team.
  • assignment.rb: Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.

Views

  • assignments/edit/_review_report.html.erb: Add a dropdown for the instructors to select if the reviews are individual or team-based.

Controllers

  • review_mapping_controller.rb
  • participants_controller.rb

Testing Details

RSpec

RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL).

RSpec is used to write test cases using TTD approach. All the tests can be executed by rspec spec command, or can also be executed individually using the command "rspec spec/models/assignment_team_spec.rb".

Factory Girl

Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.

Running RSpec

 $ rspec spec/models/assignment_team_spec.rb