<?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=Ajain37</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=Ajain37"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Ajain37"/>
	<updated>2026-08-07T23:38:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131363</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131363"/>
		<updated>2019-12-18T00:16:36Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Rspec */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Only the checkboxes for email preferences on user profile will be moved closer to the text to be more visible.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The checkboxes will be clearly visible for email preferences. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
There are no performance overhead created while meeting the requirements.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
We have modified the file app/views/users/_prefs.html.erb to move the check boxes to the left of the text. &lt;br /&gt;
&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and weighted score in green. &lt;br /&gt;
&lt;br /&gt;
Modified Files&lt;br /&gt;
&lt;br /&gt;
app/models/assignment_participant.rb&amp;lt;br&amp;gt;&lt;br /&gt;
app/views/grades/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
We have added a new method weighted_scores_exist which will determine if there's any round which has non-zero weight assigned to it, if yes then the flag is_weighted will be set to true or false and based on the boolean value the css class to change the color of the score will be toggled. &lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
   def weighted_scores_exist(scores)&lt;br /&gt;
     #This method checks if the round has a weight assigned to it#&lt;br /&gt;
     #A more appropriate place for this method is the assignment_team class and needs to be moved in the future#&lt;br /&gt;
     scores[:is_weighted] = true&lt;br /&gt;
     scores.each do |score|&lt;br /&gt;
       if score[0][&amp;quot;review&amp;quot;]&lt;br /&gt;
         is_weighted = score[1][:is_weighted]&lt;br /&gt;
         is_completed = score[1][:assessments].any?&lt;br /&gt;
         if is_completed and !is_weighted&lt;br /&gt;
           scores[:is_weighted] = false&lt;br /&gt;
         end&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     scores&lt;br /&gt;
   end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases has been added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases has been added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray color: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores with green color: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The test for &amp;quot;submission after deadline&amp;quot; and &amp;quot;review after deadline&amp;quot; are added as they were not present. A new spec file under spec/features by name post_deadline_review_submission_spec.rb has been created to accommodate the two cases.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131362</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131362"/>
		<updated>2019-12-18T00:15:28Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Rspec */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Only the checkboxes for email preferences on user profile will be moved closer to the text to be more visible.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The checkboxes will be clearly visible for email preferences. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
There are no performance overhead created while meeting the requirements.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
We have modified the file app/views/users/_prefs.html.erb to move the check boxes to the left of the text. &lt;br /&gt;
&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and weighted score in green. &lt;br /&gt;
&lt;br /&gt;
Modified Files&lt;br /&gt;
&lt;br /&gt;
app/models/assignment_participant.rb&amp;lt;br&amp;gt;&lt;br /&gt;
app/views/grades/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
We have added a new method weighted_scores_exist which will determine if there's any round which has non-zero weight assigned to it, if yes then the flag is_weighted will be set to true or false and based on the boolean value the css class to change the color of the score will be toggled. &lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
   def weighted_scores_exist(scores)&lt;br /&gt;
     #This method checks if the round has a weight assigned to it#&lt;br /&gt;
     #A more appropriate place for this method is the assignment_team class and needs to be moved in the future#&lt;br /&gt;
     scores[:is_weighted] = true&lt;br /&gt;
     scores.each do |score|&lt;br /&gt;
       if score[0][&amp;quot;review&amp;quot;]&lt;br /&gt;
         is_weighted = score[1][:is_weighted]&lt;br /&gt;
         is_completed = score[1][:assessments].any?&lt;br /&gt;
         if is_completed and !is_weighted&lt;br /&gt;
           scores[:is_weighted] = false&lt;br /&gt;
         end&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     scores&lt;br /&gt;
   end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases has been added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases has been added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray color: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores with green color: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test for &amp;quot;submission after deadline&amp;quot; and &amp;quot;review after deadline&amp;quot; are added as they were not present. A new spec file under spec/features by name post_deadline_review_submission_spec.rb has been created to accommodate the two cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131361</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131361"/>
		<updated>2019-12-18T00:15:20Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Review Update */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Only the checkboxes for email preferences on user profile will be moved closer to the text to be more visible.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The checkboxes will be clearly visible for email preferences. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
There are no performance overhead created while meeting the requirements.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
We have modified the file app/views/users/_prefs.html.erb to move the check boxes to the left of the text. &lt;br /&gt;
&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and weighted score in green. &lt;br /&gt;
&lt;br /&gt;
Modified Files&lt;br /&gt;
&lt;br /&gt;
app/models/assignment_participant.rb&amp;lt;br&amp;gt;&lt;br /&gt;
app/views/grades/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
We have added a new method weighted_scores_exist which will determine if there's any round which has non-zero weight assigned to it, if yes then the flag is_weighted will be set to true or false and based on the boolean value the css class to change the color of the score will be toggled. &lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
   def weighted_scores_exist(scores)&lt;br /&gt;
     #This method checks if the round has a weight assigned to it#&lt;br /&gt;
     #A more appropriate place for this method is the assignment_team class and needs to be moved in the future#&lt;br /&gt;
     scores[:is_weighted] = true&lt;br /&gt;
     scores.each do |score|&lt;br /&gt;
       if score[0][&amp;quot;review&amp;quot;]&lt;br /&gt;
         is_weighted = score[1][:is_weighted]&lt;br /&gt;
         is_completed = score[1][:assessments].any?&lt;br /&gt;
         if is_completed and !is_weighted&lt;br /&gt;
           scores[:is_weighted] = false&lt;br /&gt;
         end&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     scores&lt;br /&gt;
   end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases has been added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases has been added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray color: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores with green color: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131349</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131349"/>
		<updated>2019-12-17T15:52:58Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Only the checkboxes for email preferences on user profile will be moved closer to the text to be more visible.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The checkboxes will be clearly visible for email preferences. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
There are no performance overhead created while meeting the requirements.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
We have modified the file app/views/users/_prefs.html.erb to move the check boxes to the left of the text. &lt;br /&gt;
&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and weighted score in green. &lt;br /&gt;
&lt;br /&gt;
Modified Files&lt;br /&gt;
&lt;br /&gt;
app/models/assignment_participant.rb&amp;lt;br&amp;gt;&lt;br /&gt;
app/views/grades/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
We have added a new method weighted_scores_exist which will determine if there's any round which has non-zero weight assigned to it, if yes then the flag is_weighted will be set to true or false and based on the boolean value the css class to change the color of the score will be toggled. &lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
   def weighted_scores_exist(scores)&lt;br /&gt;
     #This method checks if the round has a weight assigned to it#&lt;br /&gt;
     #A more appropriate place for this method is the assignment_team class and needs to be moved in the future#&lt;br /&gt;
     scores[:is_weighted] = true&lt;br /&gt;
     scores.each do |score|&lt;br /&gt;
       if score[0][&amp;quot;review&amp;quot;]&lt;br /&gt;
         is_weighted = score[1][:is_weighted]&lt;br /&gt;
         is_completed = score[1][:assessments].any?&lt;br /&gt;
         if is_completed and !is_weighted&lt;br /&gt;
           scores[:is_weighted] = false&lt;br /&gt;
         end&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     scores&lt;br /&gt;
   end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test for &amp;quot;submission after deadline&amp;quot; and &amp;quot;review after deadline&amp;quot; are added as they were not present. A new spec file under spec/features by name post_deadline_review_submission_spec.rb has been created to accommodate the two cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases has been added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases has been added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray color: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores with green color: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131348</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131348"/>
		<updated>2019-12-17T15:50:32Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Rspec */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Only the checkboxes for email preferences on user profile will be moved closer to the text to be more visible.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The checkboxes will be clearly visible for email preferences. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
