<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Akhot</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Akhot"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Akhot"/>
	<updated>2026-08-15T16:24:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=134387</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=134387"/>
		<updated>2020-05-01T14:44:44Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* RSpec Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews while they peer review. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some good sample reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. &lt;br /&gt;
Instructors then select a subset of these reviews to be posted as an example reviews. These example reviews are shown in the peer review page (Other's work link) to the entire class. &lt;br /&gt;
&lt;br /&gt;
Additionally,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
3. The student can remove their consent anytime, and the sample review should no longer be visible to other students.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Key Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share my review as a sample for others&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response/view.html.erb''' and set a &amp;quot;visibility&amp;quot; field to “public”of the Response object via a controller method, &amp;quot;toggle_permission&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:SQ1.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “visibility” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_instructor.png|none|Instructor_MarkAsSample_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_viewSample.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
* Use Cases -&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Solution Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the responses table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Visibility&lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISHED || Selected to show as example by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations. &lt;br /&gt;
&lt;br /&gt;
1) Add 'visibility' column to responses&lt;br /&gt;
&lt;br /&gt;
2) Add new Table 'sample_reviews' &lt;br /&gt;
&lt;br /&gt;
'''2. Mapping of Reviews and Assignment:''' The example reviews can either be taken from an assignment of the current course or it could be from an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''3. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
=== Code changes ===&lt;br /&gt;
&lt;br /&gt;
1. '''Database changes:''' Added a column visibility in responses table.&lt;br /&gt;
&lt;br /&gt;
2. Added a checkbox to select whether reviews could be shown as an example in the response views - '''/app/views/response/response.html.erb'''&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the visibility field in responses table in response controller - '''/app/controllers/response_controller.rb''' &lt;br /&gt;
&lt;br /&gt;
4. The reviews which are marked as public by the students are marked with a tick mark in the review report views for the instructors. For this changes were made in the file _review_report.html.erb. A tick mark is shown if the visibility status of a response is public or published. To check for the visibility status a method visibility_public? is added in review_mapping_helper.&lt;br /&gt;
&lt;br /&gt;
5. To allow instructor to select among the public reviews to shown as examples to all students a button 'Mark as an example' in the popup views. Changes corresponding to this is made in '''/app/views/popup/team_users_popup.html.haml'''&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, a link Sample reviews is added in the Other's work page. Made changes in the views of student_review - '''/app/views/student_review/list.html.erb'''&lt;br /&gt;
&lt;br /&gt;
== DB Design ==&lt;br /&gt;
&lt;br /&gt;
=== Previous work ===&lt;br /&gt;
The previous approach for DB design added 2 new DB tables to store the status and association of sample reviews, namely, '''samplereviewmaps''' and '''similar_assignemnts'''. The samplereviewmaps table simple stored 2 fkey associations to review_map id and to the assignment_id.&lt;br /&gt;
&lt;br /&gt;
=== Our approach ===&lt;br /&gt;
In our approach, we are extending the existing response_maps table to contain an additional field, 'status', that stores the status of the response(review), as suggested in the above approach. This approach would prune the need to add an extra DB table, which would store redundant information. Additionally, the similar_assignemnts table would store the association for a response to all the assignments, the instructor/TA decide to publish for.&lt;br /&gt;
&lt;br /&gt;
[[File:Db.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review with a tick mark in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as an example&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as an example&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
The following acceptance tests using the RSpec/Capybara tests to be written.&lt;br /&gt;
&lt;br /&gt;
    describe &amp;quot;user_review&amp;quot; do&lt;br /&gt;
        context &amp;quot;user marks the review as public&amp;quot; do&lt;br /&gt;
        =begin&lt;br /&gt;
        select checkbox 'consent'&lt;br /&gt;
        click 'submit review'&lt;br /&gt;
        expect response.to have attribute(visibility: 'public')&lt;br /&gt;
        =end       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user marks the review as private&amp;quot; do&lt;br /&gt;
        =begin&lt;br /&gt;
        unselect checkbox 'consent'&lt;br /&gt;
        click 'submit review'&lt;br /&gt;
        expect response.to have attribute(visibility: 'private')&lt;br /&gt;
        =end       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user views the sample review for assignment&amp;quot; do&lt;br /&gt;
        =begin&lt;br /&gt;
        click link 'View Sample Review'&lt;br /&gt;
        click link 'Sample Review 1'&lt;br /&gt;
        expect page.to have content('Review')       &lt;br /&gt;
        =end&lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
   describe &amp;quot;instructor&amp;quot; do&lt;br /&gt;
      context &amp;quot;instructor marks the review as sample&amp;quot; do&lt;br /&gt;
        =begin&lt;br /&gt;
        click button 'Mark as example'&lt;br /&gt;
        expect page.to have_content('Select similar assignments')      &lt;br /&gt;
        =end       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;instructor selects similar assignments&amp;quot; do&lt;br /&gt;
        =begin&lt;br /&gt;
        click button 'Mark as example'&lt;br /&gt;
        select checkbox from 'similar_assignments'&lt;br /&gt;
        click button 'Publish Review'&lt;br /&gt;
        expect response.to have_attribute('published')&lt;br /&gt;
        expect Sample_reviews.to have_attribute(assignment_id: assignment.id)      &lt;br /&gt;
        =end        &lt;br /&gt;
        end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/khotAyush/expertiza/tree/e2022/sample-reviews&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133660</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133660"/>
		<updated>2020-04-17T19:56:46Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* RSpec Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews while they peer review. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some good sample reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. &lt;br /&gt;
Instructors then select a subset of these reviews to be posted as an example reviews. These example reviews are shown in the peer review page (Other's work link) to the entire class. &lt;br /&gt;
&lt;br /&gt;
Additionally,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
3. The student can remove their consent anytime, and the sample review should no longer be visible to other students.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Key Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_instructor.png|none|Instructor_MarkAsSample_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_viewSample.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
* Use Cases -&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the response_maps table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISHED || Selected to show as example by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations. &lt;br /&gt;
&lt;br /&gt;
1) Add 'status' column to response_map&lt;br /&gt;
&lt;br /&gt;
2) Add new Table 'similar_assignments' &lt;br /&gt;
&lt;br /&gt;
'''2. Mapping of Reviews and Assignment:''' The example reviews can either be taken from an assignment of the current course or it could be from an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''3. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding a column status in response_maps table. Changes will happen in '''db/schema.rb'''&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views - '''/app/views/response/response.html.erb'''&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in response_maps table in response controller - '''/app/controllers/response_controller.rb''' &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in '''/app/views/popup/team_users_popup.html.haml'''&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review - '''/app/views/student_review/list.html.erb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DB Design ==&lt;br /&gt;
&lt;br /&gt;
=== Previous work ===&lt;br /&gt;
The previous approach for DB design added 2 new DB tables to store the status and association of sample reviews, namely, '''samplereviewmaps''' and '''similar_assignemnts'''. The samplereviewmaps table simple stored 2 fkey associations to review_map id and to the assignment_id.&lt;br /&gt;
&lt;br /&gt;
=== Our approach ===&lt;br /&gt;
In our approach, we are extending the existing response_maps table to contain an additional field, 'status', that stores the status of the response(review), as suggested in the above approach. This approach would prune the need to add an extra DB table, which would store redundant information. Additionally, the similar_assignemnts table would store the association for a response to all the assignments, the instructor/TA decide to publish for.&lt;br /&gt;
&lt;br /&gt;
[[File:db_design_e2022.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as sample&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as sample&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
The following acceptance tests using the RSpec/Capybara tests to be written.&lt;br /&gt;
TODO: Add comments&lt;br /&gt;
    describe &amp;quot;user_review&amp;quot; do&lt;br /&gt;
        context &amp;quot;user marks the review as public&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user marks the review as private&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user views the sample review for assignment&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
   describe &amp;quot;instructor&amp;quot; do&lt;br /&gt;
      context &amp;quot;instructor marks the review as sample&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;instructor selects similar assignments&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133659</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133659"/>
		<updated>2020-04-17T19:54:28Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* Proposed Solution Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews while they peer review. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some good sample reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. &lt;br /&gt;
Instructors then select a subset of these reviews to be posted as an example reviews. These example reviews are shown in the peer review page (Other's work link) to the entire class. &lt;br /&gt;
&lt;br /&gt;
Additionally,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
3. The student can remove their consent anytime, and the sample review should no longer be visible to other students.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Key Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_instructor.png|none|Instructor_MarkAsSample_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_viewSample.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
* Use Cases -&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the response_maps table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISHED || Selected to show as example by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations. &lt;br /&gt;
&lt;br /&gt;
1) Add 'status' column to response_map&lt;br /&gt;
&lt;br /&gt;
2) Add new Table 'similar_assignments' &lt;br /&gt;
&lt;br /&gt;
'''2. Mapping of Reviews and Assignment:''' The example reviews can either be taken from an assignment of the current course or it could be from an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''3. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding a column status in response_maps table. Changes will happen in '''db/schema.rb'''&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views - '''/app/views/response/response.html.erb'''&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in response_maps table in response controller - '''/app/controllers/response_controller.rb''' &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in '''/app/views/popup/team_users_popup.html.haml'''&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review - '''/app/views/student_review/list.html.erb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DB Design ==&lt;br /&gt;
&lt;br /&gt;
=== Previous work ===&lt;br /&gt;
The previous approach for DB design added 2 new DB tables to store the status and association of sample reviews, namely, '''samplereviewmaps''' and '''similar_assignemnts'''. The samplereviewmaps table simple stored 2 fkey associations to review_map id and to the assignment_id.&lt;br /&gt;
&lt;br /&gt;
=== Our approach ===&lt;br /&gt;
In our approach, we are extending the existing response_maps table to contain an additional field, 'status', that stores the status of the response(review), as suggested in the above approach. This approach would prune the need to add an extra DB table, which would store redundant information. Additionally, the similar_assignemnts table would store the association for a response to all the assignments, the instructor/TA decide to publish for.&lt;br /&gt;
&lt;br /&gt;
[[File:db_design_e2022.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as sample&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as sample&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
The following acceptance tests using the RSpec/Capybara tests to be written.&lt;br /&gt;
&lt;br /&gt;
    describe &amp;quot;user_review&amp;quot; do&lt;br /&gt;
        context &amp;quot;user marks the review as public&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user marks the review as private&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user views the sample review for assignment&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
   describe &amp;quot;instructor&amp;quot; do&lt;br /&gt;
      context &amp;quot;instructor marks the review as sample&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;instructor selects similar assignments&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133658</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133658"/>
		<updated>2020-04-17T19:53:19Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* Proposed Solution Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews while they peer review. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some good sample reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. &lt;br /&gt;
Instructors then select a subset of these reviews to be posted as an example reviews. These example reviews are shown in the peer review page (Other's work link) to the entire class. &lt;br /&gt;
&lt;br /&gt;
Additionally,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
3. The student can remove their consent anytime, and the sample review should no longer be visible to other students.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Key Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_instructor.png|none|Instructor_MarkAsSample_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_viewSample.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
* Use Cases -&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the response_maps table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISHED || Selected to show as example by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations. &lt;br /&gt;
&lt;br /&gt;
1) Add 'status' column to response_map&lt;br /&gt;
&lt;br /&gt;
2) Add new Table 'similar_assignemnts' &lt;br /&gt;
&lt;br /&gt;
'''2. Mapping of Reviews and Assignment:''' The example reviews can either be taken from an assignment of the current course or it could be from an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''3. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding a column status in response_maps table. Changes will happen in '''db/schema.rb'''&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views - '''/app/views/response/response.html.erb'''&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in response_maps table in response controller - '''/app/controllers/response_controller.rb''' &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in '''/app/views/popup/team_users_popup.html.haml'''&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review - '''/app/views/student_review/list.html.erb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DB Design ==&lt;br /&gt;
&lt;br /&gt;
=== Previous work ===&lt;br /&gt;
The previous approach for DB design added 2 new DB tables to store the status and association of sample reviews, namely, '''samplereviewmaps''' and '''similar_assignemnts'''. The samplereviewmaps table simple stored 2 fkey associations to review_map id and to the assignment_id.&lt;br /&gt;
&lt;br /&gt;
=== Our approach ===&lt;br /&gt;
In our approach, we are extending the existing response_maps table to contain an additional field, 'status', that stores the status of the response(review), as suggested in the above approach. This approach would prune the need to add an extra DB table, which would store redundant information. Additionally, the similar_assignemnts table would store the association for a response to all the assignments, the instructor/TA decide to publish for.&lt;br /&gt;
&lt;br /&gt;
[[File:db_design_e2022.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as sample&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as sample&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
The following acceptance tests using the RSpec/Capybara tests to be written.&lt;br /&gt;
&lt;br /&gt;
    describe &amp;quot;user_review&amp;quot; do&lt;br /&gt;
        context &amp;quot;user marks the review as public&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user marks the review as private&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user views the sample review for assignment&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
   describe &amp;quot;instructor&amp;quot; do&lt;br /&gt;
      context &amp;quot;instructor marks the review as sample&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;instructor selects similar assignments&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133440</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133440"/>
		<updated>2020-04-14T00:46:58Z</updated>

		<summary type="html">&lt;p&gt;Akhot: restructure page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews while they peer review. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some good sample reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. &lt;br /&gt;
Instructors then select a subset of these reviews to be posted as an example reviews. These example reviews are shown in the peer review page (Other's work link) to the entire class. &lt;br /&gt;
&lt;br /&gt;
Additionally,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
3. The student can remove their consent anytime, and the sample review should no longer be visible to other students.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Key Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_instructor.png|none|Instructor_MarkAsSample_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_viewSample.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
* Use Cases -&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the response_maps table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISH || Selected to show as example by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations. &lt;br /&gt;
&lt;br /&gt;
1) Add 'status' column to response_map&lt;br /&gt;
&lt;br /&gt;
2) Add new Table 'similar_assignemnts' &lt;br /&gt;
&lt;br /&gt;
'''2. Mapping of Reviews and Assignment:''' The example reviews can either be taken from an assignment of the current course or it could be from an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''3. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding a column status in response_maps table. Changes will happen in '''db/schema.rb'''&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views - '''/app/views/response/response.html.erb'''&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in response_maps table in response controller - '''/app/controllers/response_controller.rb''' &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in '''/app/views/popup/team_users_popup.html.haml'''&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review - '''/app/views/student_review/list.html.erb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DB Design ==&lt;br /&gt;
&lt;br /&gt;
=== Previous work ===&lt;br /&gt;
The previous approach for DB design added 2 new DB tables to store the status and association of sample reviews, namely, '''samplereviewmaps''' and '''similar_assignemnts'''. The samplereviewmaps table simple stored 2 fkey associations to review_map id and to the assignment_id.&lt;br /&gt;
&lt;br /&gt;
=== Our approach ===&lt;br /&gt;
In our approach, we are extending the existing response_maps table to contain an additional field, 'status', that stores the status of the response(review), as suggested in the above approach. This approach would prune the need to add an extra DB table, which would store redundant information. Additionally, the silimalr_assignemnts table would store the association for a response to all the assignments, the instructor/TA decide to publish for.&lt;br /&gt;
&lt;br /&gt;
[[File:db_design_e2022.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as sample&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as sample&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
The following acceptance tests using the RSpec/Capybara tests to be written.&lt;br /&gt;
&lt;br /&gt;
    describe &amp;quot;user_review&amp;quot; do&lt;br /&gt;
        context &amp;quot;user marks the review as public&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user marks the review as private&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user views the sample review for assignment&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
   describe &amp;quot;instructor&amp;quot; do&lt;br /&gt;
      context &amp;quot;instructor marks the review as sample&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;instructor selects similar assignments&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133424</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133424"/>
		<updated>2020-04-14T00:38:44Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* Problem Statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews while they peer review. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some good sample reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. &lt;br /&gt;
Instructors then select a subset of these reviews to be posted as an example reviews. These example reviews are shown in the peer review page (Other's work link) to the entire class. &lt;br /&gt;
&lt;br /&gt;
Additionally,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
3. The student can remove their consent anytime, and the sample review should no longer be visible to other students.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the response_maps table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISH || Selected to show as example by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations&lt;br /&gt;
&lt;br /&gt;
'''2. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_instructor.png|none|Instructor_MarkAsSample_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. Mapping of Reviews and Assignment:''' The example reviews can either be taken from an assignment of the current course or it could be from an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''5. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_viewSample.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''6. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
== DB Design ==&lt;br /&gt;
&lt;br /&gt;
=== Previous work ===&lt;br /&gt;
The previous approach for DB design added 2 new DB tables to store the status and association of sample reviews, namely, '''samplereviewmaps''' and '''similar_assignemnts'''. The samplereviewmaps table simple stored 2 fkey associations to review_map id and to the assignment_id.&lt;br /&gt;
&lt;br /&gt;
=== Our Approach ===&lt;br /&gt;
In our approach, we are extending the existing response_maps table to contain an additional field, 'status', that stores the status of the response(review), as suggested in the above approach. This approach would prune the need to add an extra DB table, which would store redundant information. Additionally, the silimalr_assignemnts table would store the association for a response to all the assignments, the instructor/TA decide to publish for.&lt;br /&gt;
&lt;br /&gt;
[[File:db_design_e2022.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
* Use Cases -&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding a column status in response_maps table. Changes will happen in '''db/schema.rb'''&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views - '''/app/views/response/response.html.erb'''&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in response_maps table in response controller - '''/app/controllers/response_controller.rb''' &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in '''/app/views/popup/team_users_popup.html.haml'''&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review - '''/app/views/student_review/list.html.erb'''&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as sample&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as sample&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
The following acceptance tests using the RSpec/Capybara tests to be written.&lt;br /&gt;
&lt;br /&gt;
    describe &amp;quot;user_review&amp;quot; do&lt;br /&gt;
        context &amp;quot;user marks the review as public&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user marks the review as private&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user views the sample review for assignment&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
   describe &amp;quot;instructor&amp;quot; do&lt;br /&gt;
      context &amp;quot;instructor marks the review as sample&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;instructor selects similar assignments&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133419</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133419"/>
		<updated>2020-04-14T00:34:59Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* UML Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews while they peer review. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some good sample reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. &lt;br /&gt;
Instructors then select a subset of these reviews to be posted as an example reviews. &lt;br /&gt;
&lt;br /&gt;
These example reviews are shown in the peer review page (Other's work link) to the entire class. Also,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the response_maps table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISH || Selected to show as example by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations&lt;br /&gt;
&lt;br /&gt;
'''2. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_instructor.png|none|Instructor_MarkAsSample_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. Mapping of Reviews and Assignment:''' The example reviews can either be taken from an assignment of the current course or it could be from an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''5. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_viewSample.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''6. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
== DB Design ==&lt;br /&gt;
&lt;br /&gt;
=== Previous work ===&lt;br /&gt;
The previous approach for DB design added 2 new DB tables to store the status and association of sample reviews, namely, '''samplereviewmaps''' and '''similar_assignemnts'''. The samplereviewmaps table simple stored 2 fkey associations to review_map id and to the assignment_id.&lt;br /&gt;
&lt;br /&gt;
=== Our Approach ===&lt;br /&gt;
In our approach, we are extending the existing response_maps table to contain an additional field, 'status', that stores the status of the response(review), as suggested in the above approach. This approach would prune the need to add an extra DB table, which would store redundant information. Additionally, the silimalr_assignemnts table would store the association for a response to all the assignments, the instructor/TA decide to publish for.&lt;br /&gt;
&lt;br /&gt;
[[File:db_design_e2022.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
* Use Cases -&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding a column status in response_maps table. Changes will happen in '''db/schema.rb'''&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views - '''/app/views/response/response.html.erb'''&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in response_maps table in response controller - '''/app/controllers/response_controller.rb''' &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in '''/app/views/popup/team_users_popup.html.haml'''&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review - '''/app/views/student_review/list.html.erb'''&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as sample&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as sample&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
The following acceptance tests using the RSpec/Capybara tests to be written.&lt;br /&gt;
&lt;br /&gt;
    describe &amp;quot;user_review&amp;quot; do&lt;br /&gt;
        context &amp;quot;user marks the review as public&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user marks the review as private&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user views the sample review for assignment&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
   describe &amp;quot;instructor&amp;quot; do&lt;br /&gt;
      context &amp;quot;instructor marks the review as sample&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;instructor selects similar assignments&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133418</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133418"/>
		<updated>2020-04-14T00:33:59Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews while they peer review. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some good sample reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. &lt;br /&gt;
Instructors then select a subset of these reviews to be posted as an example reviews. &lt;br /&gt;
&lt;br /&gt;
These example reviews are shown in the peer review page (Other's work link) to the entire class. Also,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the response_maps table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISH || Selected to show as example by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations&lt;br /&gt;
&lt;br /&gt;
'''2. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_instructor.png|none|Instructor_MarkAsSample_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. Mapping of Reviews and Assignment:''' The example reviews can either be taken from an assignment of the current course or it could be from an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''5. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_viewSample.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''6. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
== DB Design ==&lt;br /&gt;
&lt;br /&gt;
=== Previous work ===&lt;br /&gt;
The previous approach for DB design added 2 new DB tables to store the status and association of sample reviews, namely, '''samplereviewmaps''' and '''similar_assignemnts'''. The samplereviewmaps table simple stored 2 fkey associations to review_map id and to the assignment_id.&lt;br /&gt;
&lt;br /&gt;
=== Our Approach ===&lt;br /&gt;
In our approach, we are extending the existing response_maps table to contain an additional field, 'status', that stores the status of the response(review), as suggested in the above approach. This approach would prune the need to add an extra DB table, which would store redundant information. Additionally, the silimalr_assignemnts table would store the association for a response to all the assignments, the instructor/TA decide to publish for.&lt;br /&gt;
&lt;br /&gt;
[[File:db_design_e2022.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML Diagram ==&lt;br /&gt;
* Use Case -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding a column status in response_maps table. Changes will happen in '''db/schema.rb'''&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views - '''/app/views/response/response.html.erb'''&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in response_maps table in response controller - '''/app/controllers/response_controller.rb''' &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in '''/app/views/popup/team_users_popup.html.haml'''&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review - '''/app/views/student_review/list.html.erb'''&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as sample&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as sample&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
The following acceptance tests using the RSpec/Capybara tests to be written.&lt;br /&gt;
&lt;br /&gt;
    describe &amp;quot;user_review&amp;quot; do&lt;br /&gt;
        context &amp;quot;user marks the review as public&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user marks the review as private&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user views the sample review for assignment&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
   describe &amp;quot;instructor&amp;quot; do&lt;br /&gt;
      context &amp;quot;instructor marks the review as sample&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;instructor selects similar assignments&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Feature_viewSample.png&amp;diff=133415</id>
		<title>File:Feature viewSample.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Feature_viewSample.png&amp;diff=133415"/>
		<updated>2020-04-14T00:32:20Z</updated>

		<summary type="html">&lt;p&gt;Akhot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133404</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133404"/>
		<updated>2020-04-14T00:27:26Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* Problem Statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews while they peer review. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some good sample reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. &lt;br /&gt;
Instructors then select a subset of these reviews to be posted as an example reviews. &lt;br /&gt;
&lt;br /&gt;
These example reviews are shown in the peer review page (Other's work link) to the entire class. Also,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the response_maps table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISH || Selected to show as example by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations&lt;br /&gt;
&lt;br /&gt;
'''2. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_instructor.png|none|Instructor_MarkAsSample_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. Mapping of Reviews and Assignment:''' The example reviews can either be taken from an assignment of the current course or it could be from an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''5. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''6. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DB Design ==&lt;br /&gt;
&lt;br /&gt;
=== Previous work ===&lt;br /&gt;
The previous approach for DB design added 2 new DB tables to store the status and association of sample reviews, namely, '''samplereviewmaps''' and '''similar_assignemnts'''. The samplereviewmaps table simple stored 2 fkey associations to review_map id and to the assignment_id.&lt;br /&gt;
&lt;br /&gt;
=== Our Approach ===&lt;br /&gt;
In our approach, we are extending the existing response_maps table to contain an additional field, 'status', that stores the status of the response(review), as suggested in the above approach. This approach would prune the need to add an extra DB table, which would store redundant information. Additionally, the silimalr_assignemnts table would store the association for a response to all the assignments, the instructor/TA decide to publish for.&lt;br /&gt;
&lt;br /&gt;
[[File:db_design_e2022.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML Diagram ==&lt;br /&gt;
* Use Case -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding a column status in response_maps table. Changes will happen in '''db/schema.rb'''&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views - '''/app/views/response/response.html.erb'''&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in response_maps table in response controller - '''/app/controllers/response_controller.rb''' &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in '''/app/views/popup/team_users_popup.html.haml'''&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review - '''/app/views/student_review/list.html.erb'''&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as sample&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as sample&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
The following acceptance tests using the RSpec/Capybara tests to be written.&lt;br /&gt;
&lt;br /&gt;
    describe &amp;quot;user_review&amp;quot; do&lt;br /&gt;
        context &amp;quot;user marks the review as public&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user marks the review as private&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user views the sample review for assignment&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
   describe &amp;quot;instructor&amp;quot; do&lt;br /&gt;
      context &amp;quot;instructor marks the review as sample&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;instructor selects similar assignments&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133398</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133398"/>
		<updated>2020-04-14T00:23:45Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* RSpec Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews while they peer review. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some example reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. Instructors then select a subset of these reviews to be posted as an example reviews. These example reviews are shown in the peer review page (Other's work link) to the entire class. Also,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the response_maps table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISH || Selected to show as example by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations&lt;br /&gt;
&lt;br /&gt;
'''2. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_instructor.png|none|Instructor_MarkAsSample_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. Mapping of Reviews and Assignment:''' The example reviews can either be taken from an assignment of the current course or it could be from an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''5. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''6. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DB Design ==&lt;br /&gt;
&lt;br /&gt;
=== Previous work ===&lt;br /&gt;
The previous approach for DB design added 2 new DB tables to store the status and association of sample reviews, namely, '''samplereviewmaps''' and '''similar_assignemnts'''. The samplereviewmaps table simple stored 2 fkey associations to review_map id and to the assignment_id.&lt;br /&gt;
&lt;br /&gt;
=== Our Approach ===&lt;br /&gt;
In our approach, we are extending the existing response_maps table to contain an additional field, 'status', that stores the status of the response(review), as suggested in the above approach. This approach would prune the need to add an extra DB table, which would store redundant information. Additionally, the silimalr_assignemnts table would store the association for a response to all the assignments, the instructor/TA decide to publish for.&lt;br /&gt;
&lt;br /&gt;
[[File:db_design_e2022.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML Diagram ==&lt;br /&gt;
* Use Case -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding a column status in response_maps table. Changes will happen in '''db/schema.rb'''&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views - '''/app/views/response/response.html.erb'''&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in response_maps table in response controller - '''/app/controllers/response_controller.rb''' &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in '''/app/views/popup/team_users_popup.html.haml'''&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review - '''/app/views/student_review/list.html.erb'''&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as sample&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as sample&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
The following acceptance tests using the RSpec/Capybara tests to be written.&lt;br /&gt;
&lt;br /&gt;
    describe &amp;quot;user_review&amp;quot; do&lt;br /&gt;
        context &amp;quot;user marks the review as public&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user marks the review as private&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;user views the sample review for assignment&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
   describe &amp;quot;instructor&amp;quot; do&lt;br /&gt;
      context &amp;quot;instructor marks the review as sample&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        context &amp;quot;instructor selects similar assignments&amp;quot; do&lt;br /&gt;
        ..       &lt;br /&gt;
        end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133383</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133383"/>
		<updated>2020-04-14T00:10:58Z</updated>

		<summary type="html">&lt;p&gt;Akhot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews while they peer review. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some example reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. Instructors then select a subset of these reviews to be posted as an example reviews. These example reviews are shown in the peer review page (Other's work link) to the entire class. Also,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the response_maps table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISH || Selected to show as example by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations&lt;br /&gt;
&lt;br /&gt;
'''2. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_instructor.png|none|Instructor_MarkAsSample_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. Mapping of Reviews and Assignment:''' The example reviews can either be taken from an assignment of the current course or it could be from an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''5. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''6. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DB Design ==&lt;br /&gt;
&lt;br /&gt;
=== Previous work ===&lt;br /&gt;
The previous approach for DB design added 2 new DB tables to store the status and association of sample reviews, namely, '''samplereviewmaps''' and '''similar_assignemnts'''. The samplereviewmaps table simple stored 2 fkey associations to review_map id and to the assignment_id.&lt;br /&gt;
&lt;br /&gt;
=== Our Approach ===&lt;br /&gt;
In our approach, we are extending the existing response_maps table to contain an additional field, 'status', that stores the status of the response(review), as suggested in the above approach. This approach would prune the need to add an extra DB table, which would store redundant information. Additionally, the silimalr_assignemnts table would store the association for a response to all the assignments, the instructor/TA decide to publish for.&lt;br /&gt;
&lt;br /&gt;
[[File:db_design_e2022.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML Diagram ==&lt;br /&gt;
* Use Case -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding a column status in response_maps table. Changes will happen in '''db/schema.rb'''&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views - '''/app/views/response/response.html.erb'''&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in response_maps table in response controller - '''/app/controllers/response_controller.rb''' &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in '''/app/views/popup/team_users_popup.html.haml'''&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review - '''/app/views/student_review/list.html.erb'''&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as sample&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as sample&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
We are planning to write rspec tests for whatever modifications we make.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Db_design_e2022.png&amp;diff=133379</id>
		<title>File:Db design e2022.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Db_design_e2022.png&amp;diff=133379"/>
		<updated>2020-04-14T00:10:09Z</updated>

		<summary type="html">&lt;p&gt;Akhot: Akhot uploaded a new version of File:Db design e2022.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Db_design_e2022.png&amp;diff=133378</id>
		<title>File:Db design e2022.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Db_design_e2022.png&amp;diff=133378"/>
		<updated>2020-04-14T00:08:28Z</updated>

		<summary type="html">&lt;p&gt;Akhot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133357</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133357"/>
		<updated>2020-04-13T23:38:24Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews while they peer review. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some example reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. Instructors then select a subset of these reviews to be posted as an example reviews. These example reviews are shown in the peer review page (Other's work link) to the entire class. Also,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the responses table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISH || Selected as a sample by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations&lt;br /&gt;
&lt;br /&gt;
'''2. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_instructor.png|none|Instructor_MarkAsSample_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. Mapping of Reviews and Assignment:''' Note that although only participants in that assignment of the current course can see those reviews, the assignment that the reviews are taken from doesn't need to be an assignment for the current course. It could be an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''5. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''6. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
* Use Case -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding a column status in responses table. Changes will happen in db/schema.rb&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views. (/app/views/response/response.html.erb)&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in responses table in response controller. (/app/controllers/response_controller.rb) &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in /app/views/popup/team_users_popup.html.haml&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review. (/app/views/student_review/list.html.erb)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as sample&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as sample&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
We are planning to write rspec tests for whatever modifications we make.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Feature_instructor.png&amp;diff=133354</id>
		<title>File:Feature instructor.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Feature_instructor.png&amp;diff=133354"/>
		<updated>2020-04-13T23:37:10Z</updated>

		<summary type="html">&lt;p&gt;Akhot: Akhot uploaded a new version of File:Feature instructor.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133352</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133352"/>
		<updated>2020-04-13T23:33:05Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some example reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. Instructors then select a subset of these reviews to be posted as an example reviews. These example reviews are shown in the peer review page (Other's work link) to the entire class. Also,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the responses table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISH || Selected as a sample by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations&lt;br /&gt;
&lt;br /&gt;
'''2. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_instructor.png|none|Instructor_MarkAsSample_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. Mapping of Reviews and Assignment:''' Note that although only participants in that assignment of the current course can see those reviews, the assignment that the reviews are taken from doesn't need to be an assignment for the current course. It could be an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''5. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''6. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
* Use Case -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding a column status in responses table. Changes will happen in db/schema.rb&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views. (/app/views/response/response.html.erb)&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in responses table in response controller. (/app/controllers/response_controller.rb) &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in /app/views/popup/team_users_popup.html.haml&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review. (/app/views/student_review/list.html.erb)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as sample&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as sample&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
We are planning to write rspec tests for whatever modifications we make.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133349</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133349"/>
		<updated>2020-04-13T23:32:08Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some example reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. Instructors then select a subset of these reviews to be posted as an example reviews. These example reviews are shown in the peer review page (Other's work link) to the entire class. Also,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the responses table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISH || Selected as a sample by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations&lt;br /&gt;
&lt;br /&gt;
'''2. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|User_MarkAsPublic_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|caption]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_instructor.png|none|Instructor_MarkAsSample_sequence]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. Mapping of Reviews and Assignment:''' Note that although only participants in that assignment of the current course can see those reviews, the assignment that the reviews are taken from doesn't need to be an assignment for the current course. It could be an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''5. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''6. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
* Use Case -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding a column status in responses table. Changes will happen in db/schema.rb&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views. (/app/views/response/response.html.erb)&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in responses table in response controller. (/app/controllers/response_controller.rb) &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in /app/views/popup/team_users_popup.html.haml&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review. (/app/views/student_review/list.html.erb)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as sample&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as sample&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
We are planning to write rspec tests for whatever modifications we make.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Feature_instructor.png&amp;diff=133346</id>
		<title>File:Feature instructor.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Feature_instructor.png&amp;diff=133346"/>
		<updated>2020-04-13T23:30:21Z</updated>

		<summary type="html">&lt;p&gt;Akhot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133334</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=133334"/>
		<updated>2020-04-13T23:22:21Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way. &lt;br /&gt;
&lt;br /&gt;
Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are given some example reviews. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to add a feature to show some example reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. Instructors then select a subset of these reviews to be posted as an example reviews. These example reviews are shown in the peer review page (Other's work link) to the entire class. Also,&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.&lt;br /&gt;
&lt;br /&gt;
== Previous work ==&lt;br /&gt;
&lt;br /&gt;
This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are&lt;br /&gt;
&lt;br /&gt;
1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.&lt;br /&gt;
&lt;br /&gt;
2. Project included many irrelevant files and included classes the team didn't understand.&lt;br /&gt;
&lt;br /&gt;
3. Testing was not thorough.&lt;br /&gt;
&lt;br /&gt;
We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Approach ===&lt;br /&gt;
&lt;br /&gt;
To identify the reviews to be shown as an example, we append a column to the responses table representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISH || Selected as a sample by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features === &lt;br /&gt;
&lt;br /&gt;
In the order of flow,&lt;br /&gt;
&lt;br /&gt;
'''1. Schema:''' Update the schema with the following column changes via migrations&lt;br /&gt;
&lt;br /&gt;
'''2. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Sequence Diagram:'''&lt;br /&gt;
[[File:feature_user.png|none|caption]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''4. Mapping of Reviews and Assignment:''' Note that although only participants in that assignment of the current course can see those reviews, the assignment that the reviews are taken from doesn't need to be an assignment for the current course. It could be an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''5. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''6. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
* Use Case -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding a column status in responses table. Changes will happen in db/schema.rb&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views. (/app/views/response/response.html.erb)&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in responses table in response controller. (/app/controllers/response_controller.rb) &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in /app/views/popup/team_users_popup.html.haml&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review. (/app/views/student_review/list.html.erb)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
'''As a Power User (TA/Instructor/Admin/Super Admin)'''&lt;br /&gt;
# Log in&lt;br /&gt;
# Click on Manage-&amp;gt;Assignments&lt;br /&gt;
# Displays a list of Assignments&lt;br /&gt;
# Click View Report/Review for a particular assignment.&lt;br /&gt;
# Displays a list of reviews submitted by students.&lt;br /&gt;
# Click on any review in &amp;quot;team reviewed&amp;quot; column for a particular student.&lt;br /&gt;
# Displays the summary of reviews submitted by that student, with a &amp;quot;Make as sample&amp;quot; button on the right of every review.&lt;br /&gt;
# Click on &amp;quot;Make as sample&amp;quot; for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.&lt;br /&gt;
# From this list select all assignments for which the review has to be shown as a sample.&lt;br /&gt;
# Click on 'Submit' after selection (this closes the popup).&lt;br /&gt;
# Navigate to view reviews of that particular assignment and click on &amp;quot;Sample Reviews&amp;quot;.&lt;br /&gt;
# A new page is opened that lists out all the sample reviews of the assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 1)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Below the heading &amp;quot;Reviews for ...&amp;quot;, click on the &amp;quot;Show example reviews&amp;quot; link.&lt;br /&gt;
# This opens a page where the student can view all example reviews for that assignment.&lt;br /&gt;
&lt;br /&gt;
'''As a Student (Scenario 2)'''&lt;br /&gt;
# Log in.&lt;br /&gt;
# Click on Assignments&lt;br /&gt;
# List of assignments is displayed.&lt;br /&gt;
# Click on any assignment for which the review has to be submitted.&lt;br /&gt;
# Assignment task page is displayed.&lt;br /&gt;
# Click on &amp;quot;Other's work&amp;quot; to open the reviews summary page (at /student_review).&lt;br /&gt;
# Chose to review any of the teams' assignments that are displayed.&lt;br /&gt;
# Select a team for review and fill in the review.&lt;br /&gt;
# Before submitting the review, select the checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot;.&lt;br /&gt;
# After clicking on the submit button, the review submitted has been made public.&lt;br /&gt;
&lt;br /&gt;
=== RSpec Testing ===&lt;br /&gt;
&lt;br /&gt;
We are planning to write rspec tests for whatever modifications we make.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Feature_user.png&amp;diff=133327</id>
		<title>File:Feature user.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Feature_user.png&amp;diff=133327"/>
		<updated>2020-04-13T23:20:19Z</updated>

		<summary type="html">&lt;p&gt;Akhot: Akhot uploaded a new version of File:Feature user.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Feature_user.png&amp;diff=133314</id>
		<title>File:Feature user.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Feature_user.png&amp;diff=133314"/>
		<updated>2020-04-13T23:06:50Z</updated>

		<summary type="html">&lt;p&gt;Akhot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=132995</id>
		<title>CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020/E2022_Allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example&amp;diff=132995"/>
		<updated>2020-04-08T19:12:35Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza] is an open source web application project based on Ruby on rails framework. Expertiza allows instructors to add assignments and students to upload their submissions. Students can form teams through expertiza for group projects. Students can also peer review the assignments after the submission deadline.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