There are no performance overhead created while meeting the requirements.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and weighted score in green. &lt;br /&gt;
&lt;br /&gt;
Modified Files&lt;br /&gt;
&lt;br /&gt;
app/models/assignment_participant.rb&amp;lt;br&amp;gt;&lt;br /&gt;
app/views/grades/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
We have added a new method weighted_scores_exist which will determine if there's any round which has non-zero weight assigned to it, if yes then the flag is_weighted will be set to true or false and based on the boolean value the css class to change the color of the score will be toggled. &lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
   def weighted_scores_exist(scores)&lt;br /&gt;
     #This method checks if the round has a weight assigned to it#&lt;br /&gt;
     #A more appropriate place for this method is the assignment_team class and needs to be moved in the future#&lt;br /&gt;
     scores[:is_weighted] = true&lt;br /&gt;
     scores.each do |score|&lt;br /&gt;
       if score[0][&amp;quot;review&amp;quot;]&lt;br /&gt;
         is_weighted = score[1][:is_weighted]&lt;br /&gt;
         is_completed = score[1][:assessments].any?&lt;br /&gt;
         if is_completed and !is_weighted&lt;br /&gt;
           scores[:is_weighted] = false&lt;br /&gt;
         end&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     scores&lt;br /&gt;
   end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test for &amp;quot;submission after deadline&amp;quot; and &amp;quot;review after deadline&amp;quot; are added as they were not present. A new spec file under spec/features by name post_deadline_review_submission_spec.rb has been created to accommodate the two cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases has been added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases has been added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray color: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores with green color: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131347</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131347"/>
		<updated>2019-12-17T15:50:19Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Rspec */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Only the checkboxes for email preferences on user profile will be moved closer to the text to be more visible.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The checkboxes will be clearly visible for email preferences. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
There are no performance overhead created while meeting the requirements.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and weighted score in green. &lt;br /&gt;
&lt;br /&gt;
Modified Files&lt;br /&gt;
&lt;br /&gt;
app/models/assignment_participant.rb&amp;lt;br&amp;gt;&lt;br /&gt;
app/views/grades/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
We have added a new method weighted_scores_exist which will determine if there's any round which has non-zero weight assigned to it, if yes then the flag is_weighted will be set to true or false and based on the boolean value the css class to change the color of the score will be toggled. &lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
   def weighted_scores_exist(scores)&lt;br /&gt;
     #This method checks if the round has a weight assigned to it#&lt;br /&gt;
     #A more appropriate place for this method is the assignment_team class and needs to be moved in the future#&lt;br /&gt;
     scores[:is_weighted] = true&lt;br /&gt;
     scores.each do |score|&lt;br /&gt;
       if score[0][&amp;quot;review&amp;quot;]&lt;br /&gt;
         is_weighted = score[1][:is_weighted]&lt;br /&gt;
         is_completed = score[1][:assessments].any?&lt;br /&gt;
         if is_completed and !is_weighted&lt;br /&gt;
           scores[:is_weighted] = false&lt;br /&gt;
         end&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     scores&lt;br /&gt;
   end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test for &amp;quot;submission after deadline&amp;quot; and &amp;quot;review after deadline&amp;quot; are added as they were not present. A new spec file under spec/features by name post_deadline_review_submission_spec.rb has been created to accommodate the two cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases has been added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray color: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores with green color: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131346</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131346"/>
		<updated>2019-12-17T15:47:40Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Zero-weighted scores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Only the checkboxes for email preferences on user profile will be moved closer to the text to be more visible.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The checkboxes will be clearly visible for email preferences. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
There are no performance overhead created while meeting the requirements.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and weighted score in green. &lt;br /&gt;
&lt;br /&gt;
Modified Files&lt;br /&gt;
&lt;br /&gt;
app/models/assignment_participant.rb&amp;lt;br&amp;gt;&lt;br /&gt;
app/views/grades/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
We have added a new method weighted_scores_exist which will determine if there's any round which has non-zero weight assigned to it, if yes then the flag is_weighted will be set to true or false and based on the boolean value the css class to change the color of the score will be toggled. &lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
   def weighted_scores_exist(scores)&lt;br /&gt;
     #This method checks if the round has a weight assigned to it#&lt;br /&gt;
     #A more appropriate place for this method is the assignment_team class and needs to be moved in the future#&lt;br /&gt;
     scores[:is_weighted] = true&lt;br /&gt;
     scores.each do |score|&lt;br /&gt;
       if score[0][&amp;quot;review&amp;quot;]&lt;br /&gt;
         is_weighted = score[1][:is_weighted]&lt;br /&gt;
         is_completed = score[1][:assessments].any?&lt;br /&gt;
         if is_completed and !is_weighted&lt;br /&gt;
           scores[:is_weighted] = false&lt;br /&gt;
         end&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     scores&lt;br /&gt;
   end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test for &amp;quot;submission after deadline&amp;quot; and &amp;quot;review after deadline&amp;quot; are added as they were not present. A new spec file under spec/features by name post_deadline_review_submission_spec.rb has been created to accommodate the two cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases will be added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray mark: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores &amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131345</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131345"/>
		<updated>2019-12-17T15:44:51Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Zero-weighted scores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Only the checkboxes for email preferences on user profile will be moved closer to the text to be more visible.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The checkboxes will be clearly visible for email preferences. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
There are no performance overhead created while meeting the requirements.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and weighted score in green. &lt;br /&gt;
&lt;br /&gt;
Modified Files&lt;br /&gt;
&lt;br /&gt;
app/models/assignment_participant.rb&amp;lt;br&amp;gt;&lt;br /&gt;
app/views/grades/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
   def weighted_scores_exist(scores)&lt;br /&gt;
     #This method checks if the round has a weight assigned to it#&lt;br /&gt;
     #A more appropriate place for this method is the assignment_team class and needs to be moved in the future#&lt;br /&gt;
     scores[:is_weighted] = true&lt;br /&gt;
     scores.each do |score|&lt;br /&gt;
       if score[0][&amp;quot;review&amp;quot;]&lt;br /&gt;
         is_weighted = score[1][:is_weighted]&lt;br /&gt;
         is_completed = score[1][:assessments].any?&lt;br /&gt;
         if is_completed and !is_weighted&lt;br /&gt;
           scores[:is_weighted] = false&lt;br /&gt;
         end&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
     scores&lt;br /&gt;
   end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test for &amp;quot;submission after deadline&amp;quot; and &amp;quot;review after deadline&amp;quot; are added as they were not present. A new spec file under spec/features by name post_deadline_review_submission_spec.rb has been created to accommodate the two cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases will be added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray mark: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores &amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131344</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131344"/>
		<updated>2019-12-17T15:43:56Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Zero-weighted scores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Only the checkboxes for email preferences on user profile will be moved closer to the text to be more visible.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The checkboxes will be clearly visible for email preferences. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
There are no performance overhead created while meeting the requirements.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and weighted score in green. &lt;br /&gt;
&lt;br /&gt;
Modified Files &lt;br /&gt;
&lt;br /&gt;
app/models/assignment_participant.rb&amp;lt;br&amp;gt;&lt;br /&gt;
app/views/grades/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test for &amp;quot;submission after deadline&amp;quot; and &amp;quot;review after deadline&amp;quot; are added as they were not present. A new spec file under spec/features by name post_deadline_review_submission_spec.rb has been created to accommodate the two cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases will be added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray mark: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores &amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131343</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131343"/>
		<updated>2019-12-17T15:43:31Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Only the checkboxes for email preferences on user profile will be moved closer to the text to be more visible.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The checkboxes will be clearly visible for email preferences. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
There are no performance overhead created while meeting the requirements.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and weighted score in green. &lt;br /&gt;
&lt;br /&gt;
Modified Files &lt;br /&gt;
&lt;br /&gt;
app/models/assignment_participant.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
app/views/grades/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test for &amp;quot;submission after deadline&amp;quot; and &amp;quot;review after deadline&amp;quot; are added as they were not present. A new spec file under spec/features by name post_deadline_review_submission_spec.rb has been created to accommodate the two cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases will be added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray mark: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores &amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131297</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131297"/>
		<updated>2019-12-17T02:13:59Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Problem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases will be added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray mark: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores &amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131296</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131296"/>
		<updated>2019-12-17T02:13:46Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Problem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases will be added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray mark: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores &amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131295</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131295"/>
		<updated>2019-12-17T02:11:50Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Review Update */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases will be added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray mark: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores &amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131294</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131294"/>
		<updated>2019-12-17T02:09:17Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Review Update */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases will be added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray mark: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores &amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131293</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131293"/>
		<updated>2019-12-17T02:08:58Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Review Update */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases will be added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray mark: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores &amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131292</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131292"/>
		<updated>2019-12-17T02:08:35Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Review Update */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it 'should not allow submission after deadline' do&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases will be added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray mark: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores &amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131291</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131291"/>
		<updated>2019-12-17T02:01:07Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Review Update */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
it &amp;quot;should not allow submission after deadline&amp;quot; do&lt;br /&gt;
&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Generalize_review.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases will be added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray mark: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores &amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Generalize_review.jpg&amp;diff=131290</id>
		<title>File:Generalize review.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Generalize_review.jpg&amp;diff=131290"/>
		<updated>2019-12-17T02:00:23Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131289</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=131289"/>
		<updated>2019-12-17T01:16:32Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
The score calculation was initially tested manually to verify the scenarios with multiple weights and rounds. &lt;br /&gt;
Also, existing spec for score calculation with a weighted average for both varying and non-varying rubric is covering this scenario.&lt;br /&gt;
The spec is written under /spec/models/assignment_spec.rb. The &amp;quot;score&amp;quot; function of the &amp;quot;model/assignment.rb&amp;quot; is called for online (on the fly score calculation).&lt;br /&gt;
&lt;br /&gt;
Following file has the spec for weighted average score calculation.&lt;br /&gt;
spec/models/assignment_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;This feature can be broken down into the following sub-cases:&lt;br /&gt;
&amp;lt;br&amp;gt;1. A submission can only be made before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;2. A review can edit a review only before deadline&lt;br /&gt;
&amp;lt;br&amp;gt;3. Score calculation should be only done for latest submitted review&lt;br /&gt;
&lt;br /&gt;
Subcases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Spec to ensure submission can't be made after the deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
it &amp;quot;should not allow submission after deadline&amp;quot; do&lt;br /&gt;
&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
&lt;br /&gt;
    # goto student_task page, which has link to &amp;quot;Your work&amp;quot;&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
&lt;br /&gt;
    # the page will have text &amp;quot;Your work&amp;quot; but will be grayed&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your work&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # the page will not have link to content &amp;quot;Your work&amp;quot;&lt;br /&gt;
    expect{click_link &amp;quot;Your work&amp;quot;}.to raise_error(Capybara::ElementNotFound)&lt;br /&gt;
&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
2. Spec to ensure review can be done only before deadline&lt;br /&gt;
&lt;br /&gt;
File : spec/features/post_deadline_review_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
it &amp;quot;should not be able to review work after deadline&amp;quot; do&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # The spec is written to reproduce following bug. &amp;quot;Others' work&amp;quot; link open after deadline passed&lt;br /&gt;
&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2065&amp;quot;)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit 'student_task/view?id=1'&lt;br /&gt;
&lt;br /&gt;
    # the page should have content, but after deadline passes it is displayed as gray&lt;br /&gt;
    # but there should not be any link attached to it&lt;br /&gt;
    expect(page).to have_content &amp;quot;Others' work&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # this is the bug, even after deadline has passed, the link is still present&lt;br /&gt;
    # the ui comment in file views/student_task/view.html.erb says&lt;br /&gt;
    # &amp;lt;!--Akshay: Fix Issue 1218 - this link is disabled if assignment does not require any peer reviews--&amp;gt;&lt;br /&gt;
    # But the link seems to be open even after deadline passed.&lt;br /&gt;
    # Screenshot attached as part of wiki for E1975, Fall 2019&lt;br /&gt;
    expect(page).to have_link(&amp;quot;Others' work&amp;quot;, &amp;quot;/student_review/list?id=1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
The test scenario is able to produce the following bug. At times the review link is open even after the deadline has passed. The bug is also shown/reproduced in the following screenshot for Program 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShotReview.jpg]]&lt;br /&gt;
&lt;br /&gt;
3. Score calculation&lt;br /&gt;
&lt;br /&gt;
Score calculation for assignments for review is part of models/assignment.rb. The score calculation is handled by function &amp;quot;score&amp;quot; in this file and the testing is done for both multipart varying and non-varying rubric.&lt;br /&gt;
The respective spec is written in file spec/models/assignment_spec.rb. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
describe '#scores' do&lt;br /&gt;
    context 'when assignment is varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores in each round of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review1: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(true)&lt;br /&gt;
        allow(assignment).to receive(:num_review_rounds).and_return(1)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_responses_for_team_round).with(team, 1).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review1: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90.0}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment is not varying rubric by round assignment' do&lt;br /&gt;
      it 'calculates scores of each team in current assignment' do&lt;br /&gt;
        allow(participant).to receive(:scores).with(review: [question]).and_return(98)&lt;br /&gt;
        allow(assignment).to receive(:varying_rubrics_by_round?).and_return(false)&lt;br /&gt;
        allow(ReviewResponseMap).to receive(:get_assessments_for).with(team).and_return([response])&lt;br /&gt;
        allow(Answer).to receive(:compute_scores).with([response], [question]).and_return(max: 95, min: 88, avg: 90)&lt;br /&gt;
        expect(assignment.scores(review: [question]).inspect).to eq(&amp;quot;{:participants=&amp;gt;{:\&amp;quot;1\&amp;quot;=&amp;gt;98}, :teams=&amp;gt;{:\&amp;quot;0\&amp;quot;=&amp;gt;{:team=&amp;gt;#&amp;lt;AssignmentTeam id: 1, &amp;quot;\&lt;br /&gt;
          &amp;quot;name: \&amp;quot;no team\&amp;quot;, parent_id: 1, type: \&amp;quot;AssignmentTeam\&amp;quot;, comments_for_advertisement: nil, advertise_for_partner: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;submitted_hyperlinks: \&amp;quot;---\\n- https://www.expertiza.ncsu.edu\&amp;quot;, directory_num: 0, grade_for_submission: nil, &amp;quot;\&lt;br /&gt;
          &amp;quot;comment_for_submission: nil&amp;gt;, :scores=&amp;gt;{:max=&amp;gt;95, :min=&amp;gt;88, :avg=&amp;gt;90}}}}&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Usecasenew.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test and validate the functionalities which are not working as expected. Also, the test cases for features that will be newly added to the system, will also be written. &lt;br /&gt;
Test cases will be added to these files:&lt;br /&gt;
&lt;br /&gt;
spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/assignment_participant_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios covered by the newly introduced test cases are as follows: &amp;lt;br&amp;gt;&lt;br /&gt;
1. Zero weighted scores with gray mark: rspec spec/model/assignment_participants.rb&amp;lt;br&amp;gt;&lt;br /&gt;
2. Non-zero weighted scores &amp;lt;br&amp;gt;&lt;br /&gt;
3. Review update: rspec  spec/features/post_deadline_review_submission_sepc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ScreenShotReview.jpg&amp;diff=131288</id>
		<title>File:ScreenShotReview.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ScreenShotReview.jpg&amp;diff=131288"/>
		<updated>2019-12-17T01:15:38Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1938._OSS_project_Duke_Blue:_Fix_import_glitches&amp;diff=129249</id>
		<title>CSC/ECE 517 Fall 2019 - E1938. OSS project Duke Blue: Fix import glitches</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1938._OSS_project_Duke_Blue:_Fix_import_glitches&amp;diff=129249"/>
		<updated>2019-11-12T05:46:55Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
The import feature is the most helpful feature for instructors to set up assignments. The instructors usually have a list of students, teams, etc from their learning management system. Being able to import these into expertiza saves a lot of time when setting up an assignment. Unfortunately this feature has some bugs that were identified as the following list. &lt;br /&gt;
&lt;br /&gt;
'''Issue 918''': It seems that non-ASCII characters in the description (e.g., a curly apostrophe, and perhaps also an en-dash) caused a SQL error in inserting the description string into the db. I had to edit the import file to remove non-ASCII characters. Any Unicode character ought to be allowed in a description. &lt;br /&gt;
&lt;br /&gt;
'''Issue 153''': There should be a way to import a list of who has signed up for which topic. When a signup sheet is used in Expertiza, users are expected to sign up for topics. But, the instructor might've taken signups offline, e.g., by passing around a signup sheet in class. There should be a way to import this list to Expertiza, rather than impersonate all the students one by one and sign them up for a topic. '''This issue is not a bug but an additional feature to the existing import topic functionality.'''&lt;br /&gt;
&lt;br /&gt;
'''Issue 329''': When importing teams there are different options to handle conflicting team names &lt;br /&gt;
&lt;br /&gt;
'''Issue 328''': When importing teams, and a conflict exists there is an option to merge the two teams by inserting the new members into an existing team. Unfortunately, this feature is broken. we tried to import a team and selected 'Insert any new members into existing team'. No new team members were in fact inserted into the team&lt;br /&gt;
&lt;br /&gt;
== '''Fixes''' ==&lt;br /&gt;
=====Issue 918=====&lt;br /&gt;
&lt;br /&gt;
'''Problem:''' The application is not able to import topics with non ascii characters in its description field. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution:''' Before the topic object is persisted into the database, check for any non ascii characters in the description field and strip them. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Code Changes'''&amp;lt;br&amp;gt;&lt;br /&gt;
New code introduced is as follows.&amp;lt;br&amp;gt;&lt;br /&gt;
File:app/helpers/import_topics_helper.rb &amp;lt;br&amp;gt;&lt;br /&gt;
Here, a new function 'trim_non_ascii' has been added which iterates a given string character by character, and replaces each non ascii character with a white space character. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  def self.define_attributes(row_hash)&lt;br /&gt;
    attributes = {}&lt;br /&gt;
    if !row_hash[:description].nil? and !row_hash[:description].ascii_only?&lt;br /&gt;
      row_hash[:description] = self.trim_non_ascii(row_hash[:description])&lt;br /&gt;
      puts row_hash[:description]&lt;br /&gt;
    end&lt;br /&gt;
    attributes[&amp;quot;topic_identifier&amp;quot;] = row_hash[:topic_identifier].strip&lt;br /&gt;
    attributes[&amp;quot;topic_name&amp;quot;] = row_hash[:topic_name].strip&lt;br /&gt;
    attributes[&amp;quot;max_choosers&amp;quot;] = row_hash[:max_choosers].strip&lt;br /&gt;
    attributes&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def self.trim_non_ascii(string)&lt;br /&gt;
    string.split('').each do |char|&lt;br /&gt;
      !char.ascii_only? ? string.tr!(char, ' ') : nil&lt;br /&gt;
    end&lt;br /&gt;
    string.gsub!(/\s+/, ' ')&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
=====Issue 328=====&lt;br /&gt;
&lt;br /&gt;
'''Problem''': When importing teams, and a conflict exists there is an option to merge the two teams by inserting the new members into an existing team.&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This was an issue to fix the functionality of Insert any new members into existing team. This was due to faulty handling of the option handle_dups and incorrect checking of parameters.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Code was modified to ensure minimal impact to existing testcases and functionalities.&amp;lt;br&amp;gt;&lt;br /&gt;
The handling of handle_dups in options was done assuming that the parameter was a symbol. But when tested, it was found to be a string and hence the handling was updated accordingly.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
      name = handle_duplicate(team, name, id, options[&amp;quot;handle_dups&amp;quot;], teamtype)&lt;br /&gt;
Also, the if and else conditions for checking class type of used was wrong. This was updated based on how the variable was assigned in the '''import_file_controller.rb#import_from_hash'''&lt;br /&gt;
      if(teamtype.is_a?(CourseTeam.class))&lt;br /&gt;
          ...&lt;br /&gt;
      elsif  teamtype.is_a?(AssignmentTeam.class)&lt;br /&gt;
          ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E1938_Before_D.PNG]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