It is about adding a new feature in Expertiza which enable students to learn from seeing examples of good reviews, something like the one from Eli Review. However, the desired feature is expected to differ in the following ways:&lt;br /&gt;
&lt;br /&gt;
1. Students should be able to see an entire review, both text and ratings, not just a single comment.&lt;br /&gt;
&lt;br /&gt;
2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names. Note that this functionality is the same as in the current views that show reviews. So we can just use response/view&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Approach ===&lt;br /&gt;
&lt;br /&gt;
1. We append a column to the response representing their respective status. The following table explains the significance of each value:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Explanation of the value &lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE || Default, private&lt;br /&gt;
|-&lt;br /&gt;
| PUBLIC || Public (selected by the student but has not been selected as a sample review by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
| PUBLISH || Selected as a sample by the instructors.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features === &lt;br /&gt;
&lt;br /&gt;
'''1. Student's Consent:'''  &lt;br /&gt;
In each review assignment, there will be a checkbox that says &amp;quot;I agree to share this review anonymously as an example to the entire class&amp;quot; then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in '''response.html.erb''' and set a &amp;quot;status&amp;quot; field to “public”of the Response object via a controller method, preferably &amp;quot;create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''2. Schema:''' Update the schema with the above column changes via migrations&lt;br /&gt;
&lt;br /&gt;
'''3. Instructor's Selection:''' The instructor can select from among the &amp;quot;public&amp;quot; reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “selected”. &lt;br /&gt;
Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.&lt;br /&gt;
&lt;br /&gt;
'''4. List of Sample Reviews: ''' A participant can see these &amp;quot;exemplary&amp;quot; reviews by going to &amp;quot;Others' work&amp;quot; for the assignment in question, and clicking on one or more links that say, e.g., &amp;quot;Sample review&amp;quot;. And it should be shown just below the title “Review for ...”. It could be implemented on the '''student_reviews/list.html.erb'''.&lt;br /&gt;
&lt;br /&gt;
'''5. Mapping of Reviews and Assignment:'''' Note that although only participants in that assignment of the current course can see those reviews, the assignment that the reviews are taken from doesn't need to be an assignment for the current course. It could be an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display),  then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples”&lt;br /&gt;
Since we already have a '''response_maps''' table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.&lt;br /&gt;
&lt;br /&gt;
'''6. MVC Setup:''' We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
* Use Case -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:UseCase.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Power Users:''' Instructors, TAs, Admins and Super Admins&lt;br /&gt;
&lt;br /&gt;
=== Proposed code changes ===&lt;br /&gt;
&lt;br /&gt;
1. Adding two columns 'status' and 'selected' in responses table. Changes will happen in db/schema.rb&lt;br /&gt;
&lt;br /&gt;
2. Adding a checkbox to select whether reviews could be shown as an example in the response views. (/app/views/response/response.html.erb)&lt;br /&gt;
&lt;br /&gt;
3. On selecting the checkbox, update the status field in responses table in response controller. (/app/controllers/response_controller.rb) &lt;br /&gt;
&lt;br /&gt;
4. To allow instructor to select among the public reviews make changes in /app/views/popup/team_users_popup.html.haml&lt;br /&gt;
&lt;br /&gt;
5. To enable students to see the example reviews, make changes in the views of student_review. (/app/views/student_review/list.html.erb)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
Our test plan includes testing through rspec tests and through GUI.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
Repository link: https://github.com/SujalAhrodia/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
Mentor: Dr. Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Ayush Khot (akhot@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Akanksha Bhattacharya (anbhatta@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu) &amp;lt;br&amp;gt; &lt;br /&gt;
Sujal (ssujal@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020_-_Project_E2011._Refactor_assignment_creation_spec.rb&amp;diff=132011</id>
		<title>CSC/ECE 517 Spring 2020 - Project E2011. Refactor assignment creation spec.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020_-_Project_E2011._Refactor_assignment_creation_spec.rb&amp;diff=132011"/>
		<updated>2020-03-24T00:44:07Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* Coverage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== E2011. Refactoring assignment_creation_spec.rb ==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problem Statement ===&lt;br /&gt;
The two major tasks for this project were the following:&lt;br /&gt;
&lt;br /&gt;
* Refactor existing test cases to follow good coding practices. This includes variable names, following the Don't Repeat Yourself (DRY) principle, and more.&lt;br /&gt;
* Check coverage of assignment_creation_spec.rb and improve upon it through additional testing.&lt;br /&gt;
&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
The assignment_creation_spec file contains test cases that ensure proper functionality of an instructor's workflow in regards to the creation of assignments. An instructor, when logged into Expertiza, should be able to create new assignments where each assignment has it's own assigned parameters, rubrics, review strategies and due dates. At the start of this project, all logic and handling of testing this instructor workflow was handled within a single file. This single-file implementation leads to problems with maintenance, and such problems within this implementation can be abstracted into one of these forms:&lt;br /&gt;
&lt;br /&gt;
*'''File is too long''': This file exceeds 250 lines of code, and should not.&lt;br /&gt;
*'''Block has too many lines''': Within the file, the code used to handle a certain operation is implemented with too many subroutines within one block.&lt;br /&gt;
*'''Similar/Exact block(s) of code found''': Across the file, there were duplicate/near-duplicate blocks of code being used.&lt;br /&gt;
*'''General syntax issues''': This could include unnecessary whitespace, use of deprecated classes or things of the like.&lt;br /&gt;
&lt;br /&gt;
=== Refactoring Process ===&lt;br /&gt;
The first refactor that our team did was to extract methods from what otherwise would be duplicate code and large block sizes. The previous team had started this process, but we were able to follow it to completion. We also then moved all of these extracted methods into the helper class assignment_creation_helper.rb. Here is an example of extracted methods that the previous team had created: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        def get_questionnaire(finder_var = nil)&lt;br /&gt;
		if finder_var.nil?&lt;br /&gt;
			AssignmentQuestionnaire.find_by(assignment_id: @assignment.id)&lt;br /&gt;
		else&lt;br /&gt;
			AssignmentQuestionnaire.where(assignment_id: @assignment.id).where(questionnaire_id: get_selected_id(finder_var))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	def get_selected_id(finder_var)&lt;br /&gt;
		if finder_var == &amp;quot;ReviewQuestionnaire2&amp;quot;&lt;br /&gt;
			ReviewQuestionnaire.find_by(name: finder_var).id&lt;br /&gt;
		elsif finder_var == &amp;quot;AuthorFeedbackQuestionnaire2&amp;quot;&lt;br /&gt;
			AuthorFeedbackQuestionnaire.find_by(name: finder_var).id&lt;br /&gt;
		elsif finder_var == &amp;quot;TeammateReviewQuestionnaire2&amp;quot;&lt;br /&gt;
			TeammateReviewQuestionnaire.find_by(name: finder_var).id&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	def fill_assignment_form&lt;br /&gt;
		fill_in 'assignment_form_assignment_name', with: 'edit assignment for test'&lt;br /&gt;
		select('Course 2', from: 'assignment_form_assignment_course_id')&lt;br /&gt;
		fill_in 'assignment_form_assignment_directory_path', with: 'testDirectory1'&lt;br /&gt;
		fill_in 'assignment_form_assignment_spec_location', with: 'testLocation1'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	def assignment_creation_setup(privacy,name)&lt;br /&gt;
		login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
		new_assignment_url = &amp;quot;/assignments/new?private=#{privacy}&amp;quot;&lt;br /&gt;
		visit new_assignment_url&lt;br /&gt;
&lt;br /&gt;
		fill_in 'assignment_form_assignment_name', with: name&lt;br /&gt;
		select('Course 2', from: 'assignment_form_assignment_course_id')&lt;br /&gt;
		fill_in 'assignment_form_assignment_directory_path', with: 'testDirectory'&lt;br /&gt;
	end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following is an example of how we were able to reduce block size and duplicate code with further extraction of methods into assignment_creation_helper.rb:&lt;br /&gt;
&lt;br /&gt;
[[File:E2011RefactoringDiff.png]]&lt;br /&gt;
&lt;br /&gt;
Another major refactor we did was to break up the one large 'describe' block in assignment_creation_spec, which contained all of the tests for that controller. Since assignment creation has many different pages, we created a separate file for testing each page or responsibility.&lt;br /&gt;
&lt;br /&gt;
Beyond the creation of the helper file, assignment_creation_spec.rb was broken up into the following files:&lt;br /&gt;
*assignment_creation_dates_spec.rb&lt;br /&gt;
*assignment_creation_deadlines_spec.rb&lt;br /&gt;
*assignment_creation_general_tab_spec.rb&lt;br /&gt;
*assignment_creation_page_spec.rb&lt;br /&gt;
*assignment_creation_participants_spec.rb&lt;br /&gt;
*assignment_creation_review_strategy_spec.rb&lt;br /&gt;
*assignment_creation_rubrics_spec.rb&lt;br /&gt;
*assignment_creation_topics_spec.rb&lt;br /&gt;
&lt;br /&gt;
In the relocation of assignment_creation_spec's functionality and creation of new constituent files, additional refactoring was done to ensure that trailing whitespace was deleted, files ended with a final newline character, and other unnecessary characters were removed. All of this was to remove any other problems that code climate detected.&lt;br /&gt;
&lt;br /&gt;
=== Additional Code Climate Issues ===&lt;br /&gt;
&lt;br /&gt;
There were a few things that code climate detected that we decided did not need to be refactored. The first was a complaint about blocks being too large, even after we divided the one large 'describe' statement into many smaller ones. This is because, in rspec, each test has its own 'it' block, but all of those must be grouped in a larger 'describe' block. I suggest that this be discussed with the teams who may refactor the other test files or have code climate to be configured to instead look just at the 'it' block size.&lt;br /&gt;
&lt;br /&gt;
This is an diagram on how otherwise good ruby code may be flagged by code climate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
'describe' block&lt;br /&gt;
  'it' block&lt;br /&gt;
    (23 lines of code) - Code climate: √ &lt;br /&gt;
  'it' block&lt;br /&gt;
    (15 lines of code) - Code climate: √&lt;br /&gt;
  'it' block&lt;br /&gt;
    (11 lines of code) - Code climate: √&lt;br /&gt;
end  - Code climate: X (23+15+11 = 49 lines)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, code climate was suggesting to change DateTime to Date or Time. As assignments are due not only on a certain day but at a specific time and that this would require a large refactoring of the entire Expertiza system for tracking submission times, we decided it was beyond the scope of this refactor.&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
As part of the refactoring, we fixed a few broken tests in the original assignments_controller_spec.rb and created additional ones to increase coverage.&lt;br /&gt;
&lt;br /&gt;
=== Additional Rspec Tests Created ===&lt;br /&gt;
Looking at the methods that were covered in assignments_controller.rb we decided to create the following additional test cases for assignment creation.&lt;br /&gt;
&lt;br /&gt;
These are additions to the existing assignments_controller_spec.rb.&lt;br /&gt;
&lt;br /&gt;
[[File:E2011NewTests.png]]&lt;br /&gt;
&lt;br /&gt;
==RSpec ScreenCast==&lt;br /&gt;
Links to RSpec screencasts for new test cases.&lt;br /&gt;
#  [https://drive.google.com/open?id=1AIi3MtD_TtUN5F1k3kzgqIgi8ficz_Ar Assignment Creation General Tab]&lt;br /&gt;
#  [https://drive.google.com/open?id=1VnH_4NSLBX1x7xeYnH1Zsy6XG_nWD7Vk Assignment Creation Topic]&lt;br /&gt;
#  [https://drive.google.com/open?id=1jUQSgXjjI5jQBTWAkD8YGhYnYIIXPtnq Assignment Creation Page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Coverage ===&lt;br /&gt;
92.86% for assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
Overall coverage increased (+28.04%) to 52.334%&lt;br /&gt;
&lt;br /&gt;
== Project Mentors ==&lt;br /&gt;
#Dr. Edward Gehringer (efg@ncsu.edu)&lt;br /&gt;
#Srujana Rachakonda (srachak@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
#Colin Foley (cmfoley2@ncsu.edu)&lt;br /&gt;
#Ayush Khot (akhot@ncsu.edu)&lt;br /&gt;
#Christian Morris (cgmorris@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020_-_Project_E2011._Refactor_assignment_creation_spec.rb&amp;diff=132006</id>
		<title>CSC/ECE 517 Spring 2020 - Project E2011. Refactor assignment creation spec.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2020_-_Project_E2011._Refactor_assignment_creation_spec.rb&amp;diff=132006"/>
		<updated>2020-03-24T00:39:27Z</updated>

		<summary type="html">&lt;p&gt;Akhot: /* E2011. Refactoring assignment_creation_spec.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== E2011. Refactoring assignment_creation_spec.rb ==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problem Statement ===&lt;br /&gt;
The two major tasks for this project were the following:&lt;br /&gt;
&lt;br /&gt;
* Refactor existing test cases to follow good coding practices. This includes variable names, following the Don't Repeat Yourself (DRY) principle, and more.&lt;br /&gt;
* Check coverage of assignment_creation_spec.rb and improve upon it through additional testing.&lt;br /&gt;
&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
The assignment_creation_spec file contains test cases that ensure proper functionality of an instructor's workflow in regards to the creation of assignments. An instructor, when logged into Expertiza, should be able to create new assignments where each assignment has it's own assigned parameters, rubrics, review strategies and due dates. At the start of this project, all logic and handling of testing this instructor workflow was handled within a single file. This single-file implementation leads to problems with maintenance, and such problems within this implementation can be abstracted into one of these forms:&lt;br /&gt;
&lt;br /&gt;
*'''File is too long''': This file exceeds 250 lines of code, and should not.&lt;br /&gt;
*'''Block has too many lines''': Within the file, the code used to handle a certain operation is implemented with too many subroutines within one block.&lt;br /&gt;
*'''Similar/Exact block(s) of code found''': Across the file, there were duplicate/near-duplicate blocks of code being used.&lt;br /&gt;
*'''General syntax issues''': This could include unnecessary whitespace, use of deprecated classes or things of the like.&lt;br /&gt;
&lt;br /&gt;
=== Refactoring Process ===&lt;br /&gt;
The first refactor that our team did was to extract methods from what otherwise would be duplicate code and large block sizes. The previous team had started this process, but we were able to follow it to completion. We also then moved all of these extracted methods into the helper class assignment_creation_helper.rb. Here is an example of extracted methods that the previous team had created: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        def get_questionnaire(finder_var = nil)&lt;br /&gt;
		if finder_var.nil?&lt;br /&gt;
			AssignmentQuestionnaire.find_by(assignment_id: @assignment.id)&lt;br /&gt;
		else&lt;br /&gt;
			AssignmentQuestionnaire.where(assignment_id: @assignment.id).where(questionnaire_id: get_selected_id(finder_var))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	def get_selected_id(finder_var)&lt;br /&gt;
		if finder_var == &amp;quot;ReviewQuestionnaire2&amp;quot;&lt;br /&gt;
			ReviewQuestionnaire.find_by(name: finder_var).id&lt;br /&gt;
		elsif finder_var == &amp;quot;AuthorFeedbackQuestionnaire2&amp;quot;&lt;br /&gt;
			AuthorFeedbackQuestionnaire.find_by(name: finder_var).id&lt;br /&gt;
		elsif finder_var == &amp;quot;TeammateReviewQuestionnaire2&amp;quot;&lt;br /&gt;
			TeammateReviewQuestionnaire.find_by(name: finder_var).id&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	def fill_assignment_form&lt;br /&gt;
		fill_in 'assignment_form_assignment_name', with: 'edit assignment for test'&lt;br /&gt;
		select('Course 2', from: 'assignment_form_assignment_course_id')&lt;br /&gt;
		fill_in 'assignment_form_assignment_directory_path', with: 'testDirectory1'&lt;br /&gt;
		fill_in 'assignment_form_assignment_spec_location', with: 'testLocation1'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	def assignment_creation_setup(privacy,name)&lt;br /&gt;
		login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
		new_assignment_url = &amp;quot;/assignments/new?private=#{privacy}&amp;quot;&lt;br /&gt;
		visit new_assignment_url&lt;br /&gt;
&lt;br /&gt;
		fill_in 'assignment_form_assignment_name', with: name&lt;br /&gt;
		select('Course 2', from: 'assignment_form_assignment_course_id')&lt;br /&gt;
		fill_in 'assignment_form_assignment_directory_path', with: 'testDirectory'&lt;br /&gt;
	end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following is an example of how we were able to reduce block size and duplicate code with further extraction of methods into assignment_creation_helper.rb:&lt;br /&gt;
&lt;br /&gt;
[[File:E2011RefactoringDiff.png]]&lt;br /&gt;
&lt;br /&gt;
Another major refactor we did was to break up the one large 'describe' block in assignment_creation_spec, which contained all of the tests for that controller. Since assignment creation has many different pages, we created a separate file for testing each page or responsibility.&lt;br /&gt;
&lt;br /&gt;
Beyond the creation of the helper file, assignment_creation_spec.rb was broken up into the following files:&lt;br /&gt;
*assignment_creation_dates_spec.rb&lt;br /&gt;
*assignment_creation_deadlines_spec.rb&lt;br /&gt;
*assignment_creation_general_tab_spec.rb&lt;br /&gt;
*assignment_creation_page_spec.rb&lt;br /&gt;
*assignment_creation_participants_spec.rb&lt;br /&gt;
*assignment_creation_review_strategy_spec.rb&lt;br /&gt;
*assignment_creation_rubrics_spec.rb&lt;br /&gt;
*assignment_creation_topics_spec.rb&lt;br /&gt;
&lt;br /&gt;
In the relocation of assignment_creation_spec's functionality and creation of new constituent files, additional refactoring was done to ensure that trailing whitespace was deleted, files ended with a final newline character, and other unnecessary characters were removed. All of this was to remove any other problems that code climate detected.&lt;br /&gt;
&lt;br /&gt;
=== Additional Code Climate Issues ===&lt;br /&gt;
&lt;br /&gt;
There were a few things that code climate detected that we decided did not need to be refactored. The first was a complaint about blocks being too large, even after we divided the one large 'describe' statement into many smaller ones. This is because, in rspec, each test has its own 'it' block, but all of those must be grouped in a larger 'describe' block. I suggest that this be discussed with the teams who may refactor the other test files or have code climate to be configured to instead look just at the 'it' block size.&lt;br /&gt;
&lt;br /&gt;
This is an diagram on how otherwise good ruby code may be flagged by code climate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
'describe' block&lt;br /&gt;
  'it' block&lt;br /&gt;
    (23 lines of code) - Code climate: √ &lt;br /&gt;
  'it' block&lt;br /&gt;
    (15 lines of code) - Code climate: √&lt;br /&gt;
  'it' block&lt;br /&gt;
    (11 lines of code) - Code climate: √&lt;br /&gt;
end  - Code climate: X (23+15+11 = 49 lines)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, code climate was suggesting to change DateTime to Date or Time. As assignments are due not only on a certain day but at a specific time and that this would require a large refactoring of the entire Expertiza system for tracking submission times, we decided it was beyond the scope of this refactor.&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
As part of the refactoring, we fixed a few broken tests in the original assignments_controller_spec.rb and created additional ones to increase coverage.&lt;br /&gt;
&lt;br /&gt;
=== Additional Rspec Tests Created ===&lt;br /&gt;
Looking at the methods that were covered in assignments_controller.rb we decided to create the following additional test cases for assignment creation.&lt;br /&gt;
&lt;br /&gt;
These are additions to the existing assignments_controller_spec.rb.&lt;br /&gt;
&lt;br /&gt;
[[File:E2011NewTests.png]]&lt;br /&gt;
&lt;br /&gt;
==RSpec ScreenCast==&lt;br /&gt;
Links to RSpec screencasts for new test cases.&lt;br /&gt;
#  [https://drive.google.com/open?id=1AIi3MtD_TtUN5F1k3kzgqIgi8ficz_Ar Assignment Creation General Tab]&lt;br /&gt;
#  [https://drive.google.com/open?id=1VnH_4NSLBX1x7xeYnH1Zsy6XG_nWD7Vk Assignment Creation Topic]&lt;br /&gt;
#  [https://drive.google.com/open?id=1jUQSgXjjI5jQBTWAkD8YGhYnYIIXPtnq Assignment Creation Page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Coverage ===&lt;br /&gt;
91.6% for assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
+17.7% increase overall to 42.017%&lt;br /&gt;
&lt;br /&gt;
== Project Mentors ==&lt;br /&gt;
#Dr. Edward Gehringer (efg@ncsu.edu)&lt;br /&gt;
#Srujana Rachakonda (srachak@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
#Colin Foley (cmfoley2@ncsu.edu)&lt;br /&gt;
#Ayush Khot (akhot@ncsu.edu)&lt;br /&gt;
#Christian Morris (cgmorris@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Akhot</name></author>
	</entry>
</feed>