After fixing changes&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Insert_new_in_old.PNG]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Issue 329=====&lt;br /&gt;
'''Problem''': When importing teams there are different options to handle conflicting team names as shown in the screenshot below. We’d like to add another option to rename EXISTING team when a conflict exist. Introduce an option to rename the existing team in import_file/start.html.erb, handle this option in import_file_controller.rb and team.rb→import.&lt;br /&gt;
&lt;br /&gt;
'''Solution''': This was a request to add an option to rename existing team if there was a conflict in the team name.&lt;br /&gt;
New code introduced was as follows:&amp;lt;br&amp;gt;&lt;br /&gt;
In '''start.html.erb'''&amp;lt;br&amp;gt;&lt;br /&gt;
In this file, the new option as displayed to the user is added&amp;lt;br&amp;gt;&lt;br /&gt;
          &amp;lt;option value=&amp;quot;rename_existing&amp;quot;&amp;gt;rename the existing team and import&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In '''team.rb'''&amp;lt;br&amp;gt;&lt;br /&gt;
In this file, the handling of the new tag &amp;quot;rename_existing&amp;quot; is added wherein, the old team is updated with a new name.&amp;lt;br&amp;gt;&lt;br /&gt;
    # E1938: Added handling for renaming old team when conflict arises&lt;br /&gt;
    if handle_dups == &amp;quot;rename_existing&amp;quot;&lt;br /&gt;
      if teamtype.is_a?(CourseTeam.class)&lt;br /&gt;
        team.update(name: self.generate_team_name(Course.find(id).name))&lt;br /&gt;
      elsif  teamtype.is_a?(AssignmentTeam.class)&lt;br /&gt;
        team.update(name: self.generate_team_name(Assignment.find(id).name))&lt;br /&gt;
      end&lt;br /&gt;
      return name&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''The state of D before conflicting import''':&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E1938_Before_D_1.PNG]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After fixing changes&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:After_D.PNG]]&lt;br /&gt;
[[File:After_old_team.PNG]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
As you can see the '''new team got the name D''' and the old file got renamed to '''Team_17'''.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Issue 153=====&lt;br /&gt;
'''Requirement''': There should be a way to import a list of who has signed up for which topic. When a signup sheet is used in Expertiza, users are expected to sign up for topics. But, the instructor might've taken signups offline, e.g., by passing around a signup sheet in class. There should be a way to import this list to Expertiza, rather than impersonate all the students one by one and sign them up for a topic. &lt;br /&gt;
&lt;br /&gt;
'''Solution''': We have modified the existing implementation for import topics to assign the teams to the topics. We have changed the files to handle another column where the teams have been assigned to topics. The column is optional because there might be topics that have not yet been assigned to any teams&lt;br /&gt;
&lt;br /&gt;
'''Expectations from the import file: &lt;br /&gt;
'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Assigned team name should exist in the system, otherwise the import will fail. Instructor has to make sure that the teams which are assigned in the import file should exist with same names in the system or database. &lt;br /&gt;
* Instructor also need to ensure that the topic for which the team is being assigned should not be full or can accommodate new team assignment to the respective topic. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Code Changes:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''import_file/_sign_up_topic.html.erb'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
As there's already a screen with select options to map the columns with the fields for import. We are just adding another column so the best way is to extend the existing select tag with a new option for the teams assigned. All the select tags has been changed with an additional option &amp;quot;Assigned Team&amp;quot;. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;&lt;br /&gt;
            &amp;lt;select name=&amp;quot;select1&amp;quot; id=&amp;quot;select1&amp;quot; class=&amp;quot;form-control&amp;quot; style=&amp;quot;background-color:lightgrey&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;option value=&amp;quot;topic_identifier&amp;quot;&amp;gt;Topic Identifier (required)&amp;lt;/option&amp;gt;&lt;br /&gt;
              &amp;lt;option value=&amp;quot;topic_name&amp;quot;&amp;gt;Topic Name (required)&amp;lt;/option&amp;gt;&lt;br /&gt;
              &amp;lt;option value=&amp;quot;max_choosers&amp;quot;&amp;gt;Max Choosers (required)&amp;lt;/option&amp;gt;&lt;br /&gt;
              &amp;lt;option value=&amp;quot;category&amp;quot;&amp;gt;Category (optional)&amp;lt;/option&amp;gt;&lt;br /&gt;
              &amp;lt;option value=&amp;quot;description&amp;quot;&amp;gt;Description (optional)&amp;lt;/option&amp;gt;&lt;br /&gt;
              &amp;lt;option value=&amp;quot;link&amp;quot;&amp;gt;Link (optional)&amp;lt;/option&amp;gt;&lt;br /&gt;
              &amp;lt;option value=&amp;quot;assigned_team&amp;quot;&amp;gt;Assigned Team (optional)&amp;lt;/option&amp;gt;&lt;br /&gt;
            &amp;lt;/select&amp;gt;&lt;br /&gt;
          &amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''model/sign_up_topic.rb'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The existing import function in the model import the topics to the topic table. As per the requirement and validations, topic should be imported first and then only the team can be assigned to the topic. So the existing import method has been modified to assign the team once the topic is imported in the database table. As per the edge case mentioned in the requirement document that few topics may not have any team assigned to it, so we first check if topic has any team assigned, then only it tries to map the topic with the team. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  def self.import(row_hash, session, _id = nil)&lt;br /&gt;
    if row_hash.length &amp;lt; 3&lt;br /&gt;
      raise ArgumentError, &amp;quot;The CSV File expects the format: Topic identifier, Topic name, Max choosers, Topic Category (optional), Topic Description (Optional), Topic Link (optional), Assigned Team Name (optional).&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    topic = SignUpTopic.where(topic_name: row_hash[:topic_name], assignment_id: session[:assignment_id]).first&lt;br /&gt;
    if topic.nil?&lt;br /&gt;
      attributes = ImportTopicsHelper.define_attributes(row_hash)&lt;br /&gt;
      topic_new_id = ImportTopicsHelper.create_new_sign_up_topic(attributes, session)&lt;br /&gt;
      unless row_hash[:assigned_team].nil?&lt;br /&gt;
          team = Team.where(name: row_hash[:assigned_team]).first&lt;br /&gt;
          ImportTopicsHelper.assign_team_topic(topic_new_id, team.id)&lt;br /&gt;
      end&lt;br /&gt;
    else&lt;br /&gt;
      topic.max_choosers = row_hash[:max_choosers]&lt;br /&gt;
      topic.topic_identifier = row_hash[:topic_identifier]&lt;br /&gt;
      topic.save&lt;br /&gt;
      unless row_hash[:assigned_team].nil?&lt;br /&gt;
        team = Team.where(name: row_hash[:assigned_team]).first&lt;br /&gt;
        newteam = SignedUpTeam.where(topic_id: topic.id, team_id: team.id).first&lt;br /&gt;
        if newteam.nil?&lt;br /&gt;
          ImportTopicsHelper.assign_team_topic(topic.id, team.id)&lt;br /&gt;
        else&lt;br /&gt;
          newteam.team_id = team.id&lt;br /&gt;
          newteam.save&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
'''helpers/import_topics_helper.rb'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Having the assign_team_topic in the helper would organize the code but also in the unit testing. We can isolate the model logic and test this method separately by writing the test cases. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  def self.assign_team_topic(topic_id, assigned_team)&lt;br /&gt;
    attributes = {}&lt;br /&gt;
    attributes[&amp;quot;topic_id&amp;quot;] = topic_id&lt;br /&gt;
    attributes[&amp;quot;team_id&amp;quot;] = assigned_team&lt;br /&gt;
    assign_team = SignedUpTeam.new(attributes)&lt;br /&gt;
    assign_team.save!&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
   def self.create_new_sign_up_topic(attributes, session)&lt;br /&gt;
     sign_up_topic = SignUpTopic.new(attributes)&lt;br /&gt;
     sign_up_topic.assignment_id = session[:assignment_id]&lt;br /&gt;
     sign_up_topic.save&lt;br /&gt;
     # sign_up_topic&lt;br /&gt;
     sign_up_topic.save!&lt;br /&gt;
     sign_up_topic.id&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''controllers/import_file_controller.rb'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Existing implementation for import have many flaws and design issues. Most of the code has been written with nested if else, which is not the practice to be followed. Also the names of the fields have been hardcoded. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
As we cannot change the complete import implementation. So i had to use the existing one the way it is and make changes to extend the functionality. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    if (params[:assigned_team] == 'true')&lt;br /&gt;
        @optional_count += 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
    elsif params[:optional_count] == '4'&lt;br /&gt;
          new_header = [params[:select1], params[:select2], params[:select3], params[:select4], params[:select5], params[:select6], params[:select7]]&lt;br /&gt;
          @header_integrated_body = hash_rows_with_headers(new_header,contents_hash[:body])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''views/sign_up_sheet/_add_topics.html.erb'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This code has been used to display the columns in the footer.As we already have implementation for other columns, so another column name 'Assigned Team' is added here in this part of the code. &lt;br /&gt;
        &amp;lt;%= link_to 'Import topics',&lt;br /&gt;
                {&lt;br /&gt;
                    :controller =&amp;gt; 'import_file',&lt;br /&gt;
                    :action =&amp;gt; 'start',&lt;br /&gt;
                    :model =&amp;gt; 'SignUpTopic',&lt;br /&gt;
                    :id =&amp;gt; params[:id],&lt;br /&gt;
                    :expected_fields =&amp;gt; 'Topic Identifier' +&lt;br /&gt;
                        '&amp;amp;nbsp&amp;amp;nbsp|&amp;amp;nbsp&amp;amp;nbsp' +&lt;br /&gt;
                        'Topic Name' +&lt;br /&gt;
                        '&amp;amp;nbsp&amp;amp;nbsp|&amp;amp;nbsp&amp;amp;nbsp' +&lt;br /&gt;
                        'Max Choosers' +&lt;br /&gt;
                        '&amp;amp;nbsp&amp;amp;nbsp|&amp;amp;nbsp&amp;amp;nbsp' +&lt;br /&gt;
                        'Topic Category &amp;lt;em&amp;gt;(optional)&amp;lt;/em&amp;gt;' +&lt;br /&gt;
                        '&amp;amp;nbsp&amp;amp;nbsp|&amp;amp;nbsp&amp;amp;nbsp' +&lt;br /&gt;
                        'Topic Description &amp;lt;em&amp;gt;(optional)&amp;lt;/em&amp;gt;' +&lt;br /&gt;
                        '&amp;amp;nbsp&amp;amp;nbsp|&amp;amp;nbsp&amp;amp;nbsp' +&lt;br /&gt;
                        'Topic Link &amp;lt;em&amp;gt;(optional)&amp;lt;/em&amp;gt;' +&lt;br /&gt;
                        '&amp;amp;nbsp&amp;amp;nbsp|&amp;amp;nbsp&amp;amp;nbsp' +&lt;br /&gt;
                        'Assigned Team &amp;lt;em&amp;gt;(optional)&amp;lt;/em&amp;gt;'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Changes in the application with new implementation  '''&lt;br /&gt;
&lt;br /&gt;
An option column checkbox (Teams Assigned) has been added to the UI&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Issue153SS8.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A new column Assigned Team is added where the columns are being mapped. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File: Issue153SS7.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
*'''RSpec:'''&lt;br /&gt;
&lt;br /&gt;
::We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
::'''[Problem 1 (918)]'''&lt;br /&gt;
::::New testcases have been added to test this functionality. We use it to check if description with Ascii characters are being trimmed. These test cases has been added to '''import_topics_helper_spec.rb'''&lt;br /&gt;
&lt;br /&gt;
::'''[Problem 2 (153)]'''&lt;br /&gt;
::::As discussed with the mentor, there were no test cases for the SignUpTopic model which is being used to import the topics. As our additional functionality is to have another column to assign team to the topic. We have to have the import test case and the assigned team change could be applied to the same test case. &lt;br /&gt;
&lt;br /&gt;
::'''[Problem 3 (329)]'''&lt;br /&gt;
::::New testcases have been added to test this functionality. We use it to check if the older team gets the new name and the new team gets the requested name. These testcases run when we run bundle exec for the '''teams_spec.rb'''&lt;br /&gt;
&lt;br /&gt;
::'''[Problem 4 (328)]'''&lt;br /&gt;
::::As discussed with the Mentor this was a bug fix in the existing functionality. There are no new test cases needed for this.'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*'''UI Testing:'''&lt;br /&gt;
&lt;br /&gt;
::'''[Problem 1 (918)]'''&lt;br /&gt;
::::1. Login to Expertiza using username: instructor6 &amp;amp; password: password.&lt;br /&gt;
::::2. Go to Assignments and click on edit for any of the listed assignments.&lt;br /&gt;
::::3. Click on Topics tab.&lt;br /&gt;
::::4. Scroll down to the bottom of the page and click on Import topics.&lt;br /&gt;
::::5. Click on Topic Description checkbox and import the following file. (sample.csv)&lt;br /&gt;
::::6. Click on next and make the header for 4th column as 'Description' from the dropdown.&lt;br /&gt;
::::7. Import topics.&lt;br /&gt;
::::8. After this, a new topic should be imported which can be viewed from the aforementioned Topics tab. This newly imported topic will not have any non-ascii characters.&lt;br /&gt;
&lt;br /&gt;
::'''[Problem 2 (153)]'''&lt;br /&gt;
::::1. Login to Expertiza using username: instructor6 &amp;amp; password: password.&lt;br /&gt;
::::2. Select Manage &amp;gt;Assignments &amp;gt; Edit Assignment &amp;gt; Topics&lt;br /&gt;
::::3. Scroll down to the screen and click on import topics&lt;br /&gt;
::::4. Upload a file with the topic details and a team assigned to topic&lt;br /&gt;
::::5. Check the Teams Assigned optional column&lt;br /&gt;
::::6. Click on import and map the columns in the mapping page&lt;br /&gt;
::::6. After submitting, team will be assigned to appropriate topic&lt;br /&gt;
&lt;br /&gt;
::'''[Problem 3 (329)]'''&lt;br /&gt;
::::1. Login to Expertiza using username: instructor6 &amp;amp; password: password.&lt;br /&gt;
::::2. Select Manage &amp;gt; Courses or Assignments &amp;gt; Add Teams button &amp;gt; Import Team&lt;br /&gt;
::::3. In the screen that loads, select &amp;quot;rename the existing team and import&amp;quot; in the handle conflicts section.&lt;br /&gt;
::::4. Upload a file with the team details and select the appropriate delimiter.&lt;br /&gt;
::::5. Click on Create&lt;br /&gt;
::::6. Verify that the new team got created with the assigned name and the older team's name got changed.&lt;br /&gt;
&lt;br /&gt;
::'''[Problem 4 (328)]'''&lt;br /&gt;
::::1. Login to Expertiza using username: instructor6 &amp;amp; password: password.&lt;br /&gt;
::::2. Select Manage &amp;gt; Courses or Assignments &amp;gt; Add Teams button &amp;gt; Import Team&lt;br /&gt;
::::3. In the screen that loads, select &amp;quot;Insert any new members into existing team&amp;quot; in the handle conflicts section.&lt;br /&gt;
::::4. Upload a file with the team details and select the appropriate delimiter.&lt;br /&gt;
::::5. Click on Create&lt;br /&gt;
::::6. Verify that the existing team got updated with the new team members&lt;br /&gt;
&lt;br /&gt;
== '''Possible Enhancements''' ==&lt;br /&gt;
&lt;br /&gt;
====='''Import functionality'''=====&lt;br /&gt;
&lt;br /&gt;
The existing import implementation does not follow DRY principle, rails code practices and even basic design principles. Most of the code is written based with nested if else conditions. This implementation can be improved. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exception Handling: Before starting to work on this requirement. I tried few imports and in many cases, import was not successful and i was not able to figure out what's going wrong. My suggestion would be to develop a screen to show which rows were successfully imported and the failure reason which didn't. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Also, if there's no team in the system and instructor has used it in the import file so a new pop up can be displayed where the new team can be created or the import can be extended to create teams while assigning the topic.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====='''Non Ascii character imports'''=====&lt;br /&gt;
The non ascii character issue exists for '''topic identifier''' and '''topic name''' fields as well. This should also be fixed in a similar way as is done for Issue #918 above.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Expertiza on GITHUB: https://github.com/expertiza/expertiza&lt;br /&gt;
&lt;br /&gt;
2. GitHub Project Repository Fork: https://github.com/NisargC/expertiza&lt;br /&gt;
&lt;br /&gt;
3. Demo link: http://152.46.19.138:8080/&lt;br /&gt;
&lt;br /&gt;
4. Demo Video link: https://drive.google.com/open?id=1mPnOsO5n_44lcVrPuYlbZrX3gDXLA9j7&lt;br /&gt;
&lt;br /&gt;
5. Expertiza project documentation wiki: http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1938._OSS_project_Duke_Blue:_Fix_import_glitches&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129238</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129238"/>
		<updated>2019-11-12T04:31:45Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* System Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. The email will be sent to all the assigned reviewers only if their email preference (When someone else submits work I am assigned to review) in the profile is set to receive the email.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Use Case 1.png]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test the functionalities which are not working as expected. Also the test cases for the additional features and changes in the system. Test cases will be added to these files: &lt;br /&gt;
&lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/questionnaire_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Email Preferences UI Changes=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested by logging into the system and on the user profile page.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
'''Test 5: Notify reviewers'''&amp;lt;br&amp;gt;&lt;br /&gt;
The notify button on submission page should send a notification to all the corresponding reviewers to revisit the submission and update the reviews.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129223</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129223"/>
		<updated>2019-11-12T04:22:28Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Profile Email Preference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. The email will be sent to all the assigned reviewers only if their email preference (When someone else submits work I am assigned to review) in the profile is set to receive the email.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E1975  .jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test the functionalities which are not working as expected. Also the test cases for the additional features and changes in the system. Test cases will be added to these files: &lt;br /&gt;
&lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/questionnaire_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Email Preferences UI Changes=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested by logging into the system and on the user profile page.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Review should be reopened. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
'''Test 5: Notify reviewers'''&amp;lt;br&amp;gt;&lt;br /&gt;
The notify button on submission page should send a notification to all the corresponding reviewers to revisit the submission and update the reviews.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:E1975_.jpg&amp;diff=129220</id>
		<title>File:E1975 .jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:E1975_.jpg&amp;diff=129220"/>
		<updated>2019-11-12T04:21:45Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129185</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129185"/>
		<updated>2019-11-12T04:14:30Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Review Update */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. The email will be sent to all the assigned reviewers only if their email preference (When someone else submits work I am assigned to review) in the profile is set to receive the email.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test the functionalities which are not working as expected. Also the test cases for the additional features and changes in the system. Test cases will be added to these files: &lt;br /&gt;
&lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/questionnaire_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Email Preferences UI Changes=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested by logging into the system and on the user profile page.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
'''Test 5: Notify reviewers'''&amp;lt;br&amp;gt;&lt;br /&gt;
The notify button on submission page should send a notification to all the corresponding reviewers to revisit the submission and update the reviews.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129172</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129172"/>
		<updated>2019-11-12T04:09:40Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Propose Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test the functionalities which are not working as expected. Also the test cases for the additional features and changes in the system. Test cases will be added to these files: &lt;br /&gt;
&lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/questionnaire_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Email Preferences UI Changes=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested by logging into the system and on the user profile page.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
'''Test 5: Notify reviewers'''&amp;lt;br&amp;gt;&lt;br /&gt;
The notify button on submission page should send a notification to all the corresponding reviewers to revisit the submission and update the reviews.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129163</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129163"/>
		<updated>2019-11-12T04:06:14Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Manual Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Propose Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test the functionalities which are not working as expected. Also the test cases for the additional features and changes in the system. Test cases will be added to these files: &lt;br /&gt;
&lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/questionnaire_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Email Preferences UI Changes=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested by logging into the system and on the user profile page.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1: Zero weighted scores shown in gray.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2: Information button.'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3: Display non-zero weighted scores'''&amp;lt;br&amp;gt;&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4: Review Update'''&amp;lt;br&amp;gt;&lt;br /&gt;
If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
'''Test 5: Notify reviewers'''&amp;lt;br&amp;gt;&lt;br /&gt;
The notify button on submission page should send a notification to all the corresponding reviewers to revisit the submission and update the reviews.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129161</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129161"/>
		<updated>2019-11-12T04:05:07Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Manual Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Propose Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test the functionalities which are not working as expected. Also the test cases for the additional features and changes in the system. Test cases will be added to these files: &lt;br /&gt;
&lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/questionnaire_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Email Preferences UI Changes=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested by logging into the system and on the user profile page.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
'''Step 1'''. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 2'''. The author submits the work done in expertiza.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Step 3'''. Peers check the submitted work and give reviews for it.&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Test 1''': Zero weighted scores shown in gray.&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2''': Information button.&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
'''Step 4'''. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3''': Display non-zero weighted scores.&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
'''Step 5''': The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4''': Review Update.&lt;br /&gt;
If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
'''Test 5''': notify reviewers&lt;br /&gt;
The notify button on submission page should send a notification to all the corresponding reviewers to revisit the submission and update the reviews.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129159</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129159"/>
		<updated>2019-11-12T04:03:31Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Manual Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Propose Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test the functionalities which are not working as expected. Also the test cases for the additional features and changes in the system. Test cases will be added to these files: &lt;br /&gt;
&lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/questionnaire_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Email Preferences UI Changes=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested by logging into the system and on the user profile page.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
1. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
2. The author submits the work done in expertiza.&lt;br /&gt;
3. Peers check the submitted work and give reviews for it.&lt;br /&gt;
 &lt;br /&gt;
'''Test 1''': Zero weighted scores shown in gray.&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
'''Test 2''': Information button.&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
4. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
'''Test 3''': Display non-zero weighted scores.&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
'''Test 4''': Review Update.&lt;br /&gt;
If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
'''Test 5''': notify reviewers&lt;br /&gt;
The notify button on submission page should send a notification to all the corresponding reviewers to revisit the submission and update the reviews.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129158</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129158"/>
		<updated>2019-11-12T04:03:08Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Manual Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Propose Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test the functionalities which are not working as expected. Also the test cases for the additional features and changes in the system. Test cases will be added to these files: &lt;br /&gt;
&lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/questionnaire_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Email Preferences UI Changes=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested by logging into the system and on the user profile page.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
1. The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
2. The author submits the work done in expertiza.&lt;br /&gt;
3. Peers check the submitted work and give reviews for it.&lt;br /&gt;
 &lt;br /&gt;
Test 1: Zero weighted scores shown in gray.&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
Zero weighted scores should be displayed in gray to the logged in user.&lt;br /&gt;
 &lt;br /&gt;
Test 2: Information button.&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
4. The mentor evaluates the final submission and give grades.&lt;br /&gt;
 &lt;br /&gt;
Test 3: Display non-zero weighted scores.&lt;br /&gt;
Login as an author in expertiza and go to scores page to view the feedback.&lt;br /&gt;
The scores shown for the assignment should be the weighted average of the scores.&lt;br /&gt;
The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
The author updates the work and re-submits it again.&lt;br /&gt;
 &lt;br /&gt;
Test 4: Review Update.&lt;br /&gt;
If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test 5: notify reviewers&lt;br /&gt;
The notify button on submission page should send a notification to all the corresponding reviewers to revisit the submission and update the reviews.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129153</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129153"/>
		<updated>2019-11-12T03:57:54Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Propose Solution''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test the functionalities which are not working as expected. Also the test cases for the additional features and changes in the system. Test cases will be added to these files: &lt;br /&gt;
&lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/questionnaire_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Email Preferences UI Changes=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested by logging into the system and on the user profile page.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129149</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129149"/>
		<updated>2019-11-12T03:55:44Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Email Preferences */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test the functionalities which are not working as expected. Also the test cases for the additional features and changes in the system. Test cases will be added to these files: &lt;br /&gt;
&lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/questionnaire_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Email Preferences UI Changes=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested by logging into the system and on the user profile page.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129148</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129148"/>
		<updated>2019-11-12T03:55:35Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test the functionalities which are not working as expected. Also the test cases for the additional features and changes in the system. Test cases will be added to these files: &lt;br /&gt;
&lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/questionnaire_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested by logging into the system and on the user profile page.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129147</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=129147"/>
		<updated>2019-11-12T03:55:26Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test the functionalities which are not working as expected. Also the test cases for the additional features and changes in the system. Test cases will be added to these files: &lt;br /&gt;
&lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/questionnaire_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested by logging into the system and on the user profile page.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128928</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128928"/>
		<updated>2019-11-12T01:41:14Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Rspec */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test the functionalities which may have a problem. Also the test cases for the additional features and changes in the system. Test cases will be added to these files: &lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
spec/models/questionnaire_spec.rb&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested post code changes.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128918</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128918"/>
		<updated>2019-11-12T01:32:47Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
&lt;br /&gt;
New test cases will be added to test the functionalities which may have a problem. Also the test cases for the additional features and changes in the system. Test cases will be added to these files: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested post code changes.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128821</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128821"/>
		<updated>2019-11-11T22:18:46Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Non-zero weighted scores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to the '''spec/models/on_the_fly_calc_spec.rb''' &lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested post code changes.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128818</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128818"/>
		<updated>2019-11-11T22:17:56Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Zero-weighted scores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to below files. &lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested post code changes.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128816</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128816"/>
		<updated>2019-11-11T22:17:43Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Non-zero weighted scores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
We'll first write the test cases by adding test cases to below files. &lt;br /&gt;
spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
&lt;br /&gt;
Also, we'll test this manually by computing the score and if there's a bug then below are the possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
models/on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
models/questionnarie.rb&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested post code changes.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128794</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128794"/>
		<updated>2019-11-11T21:55:14Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Zero-weighted scores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Possible files to be modified. &lt;br /&gt;
&lt;br /&gt;
on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested post code changes.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128792</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128792"/>
		<updated>2019-11-11T21:54:46Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Zero-weighted scores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Few changes are required for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Files which will be modified. &lt;br /&gt;
&lt;br /&gt;
on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
questionnaire.rb&amp;lt;br&amp;gt;&lt;br /&gt;
view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested post code changes.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128788</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128788"/>
		<updated>2019-11-11T21:52:01Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Zero-weighted scores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. &lt;br /&gt;
&lt;br /&gt;
We'll also have to make changes for the UI to display non-weighted score in grey with information icon and non weighted score in black. &lt;br /&gt;
&lt;br /&gt;
Files which will be modified. &lt;br /&gt;
&lt;br /&gt;
on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
questionnaire.rb&lt;br /&gt;
view_team.html.erb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested post code changes.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128787</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128787"/>
		<updated>2019-11-11T21:50:24Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Zero-weighted scores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Files which will be modified. &lt;br /&gt;
&lt;br /&gt;
on_the_fly_calc.rb&amp;lt;br&amp;gt;&lt;br /&gt;
questionnaire.rb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested post code changes.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128786</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128786"/>
		<updated>2019-11-11T21:50:10Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Zero-weighted scores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
Inside compute_total_score method in on_the_fly_calc.rb module, we'll check if the weighted score exists, if not then we'll calculate the non weighted score. We'll also have to add a method in the questionnaire model to get non weighted score. Files which will be modified. &lt;br /&gt;
&lt;br /&gt;
on_the_fly_calc.rb&lt;br /&gt;
questionnaire.rb&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested post code changes.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128699</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128699"/>
		<updated>2019-11-11T20:50:20Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Test Plan for Email Preferences */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them look more user-friendly.&lt;br /&gt;
The changes can be tested post code changes.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128698</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128698"/>
		<updated>2019-11-11T20:49:56Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Test Plan for Email Preferences */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them feel more user-friendly.&lt;br /&gt;
The changes can be tested post code changes.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128696</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128696"/>
		<updated>2019-11-11T20:49:37Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Profile Email Preference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the '''layout.scss''' file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
.    The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them feel more user-friendly.&lt;br /&gt;
The changes can be tested post code changes.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128695</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128695"/>
		<updated>2019-11-11T20:49:25Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Profile Email Preference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. The CSS can be applied to the layout.scss file to using the appropriate class given to the column&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Test Plan for Email Preferences=====&lt;br /&gt;
&lt;br /&gt;
.    The email preferences checkboxes at present appear sticking to the rightmost border of the page. By following the requirements the checkboxes will be made available closer to the text fields to make them feel more user-friendly.&lt;br /&gt;
The changes can be tested post code changes.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128693</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128693"/>
		<updated>2019-11-11T20:48:31Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Profile Email Preference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner. As the layout of the options have used table layout. So, we'll increase the width of the the column which includes checkboxes. We'll be using the percentage instead of fixed value to give the width, as this would adjust the column size based on the screen size. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128683</id>
		<title>CSC/ECE 517 Fall 2019 - E1975. Generalize Review Versioning</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1975._Generalize_Review_Versioning&amp;diff=128683"/>
		<updated>2019-11-11T20:37:34Z</updated>

		<summary type="html">&lt;p&gt;Ajain37: /* Profile Email Preference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
Expertiza is a peer-review based learning platform in which work-products by students are evaluated and scored by peer-review of other students. Review process occurs in stages. After submission of initial feedback for a work-product by the peer-group, students are allowed time to incorporate the comments and improve their work. This second version of the work product is reviewed again and scores are given. This process might be repeated again and the average score from the last review stage is considered as the final score for that work-product. This incremental development of work-products and progressive learning is the fundamental concept underlying the Expertiza system.&lt;br /&gt;
&lt;br /&gt;
=====Purpose=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The system also triggers an email to reviewer when there is a change in the submission. The scores are calculated on the fly based on the rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Scope=====&lt;br /&gt;
This project will enhance the existing scoring and peer review functionality and the underlying implementation along with the testing of the existing implementation. Testing of the score calculation, display for the weighted and non-weighted scores based on the combination of the rubrics are part of this project. This project also includes an additional feature for the author to notify the reviewers for the change in the submission.&lt;br /&gt;
&lt;br /&gt;
=====Background=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The scores are calculated based on the rubrics defined in the system. There’s already an existing implementation for the computation of score but it doesn’t work for multipart rubric&lt;br /&gt;
&lt;br /&gt;
=====Documentation=====&lt;br /&gt;
The documents that will be generated for this project are the design document, the actual files that we edit or create, and a ReadMe that explains what we did and how to use the modified product.&lt;br /&gt;
&lt;br /&gt;
=====Standards=====&lt;br /&gt;
The new standards that will be adhered to in this system are those given for the rails framework, and the code should follow rails and object oriented design principles. Any newly added code will adhere to the guidelines mentioned below:&lt;br /&gt;
&lt;br /&gt;
● https://github.com/rubocop-hq/rails-style-guide &amp;lt;br&amp;gt;&lt;br /&gt;
● http://wiki.expertiza.ncsu.edu/index.php/Object-Oriented_Design_and_Programming​.&lt;br /&gt;
&lt;br /&gt;
== '''System Requirements''' ==&lt;br /&gt;
=====Problem=====&lt;br /&gt;
The system currently is designed to give a reviewer a new form for each round of review (rather than requiring the reviewer to edit an existing file) and automatically remove scores of reviews that are not redone. The functionality needs to be tested. It works in some cases, but we are suspicious that it is not entirely correct.&lt;br /&gt;
&lt;br /&gt;
'''Profile Email Preference''':&lt;br /&gt;
User in expertiza has liberty to control what kind of emails they should receive. As the reviewers will receive an email for the change in submission. This can be controlled by selecting an option (When someone else submits work I am assigned to review) on the profile page of the user. As the checkboxes are far away on the right corner of the screen, the position of checkboxes need to be changed to make it more user friendly. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scores for students in Expertiza can be based on a combination of rubrics: review rubrics for each round of review, author feedback, and teammate review. In CSC/ECE 517, we don’t really use the student-assigned scores to grade projects, but the peer-review score shown to the student is based entirely on the second round of review&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how scores are calculated:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. If only zero-weighted scores are available (here, in the first round of review), the average of all zero-weighted scores should be shown in grey font. An information button should explain why the scores are shown in grey (“The reviews submitted so far do not count toward the author’s final grade.”):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is::&amp;lt;br&amp;gt;&lt;br /&gt;
    80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
3. If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. ​'''However, the previous review score that was given in the current round will count until the reviewer updates the submitted review'''. '''This functionality doesn’t work for multipart rubrics.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system also doesn’t generate emails to reviewers in case a new submission is made by the author without changing submission parameters like submission URL. Eg: A new submission is made by making a new deployment. But the deployment URL doesn’t change. In this case as well, without changing the current flow the author should have an option to notify all the reviewers to revisit the submission.&lt;br /&gt;
&lt;br /&gt;
=====Interface Requirement=====&lt;br /&gt;
The overall user interface would remain the same as of the current system. Since this is a modification to the current submission page, there will be a new addition to the submission page. On the submission page, there will be a new button to notify reviewers when there is a submission which doesn’t contain a change to submission parameters like submission URL, but the deployment has been updated on the same URL. Other than that the interface remains the same for the score page, only functionalities will be tested for multi-part rubrics.&lt;br /&gt;
&lt;br /&gt;
=====Quality Requirements=====&lt;br /&gt;
The interface changes are minimal and very easy to adapt. The new button will be clearly visible and is supposed to have a clear text to interpret its functionality. The proposed changes should not affect the current system functionality in any way. The solution is only intended to enrich the project features.&lt;br /&gt;
&lt;br /&gt;
=====Portability Requirements=====&lt;br /&gt;
All of the changes for this enhancement to Expertiza should not interfere with the platform portability in any way.&lt;br /&gt;
&lt;br /&gt;
=====Performance Requirements=====&lt;br /&gt;
Adding test for multi-part rubric functionality should not cause any overhead in the performance of the system. Sending emails through “Notify All Reviewers” button should affect the system minimally in terms of performance. The only overhead is a database query to get all the reviewers. A good database design should incorporate such a query smoothly.&lt;br /&gt;
&lt;br /&gt;
=====Assumptions=====&lt;br /&gt;
The functionality should work in case the assignment rubric is not multi-part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Design''' ==&lt;br /&gt;
=====Zero-weighted scores=====&lt;br /&gt;
If only zero-weighted scores are available in the first round of review, the average of all zero-weighted scores will be shown in a gray font. An information button will explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade”)&lt;br /&gt;
&lt;br /&gt;
===== Non-zero weighted scores=====&lt;br /&gt;
If any non-zero weighted scores are available, then the score shown for the assignment should be the weighted average of the scores. For example, if Round 2 reviews are weighted 90% and author feedback is weighted 10%, and two Round 2 reviews each gave the work a score of 80%, and the only author-feedback score was 100%, then the overall score is 80%⨉90% + 100%⨉10% = 82%&lt;br /&gt;
&lt;br /&gt;
=====Review Update=====&lt;br /&gt;
If a review is submitted, and then the author(s) update the submission ​before the end of the current round​, it will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review. This functionality already exists in the existing system. However, In some submissions, there’s no change in the submitted URL’s so there’s no way to let the reviewers know that the author has made some changes in the project. We’ll add a notify button for the Author in the UI which will trigger an email to the reviewers. This will reopen the review, and then the reviewer can go in and update the submitted review. However, the previous review score that was given in the current round will count until the reviewer updates the submitted review&lt;br /&gt;
&lt;br /&gt;
'''Sending an email when the submission parameters don’t change​:'''&lt;br /&gt;
&lt;br /&gt;
A new button will be added on the submission page. The button will enable the author to notify all the reviewers to revisit the submission. We could also add a custom message in the&lt;br /&gt;
mail body so that the authors know the specific reason as to why they received this particular mail.&lt;br /&gt;
&lt;br /&gt;
=====Profile Email Preference=====&lt;br /&gt;
The checkboxes are moved to the left corner&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E1975_CHECKBOX_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
=====Rspec=====&lt;br /&gt;
We have added new testcases for the new pieces of code that were added by us.&lt;br /&gt;
&lt;br /&gt;
=====Manual Testing=====&lt;br /&gt;
&lt;br /&gt;
The instructor will create an assignment and assign the zero and non-zero weights to the rubrics.&lt;br /&gt;
&lt;br /&gt;
·   	Login as an author and go to scores page to view the feedback.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
&lt;br /&gt;
Test – Zero weighted scores shown in gray.&lt;br /&gt;
 &lt;br /&gt;
·   	Zero weighted scores should be displayed in gray to the user.&lt;br /&gt;
 &lt;br /&gt;
Test – Information button.&lt;br /&gt;
 &lt;br /&gt;
·   	The information button should explain why the scores are shown in gray (“The reviews submitted so far do not count toward the author’s final grade.”)&lt;br /&gt;
 &lt;br /&gt;
Test – Display non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
·   	The scores shown for the assignment should be the weighted average of the scores, if any non-zero scores are available&lt;br /&gt;
·   	The zero weighted scores have to be replaced with non-zero weighted scores.&lt;br /&gt;
 &lt;br /&gt;
Test – Update review score.&lt;br /&gt;
·   	If author updates the submission before the end of current round. The reviewer should be able to go and update the submitted review.&lt;br /&gt;
·   	If the review is not updated the previous review score has to be retained.&lt;br /&gt;
 &lt;br /&gt;
Test – Multipart part rubric.&lt;br /&gt;
·   	The functionality should work for multipart rubric.&lt;br /&gt;
·   	The scores calculated have to be accurate.&lt;/div&gt;</summary>
		<author><name>Ajain37</name></author>
	</entry>
</feed>