<?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=Kprawat</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=Kprawat"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Kprawat"/>
	<updated>2026-08-10T15:55:30Z</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_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141664</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141664"/>
		<updated>2021-11-24T16:36:57Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Test Scenarios for E2147(Role based reviewing) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Brief Overview of E2147 and E2026 Projects==&lt;br /&gt;
*E2147(Role based reviewing): The project objective was to develop teammate review varying by the roles that each team member has in order to evaluate the particular role that each team member has taken rather than asking a generic questionnaire which was same for all the team members previously. For eg, the instructor would create a separate teammate questionnaire for developer role and for tester role respectively.&lt;br /&gt;
*E2026(Specialized rubrics for different topics): The project objective was to develop specialized rubrics based on project topics, previously we had same type of questionnaire for all the different types of projects. This implementation made sure that we evaluate different projects based on personalised rubrics rather than having same rubrics.&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)===&lt;br /&gt;
*Only Instructor/TA/Admin should be able to create or update duties: Only the instructor/admin should be able to create or update duties. Also, the corresponding TA of the assignment should be able to create or update duties.&lt;br /&gt;
*Create new roles: If the assignment is role based reviewing then the instructor should be able to create new roles for the same and save it in the database using new role functionality.&lt;br /&gt;
*Only allow student to update duties in Student View: Only student should be able to update his duties in Student View. &lt;br /&gt;
*Edit existing roles: Once the new roles have been created, then the instructor should be able to edit its details such as the maximum number of each role allowed.&lt;br /&gt;
*Delete existing roles: The instructor should also be able to delete any roles if he wants.&lt;br /&gt;
*Review rubric by role: On Rubrics tab, if the instructor clicks on Review rubric by role, then the corresponding rubric roles based teammate questionnaire should appear and get saved successfully.&lt;br /&gt;
*Student View: If the assignment is role based assignment, then the respective students should be able to see the respective teammate questionnaire based on roles for his other team members.&lt;br /&gt;
*Selection of Roles: On student login, a student should be able to see the existing roles that he can take up in the project. Only the roles which are available should be shown to the student.&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141663</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141663"/>
		<updated>2021-11-24T16:34:46Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Brief Overview of E2147 and E2026 Projects==&lt;br /&gt;
*E2147(Role based reviewing): The project objective was to develop teammate review varying by the roles that each team member has in order to evaluate the particular role that each team member has taken rather than asking a generic questionnaire which was same for all the team members previously. For eg, the instructor would create a separate teammate questionnaire for developer role and for tester role respectively.&lt;br /&gt;
*E2026(Specialized rubrics for different topics): The project objective was to develop specialized rubrics based on project topics, previously we had same type of questionnaire for all the different types of projects. This implementation made sure that we evaluate different projects based on personalised rubrics rather than having same rubrics.&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)===&lt;br /&gt;
*Only Instructor/TA/Admin should be able to create or update duties: Only the instructor/admin should be able to create or update duties.&lt;br /&gt;
Also, the corresponding TA of the assignment should be able to create or update duties.&lt;br /&gt;
&lt;br /&gt;
*Create new roles: If the assignment is role based reviewing then the instructor should be able to create new roles for the same and save it in the database using new role functionality.&lt;br /&gt;
*Pop up message after saving the role based assignment: A message should pop up that new roles have not been created if no new roles have been setup by the instructor.&lt;br /&gt;
*Edit existing roles: Once the new roles have been created, then the instructor should be able to edit its details such as the maximum number of each role allowed.&lt;br /&gt;
*Delete existing roles: The instructor should also be able to delete any roles if he wants.&lt;br /&gt;
*Review rubric by role: On Rubrics tab, if the instructor clicks on Review rubric by role, then the corresponding rubric roles based teammate questionnaire should appear and get saved successfully.&lt;br /&gt;
*Student View: If the assignment is role based assignment, then the respective students should be able to see the respective teammate questionnaire based on roles for his other team members.&lt;br /&gt;
*Selection of Roles: On student login, a student should be able to see the existing roles that he can take up in the project. Only the roles which are available should be shown to the student.&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141654</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141654"/>
		<updated>2021-11-22T08:12:45Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Brief Overview of E2147 and E2026 Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Brief Overview of E2147 and E2026 Projects==&lt;br /&gt;
*E2147(Role based reviewing): The project objective was to develop teammate review varying by the roles that each team member has in order to evaluate the particular role that each team member has taken rather than asking a generic questionnaire which was same for all the team members previously. For eg, the instructor would create a separate teammate questionnaire for developer role and for tester role respectively.&lt;br /&gt;
*E2026(Specialized rubrics for different topics): The project objective was to develop specialized rubrics based on project topics, previously we had same type of questionnaire for all the different types of projects. This implementation made sure that we evaluate different projects based on personalised rubrics rather than having same rubrics.&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)===&lt;br /&gt;
*Role based review checkbox on Review Stratergy tab: Writing test case when the instructor clicks on Role based Review Checkbox on Review Stratergy Tab, it should get saved while saving the assignment.&lt;br /&gt;
*Create new roles: If the assignment is role based reviewing then the instructor should be able to create new roles for the same and save it in the database using new role functionality.&lt;br /&gt;
*Pop up message after saving the role based assignment: A message should pop up that new roles have not been created if no new roles have been setup by the instructor.&lt;br /&gt;
*Edit existing roles: Once the new roles have been created, then the instructor should be able to edit its details such as the maximum number of each role allowed.&lt;br /&gt;
*Delete existing roles: The instructor should also be able to delete any roles if he wants.&lt;br /&gt;
*Review rubric by role: On Rubrics tab, if the instructor clicks on Review rubric by role, then the corresponding rubric roles based teammate questionnaire should appear and get saved successfully.&lt;br /&gt;
*Student View: If the assignment is role based assignment, then the respective students should be able to see the respective teammate questionnaire based on roles for his other team members.&lt;br /&gt;
*Selection of Roles: On student login, a student should be able to see the existing roles that he can take up in the project. Only the roles which are available should be shown to the student.&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141653</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141653"/>
		<updated>2021-11-22T08:12:14Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Brief Overview of E2147 and E2026 Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Brief Overview of E2147 and E2026 Projects==&lt;br /&gt;
*E2147(Role based reviewing): The project objective was to develop teammate review varying by the roles that each team member has in order to evaluate the particular role that each team member has taken rather than asking a generic questionnaire which was same for all the team members previously. For eg, the instructor would create a separate teammate questionnaire for developer role and for tester role respectively.&lt;br /&gt;
*E2026(Specialized rubrics for different topics): The project objective was to develop specialized rubrics based on project topics, previously we had same type of questionnaire for all the different types of projects. This implementation made sure that we evaluate different projects based on personalised rubrics rather than having the same rubrics.&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)===&lt;br /&gt;
*Role based review checkbox on Review Stratergy tab: Writing test case when the instructor clicks on Role based Review Checkbox on Review Stratergy Tab, it should get saved while saving the assignment.&lt;br /&gt;
*Create new roles: If the assignment is role based reviewing then the instructor should be able to create new roles for the same and save it in the database using new role functionality.&lt;br /&gt;
*Pop up message after saving the role based assignment: A message should pop up that new roles have not been created if no new roles have been setup by the instructor.&lt;br /&gt;
*Edit existing roles: Once the new roles have been created, then the instructor should be able to edit its details such as the maximum number of each role allowed.&lt;br /&gt;
*Delete existing roles: The instructor should also be able to delete any roles if he wants.&lt;br /&gt;
*Review rubric by role: On Rubrics tab, if the instructor clicks on Review rubric by role, then the corresponding rubric roles based teammate questionnaire should appear and get saved successfully.&lt;br /&gt;
*Student View: If the assignment is role based assignment, then the respective students should be able to see the respective teammate questionnaire based on roles for his other team members.&lt;br /&gt;
*Selection of Roles: On student login, a student should be able to see the existing roles that he can take up in the project. Only the roles which are available should be shown to the student.&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141652</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141652"/>
		<updated>2021-11-22T08:08:37Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Brief Overview of E2147 and E2026 Projects==&lt;br /&gt;
*E2147(Role based reviewing): The project objective was to develop teammate review varying by the roles that each team member has so that we can evaluate the particular role that each team member has taken rather than asking a generic questionnaire which was same for all the team members. For eg, the instructor would create a separate teammate questionnaire for developer role and for tester role respectively.&lt;br /&gt;
*E2026(Specialized rubrics for different topics):&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)===&lt;br /&gt;
*Role based review checkbox on Review Stratergy tab: Writing test case when the instructor clicks on Role based Review Checkbox on Review Stratergy Tab, it should get saved while saving the assignment.&lt;br /&gt;
*Create new roles: If the assignment is role based reviewing then the instructor should be able to create new roles for the same and save it in the database using new role functionality.&lt;br /&gt;
*Pop up message after saving the role based assignment: A message should pop up that new roles have not been created if no new roles have been setup by the instructor.&lt;br /&gt;
*Edit existing roles: Once the new roles have been created, then the instructor should be able to edit its details such as the maximum number of each role allowed.&lt;br /&gt;
*Delete existing roles: The instructor should also be able to delete any roles if he wants.&lt;br /&gt;
*Review rubric by role: On Rubrics tab, if the instructor clicks on Review rubric by role, then the corresponding rubric roles based teammate questionnaire should appear and get saved successfully.&lt;br /&gt;
*Student View: If the assignment is role based assignment, then the respective students should be able to see the respective teammate questionnaire based on roles for his other team members.&lt;br /&gt;
*Selection of Roles: On student login, a student should be able to see the existing roles that he can take up in the project. Only the roles which are available should be shown to the student.&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141651</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141651"/>
		<updated>2021-11-22T08:08:09Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Brief Overview of E2147 and E2026 Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Brief Overview of E2147 and E2026 Projects==&lt;br /&gt;
*E2147(Role based reviewing): The project objective was to develop teammate review varying by the roles that each team member has so that we can evaluate the particular role that each team member has taken rather than asking a generic questionnaire which was same for all the team members. For eg, the instructor would create a separate teammate questionnaire for developer role and for tester role respectively.&lt;br /&gt;
*E2026(Specialized rubrics for different topics):&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)===&lt;br /&gt;
*Role based review checkbox on Review Stratergy tab: Writing test case when the instructor clicks on Role based Review Checkbox on Review Stratergy Tab, it should get saved while saving the assignment.&lt;br /&gt;
*Create new roles: If the assignment is role based reviewing then the instructor should be able to create new roles for the same and save it in the database using new role functionality.&lt;br /&gt;
*Pop up message after saving the role based assignment: A message should pop up that new roles have not been created if no new roles have been setup by the instructor.&lt;br /&gt;
*Edit existing roles: Once the new roles have been created, then the instructor should be able to edit its details such as the maximum number of each role allowed.&lt;br /&gt;
*Delete existing roles: The instructor should also be able to delete any roles if he wants.&lt;br /&gt;
*Review rubric by role: On Rubrics tab, if the instructor clicks on Review rubric by role, then the corresponding rubric roles based teammate questionnaire should appear and get saved successfully.&lt;br /&gt;
*Student View: If the assignment is role based assignment, then the respective students should be able to see the respective teammate questionnaire based on roles for his other team members.&lt;br /&gt;
*Selection of Roles: On student login, a student should be able to see the existing roles that he can take up in the project. Only the roles which are available should be shown to the student.&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141650</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141650"/>
		<updated>2021-11-22T08:06:49Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Brief Overview of E2147 and E2026 Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Brief Overview of E2147 and E2026 Projects==&lt;br /&gt;
*E2147(Role based reviewing): The project objective was to develop teammate review varying by the roles that each team member has. For eg, the instructor would create a separate teammate questionnaire for developer role and for tester role respectively.&lt;br /&gt;
*E2026(Specialized rubrics for different topics):&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)===&lt;br /&gt;
*Role based review checkbox on Review Stratergy tab: Writing test case when the instructor clicks on Role based Review Checkbox on Review Stratergy Tab, it should get saved while saving the assignment.&lt;br /&gt;
*Create new roles: If the assignment is role based reviewing then the instructor should be able to create new roles for the same and save it in the database using new role functionality.&lt;br /&gt;
*Pop up message after saving the role based assignment: A message should pop up that new roles have not been created if no new roles have been setup by the instructor.&lt;br /&gt;
*Edit existing roles: Once the new roles have been created, then the instructor should be able to edit its details such as the maximum number of each role allowed.&lt;br /&gt;
*Delete existing roles: The instructor should also be able to delete any roles if he wants.&lt;br /&gt;
*Review rubric by role: On Rubrics tab, if the instructor clicks on Review rubric by role, then the corresponding rubric roles based teammate questionnaire should appear and get saved successfully.&lt;br /&gt;
*Student View: If the assignment is role based assignment, then the respective students should be able to see the respective teammate questionnaire based on roles for his other team members.&lt;br /&gt;
*Selection of Roles: On student login, a student should be able to see the existing roles that he can take up in the project. Only the roles which are available should be shown to the student.&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141649</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141649"/>
		<updated>2021-11-22T08:04:50Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Brief Overview of E2147 and E2026 Projects==&lt;br /&gt;
*E2147(Role based reviewing):&lt;br /&gt;
*E2026(Specialized rubrics for different topics):&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)===&lt;br /&gt;
*Role based review checkbox on Review Stratergy tab: Writing test case when the instructor clicks on Role based Review Checkbox on Review Stratergy Tab, it should get saved while saving the assignment.&lt;br /&gt;
*Create new roles: If the assignment is role based reviewing then the instructor should be able to create new roles for the same and save it in the database using new role functionality.&lt;br /&gt;
*Pop up message after saving the role based assignment: A message should pop up that new roles have not been created if no new roles have been setup by the instructor.&lt;br /&gt;
*Edit existing roles: Once the new roles have been created, then the instructor should be able to edit its details such as the maximum number of each role allowed.&lt;br /&gt;
*Delete existing roles: The instructor should also be able to delete any roles if he wants.&lt;br /&gt;
*Review rubric by role: On Rubrics tab, if the instructor clicks on Review rubric by role, then the corresponding rubric roles based teammate questionnaire should appear and get saved successfully.&lt;br /&gt;
*Student View: If the assignment is role based assignment, then the respective students should be able to see the respective teammate questionnaire based on roles for his other team members.&lt;br /&gt;
*Selection of Roles: On student login, a student should be able to see the existing roles that he can take up in the project. Only the roles which are available should be shown to the student.&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141648</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141648"/>
		<updated>2021-11-22T08:03:56Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Brief Overview of E2147 and E2026 Projects==&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)===&lt;br /&gt;
*Role based review checkbox on Review Stratergy tab: Writing test case when the instructor clicks on Role based Review Checkbox on Review Stratergy Tab, it should get saved while saving the assignment.&lt;br /&gt;
*Create new roles: If the assignment is role based reviewing then the instructor should be able to create new roles for the same and save it in the database using new role functionality.&lt;br /&gt;
*Pop up message after saving the role based assignment: A message should pop up that new roles have not been created if no new roles have been setup by the instructor.&lt;br /&gt;
*Edit existing roles: Once the new roles have been created, then the instructor should be able to edit its details such as the maximum number of each role allowed.&lt;br /&gt;
*Delete existing roles: The instructor should also be able to delete any roles if he wants.&lt;br /&gt;
*Review rubric by role: On Rubrics tab, if the instructor clicks on Review rubric by role, then the corresponding rubric roles based teammate questionnaire should appear and get saved successfully.&lt;br /&gt;
*Student View: If the assignment is role based assignment, then the respective students should be able to see the respective teammate questionnaire based on roles for his other team members.&lt;br /&gt;
*Selection of Roles: On student login, a student should be able to see the existing roles that he can take up in the project. Only the roles which are available should be shown to the student.&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141647</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141647"/>
		<updated>2021-11-22T08:02:39Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Test Scenarios for E2147(Role based reviewing) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)===&lt;br /&gt;
*Role based review checkbox on Review Stratergy tab: Writing test case when the instructor clicks on Role based Review Checkbox on Review Stratergy Tab, it should get saved while saving the assignment.&lt;br /&gt;
*Create new roles: If the assignment is role based reviewing then the instructor should be able to create new roles for the same and save it in the database using new role functionality.&lt;br /&gt;
*Pop up message after saving the role based assignment: A message should pop up that new roles have not been created if no new roles have been setup by the instructor.&lt;br /&gt;
*Edit existing roles: Once the new roles have been created, then the instructor should be able to edit its details such as the maximum number of each role allowed.&lt;br /&gt;
*Delete existing roles: The instructor should also be able to delete any roles if he wants.&lt;br /&gt;
*Review rubric by role: On Rubrics tab, if the instructor clicks on Review rubric by role, then the corresponding rubric roles based teammate questionnaire should appear and get saved successfully.&lt;br /&gt;
*Student View: If the assignment is role based assignment, then the respective students should be able to see the respective teammate questionnaire based on roles for his other team members.&lt;br /&gt;
*Selection of Roles: On student login, a student should be able to see the existing roles that he can take up in the project. Only the roles which are available should be shown to the student.&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141646</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141646"/>
		<updated>2021-11-22T07:58:15Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Test Scenarios for E2147(Role based reviewing) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)===&lt;br /&gt;
*Role based Review Checkbox on Review Stratergy Tab: Writing test case when the instructor clicks on Role based Review Checkbox on Review Stratergy Tab, it should get saved while saving the assignment.&lt;br /&gt;
*Create new roles: If the assignment is role based reviewing then the instructor should be able to create new roles for the same and save it in the database using new role functionality.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141645</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141645"/>
		<updated>2021-11-22T07:57:26Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Test Scenarios for E2147(Role based reviewing) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)===&lt;br /&gt;
*Role based Review Checkbox on Review Stratergy Tab: Writing test case when the instructor clicks on Role based Review Checkbox on Review Stratergy Tab, it should get saved while saving the assignment.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141644</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141644"/>
		<updated>2021-11-22T07:56:28Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Test Scenarios for E2147(Role based reviewing) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)===&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141643</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141643"/>
		<updated>2021-11-22T07:55:42Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Test Scenarios for E2147(Role based reviewing)= */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)===&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141642</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141642"/>
		<updated>2021-11-22T07:55:26Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Test Scenarios for E2026(Specialized rubrics for different topics)= */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)===&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141641</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141641"/>
		<updated>2021-11-22T07:55:09Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Testing Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2147(Role based reviewing)====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test Scenarios for E2026(Specialized rubrics for different topics)====&lt;br /&gt;
&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141640</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141640"/>
		<updated>2021-11-22T07:53:59Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Develop New RSpec Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*spec/helpers/duties_controller_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141639</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141639"/>
		<updated>2021-11-22T07:53:19Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Develop New RSpec Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
**spec/helpers/assignment_helper_spec.rb&lt;br /&gt;
**spec/models/self_review_response_map_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141638</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141638"/>
		<updated>2021-11-22T07:42:10Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*As part of previous implementation, the team had introduced the following new RSpec test files. We have retained those file.&lt;br /&gt;
**spec/helpers/assignment_helper_spec.rb&lt;br /&gt;
**spec/models/self_review_response_map_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141637</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141637"/>
		<updated>2021-11-20T06:41:37Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Purpose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Spring_2020_-_E2026._Specialized_rubrics_for_different_topic_types. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Design Strategy==&lt;br /&gt;
This feature was previously implemented and was detailed [http://wiki.expertiza.ncsu.edu/index.php/E1936_Specialized_Rubrics here]. The feature concluded with allowing 4 rubric scenarios for an assignment:&lt;br /&gt;
*Rubric does not vary by round or by topic.&lt;br /&gt;
*Rubric varies by round, but not by topic.&lt;br /&gt;
*Rubric varies by topic, but not by round.&lt;br /&gt;
*Rubric varies by both round and topic.&lt;br /&gt;
However, there were two issues with the implementation:&lt;br /&gt;
*Rubrics in the dropdown were only those created by the logged-in instructor, so the TA wouldn’t be able to see them&lt;br /&gt;
*Rubrics would not be saved after selecting them and saving.&lt;br /&gt;
In light of these issues, [https://github.com/gabalmat/expertiza/commit/23ed2cca2976f55515ea8980646e4432858bf446 changes] to expertiza were made as follows:&lt;br /&gt;
*Two additional columns are added into the Assignment table that determines whether Rubrics varies by either Round or Topic with default values False&lt;br /&gt;
*'''update_assignment_questionnaires''' method is re-implemented&lt;br /&gt;
**Having extra column in the assignment questionnaire table topic_id, no need for deleting all the data and re-writing it again every single time in the DB (this caused the previous implementation to have a delay when selecting **rubrics)&lt;br /&gt;
**The only varying value is questionnaire_id, the rest values may not change from Topics or Rubrics tabs, but can be added&lt;br /&gt;
*There are 4 (four) possible cases for saving and updating data:&lt;br /&gt;
**used_in_round = null and topic_id = null&lt;br /&gt;
**used_in_round = integer and topic_id = null&lt;br /&gt;
**used_in_round = null and topic_id = integer&lt;br /&gt;
**used_in_round = integer and topic_id = integer&lt;br /&gt;
This solved the issue of having rubrics save&lt;br /&gt;
===Problem===&lt;br /&gt;
The feature we have to implement was not fully committed due to the previously mentioned problems, so we have to reincorporate the missing code. However, a resulting issue is the inability for an instructor or TA to use rubrics that they did not create. The current problem can be broken down into the following parts:&lt;br /&gt;
# Integrate the changes made from the original implementation into the current version of Expertiza&lt;br /&gt;
# Allow an instructor/TA to chose rubrics that aren’t only theirs&lt;br /&gt;
# Create and update tests to reflect the changes as needed&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
Our proposed solution keeps the previous implementation, but changes rubric filtering to allow instructors/TAs to use filters that are not theirs. Alongside the changes in the original implementation we propose:&lt;br /&gt;
*Allow an instructor to choose different rubrics for different topics&lt;br /&gt;
**PROBLEM: The drop-downs for selecting rubrics show only those rubrics created by the currently-logged in instructor (per project mentor). &lt;br /&gt;
***SOLUTION: Change the filtering in the questionnaire_options method to reflect the desired filtering.&lt;br /&gt;
***FILE: app/helpers/assignment_helper.rb&lt;br /&gt;
&lt;br /&gt;
==UML Diagram==&lt;br /&gt;
Following the [https://expertiza.csc.ncsu.edu/index.php/E1936_Specialized_Rubrics previous implementations's] footsteps, this diagram depicts the interactions between an instructor and an assignment. The instructor may edit, delete, copy, and other stuff (already existing in Expertiza). Alongside editing topics and due dates, the instructor can edit what rubrics are assigned to an assignment. The highlighted portions are of interest. The topics tab allows instructors to specify which rubric associates with each topic while the rubrics tab lets the instructor determine if the assignment will vary by topic or not.&lt;br /&gt;
&lt;br /&gt;
[[File:Use_case_diagram_1936.png]]&lt;br /&gt;
&lt;br /&gt;
==Files to be modified==&lt;br /&gt;
&lt;br /&gt;
Since our project is to improve upon a previous implementation that was slightly flawed, we will be modifying all of the same files that they previously modified (even if we don’t choose to alter their implementation in that file).&lt;br /&gt;
&lt;br /&gt;
The major modified files from the previous implementation include:&lt;br /&gt;
*'''Controllers'''&lt;br /&gt;
**''assignments_controller.rb'': To refresh the topics list when changing tabs&lt;br /&gt;
**''popup_controller.rb'': To add a potential error message to the rubric view scores popup&lt;br /&gt;
&lt;br /&gt;
*'''Models'''&lt;br /&gt;
**''assignment.rb'': Add methods to determine if an assignment varies by rubric/topic. (will be refactored as part of our change, however)&lt;br /&gt;
**''assignment_form.rb'': Add topic ids to created assignment questionnaires&lt;br /&gt;
**''assignment_questionnaire.rb'': Add topic id to assignment questionnaire model&lt;br /&gt;
**''review_response_map.rb'': To allow finding review questionnaires by topic id&lt;br /&gt;
**''sign_up_topic.rb'': To allow a topic to have many assignment questionnaires attach to it (via topic id)&lt;br /&gt;
&lt;br /&gt;
*'''Views'''&lt;br /&gt;
**''assignments/edit.html.erb'': To move topic editing view to its own file that is rendered as part of assignment edit&lt;br /&gt;
**''edit/_rubrics.html.erb'': Factor out common code into a function, update to use topic id&lt;br /&gt;
**''edit/_topics.html.erb'': Topic editing view that was moved from assignment edit view&lt;br /&gt;
**''popup/view_review_scores_popup.html.erb'': Assignments that vary by topic should not be displayed, instead getting error&lt;br /&gt;
**''sign_up_sheet/_table_line.html.erb'': Add questionnaires to signup sheet table if assignment varies by topic&lt;br /&gt;
&lt;br /&gt;
*'''Helpers'''&lt;br /&gt;
**''assignment_helper.rb'': To add a topic id to the searchable fields for a questionnaire&lt;br /&gt;
&lt;br /&gt;
*'''DB Migrate'''&lt;br /&gt;
**''XXXXXXXXXXX_add_topic_id_to_assignment_questionnaires.rb'': Migration to add topic id to assignment questionnaire schema&lt;br /&gt;
&lt;br /&gt;
*'''All of the related test files to accommodate the above changes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To address the issues brought up with the previous implementation, we will also make the following major modifications:&lt;br /&gt;
*'''Controllers'''&lt;br /&gt;
**''assignments_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''grades_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''popup_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''Models'''&lt;br /&gt;
**''assignment.rb'': Add persisted fields to the assignment for varying by topic/round instead of using methods to determine it&lt;br /&gt;
**''assignment_form.rb'': No longer delete all existing questionnaires on update, update them instead. Now find questionnaire by assignment questionnaire and type rather than assignment/type/round_number/topic_id.&lt;br /&gt;
**''assignment_participant.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''feedback_response_map.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''on_the_fly_calc.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''self_review_response_map.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''tag_prompt_deployment.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''Views'''&lt;br /&gt;
**''edit/_rubrics.html.erb'': Modify to set assignment vary by round/topic fields instead of non persisted flags&lt;br /&gt;
&lt;br /&gt;
*'''Helpers'''&lt;br /&gt;
**''assignment_helper.rb'': Refactor by moving function to find questionnaire / assignment questionnaire to assignment_form.rb. Remove filters that only allow instructors to see rubrics.&lt;br /&gt;
**''grades_helper.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''summary_helper.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''DB Migrate'''&lt;br /&gt;
**''XXXXXXXXX_add_vary_by_topic_to_assignments.rb'': Migration to add “vary by topic” field to assignment&lt;br /&gt;
**''XXXXXXXXX_add_vary_by_round_to_assignments.rb'': Migration to add “vary by round” field to assignment &lt;br /&gt;
&lt;br /&gt;
*'''All of the related test files to accommodate the above changes'''&lt;br /&gt;
&lt;br /&gt;
==Database Flow==&lt;br /&gt;
We will be re-adding the database flow that was added in the previous implementation, linking ''sign_up_topic'' to ''assignment_questionnaire'' via a '''topic_id''' field.&lt;br /&gt;
[[File:HW04_table.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition to that, we will be adding two additional boolean fields to the ''assignment'' schema: '''vary_by_round''' and '''vary_by_topic'''. As discussed earlier, in the previous implementation, these were methods that were called to determine if an assignment varied by round/topic rather than a persisted value. &lt;br /&gt;
&lt;br /&gt;
[[File:E2026DatabaseFlow.png]]&lt;br /&gt;
&lt;br /&gt;
Only a subset of the fields for each table is shown in the diagram because most of the fields are not relevant to these changes and would only serve to distract from the relevant changes. Additions are shown in bold.&lt;br /&gt;
&lt;br /&gt;
==New Implementation==&lt;br /&gt;
While trying to integrate the previous team's implementation of this feature, we discovered that their method for querying AssignmentQuestionnaires (AQs) was flawed.&lt;br /&gt;
&lt;br /&gt;
It would always query for the AQs by assignment id, current round number, and current topic id.&lt;br /&gt;
&lt;br /&gt;
However, if the assignment did not have reviews that vary by round or topic, these values would be nil on the AQ, and the previous query would fail.&lt;br /&gt;
&lt;br /&gt;
To fix this, we modified the ''assignment_questionnaire'' function in the AssignmentForm model to check the Assignment's ''vary_by_round'' and ''vary_by_topic'' flags, and then add the corresponding fields to the query. &lt;br /&gt;
&lt;br /&gt;
This means that:&lt;br /&gt;
* If an assignment does not vary by round or by topic, the query for AQs will be by assignment id only.&lt;br /&gt;
* If the assignment varies by round but not topic, the query for AQs will be by assignment id and round number.&lt;br /&gt;
&lt;br /&gt;
[[File:AQNewImpl.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*As part of previous implementation, the team had introduced the following new RSpec test files. We have retained those file.&lt;br /&gt;
**spec/helpers/assignment_helper_spec.rb&lt;br /&gt;
**spec/models/self_review_response_map_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141636</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141636"/>
		<updated>2021-11-20T06:40:51Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Purpose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing#E2147._Role-based_reviewing with the existing E2026-Specialized Rubrics for different topics. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Design Strategy==&lt;br /&gt;
This feature was previously implemented and was detailed [http://wiki.expertiza.ncsu.edu/index.php/E1936_Specialized_Rubrics here]. The feature concluded with allowing 4 rubric scenarios for an assignment:&lt;br /&gt;
*Rubric does not vary by round or by topic.&lt;br /&gt;
*Rubric varies by round, but not by topic.&lt;br /&gt;
*Rubric varies by topic, but not by round.&lt;br /&gt;
*Rubric varies by both round and topic.&lt;br /&gt;
However, there were two issues with the implementation:&lt;br /&gt;
*Rubrics in the dropdown were only those created by the logged-in instructor, so the TA wouldn’t be able to see them&lt;br /&gt;
*Rubrics would not be saved after selecting them and saving.&lt;br /&gt;
In light of these issues, [https://github.com/gabalmat/expertiza/commit/23ed2cca2976f55515ea8980646e4432858bf446 changes] to expertiza were made as follows:&lt;br /&gt;
*Two additional columns are added into the Assignment table that determines whether Rubrics varies by either Round or Topic with default values False&lt;br /&gt;
*'''update_assignment_questionnaires''' method is re-implemented&lt;br /&gt;
**Having extra column in the assignment questionnaire table topic_id, no need for deleting all the data and re-writing it again every single time in the DB (this caused the previous implementation to have a delay when selecting **rubrics)&lt;br /&gt;
**The only varying value is questionnaire_id, the rest values may not change from Topics or Rubrics tabs, but can be added&lt;br /&gt;
*There are 4 (four) possible cases for saving and updating data:&lt;br /&gt;
**used_in_round = null and topic_id = null&lt;br /&gt;
**used_in_round = integer and topic_id = null&lt;br /&gt;
**used_in_round = null and topic_id = integer&lt;br /&gt;
**used_in_round = integer and topic_id = integer&lt;br /&gt;
This solved the issue of having rubrics save&lt;br /&gt;
===Problem===&lt;br /&gt;
The feature we have to implement was not fully committed due to the previously mentioned problems, so we have to reincorporate the missing code. However, a resulting issue is the inability for an instructor or TA to use rubrics that they did not create. The current problem can be broken down into the following parts:&lt;br /&gt;
# Integrate the changes made from the original implementation into the current version of Expertiza&lt;br /&gt;
# Allow an instructor/TA to chose rubrics that aren’t only theirs&lt;br /&gt;
# Create and update tests to reflect the changes as needed&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
Our proposed solution keeps the previous implementation, but changes rubric filtering to allow instructors/TAs to use filters that are not theirs. Alongside the changes in the original implementation we propose:&lt;br /&gt;
*Allow an instructor to choose different rubrics for different topics&lt;br /&gt;
**PROBLEM: The drop-downs for selecting rubrics show only those rubrics created by the currently-logged in instructor (per project mentor). &lt;br /&gt;
***SOLUTION: Change the filtering in the questionnaire_options method to reflect the desired filtering.&lt;br /&gt;
***FILE: app/helpers/assignment_helper.rb&lt;br /&gt;
&lt;br /&gt;
==UML Diagram==&lt;br /&gt;
Following the [https://expertiza.csc.ncsu.edu/index.php/E1936_Specialized_Rubrics previous implementations's] footsteps, this diagram depicts the interactions between an instructor and an assignment. The instructor may edit, delete, copy, and other stuff (already existing in Expertiza). Alongside editing topics and due dates, the instructor can edit what rubrics are assigned to an assignment. The highlighted portions are of interest. The topics tab allows instructors to specify which rubric associates with each topic while the rubrics tab lets the instructor determine if the assignment will vary by topic or not.&lt;br /&gt;
&lt;br /&gt;
[[File:Use_case_diagram_1936.png]]&lt;br /&gt;
&lt;br /&gt;
==Files to be modified==&lt;br /&gt;
&lt;br /&gt;
Since our project is to improve upon a previous implementation that was slightly flawed, we will be modifying all of the same files that they previously modified (even if we don’t choose to alter their implementation in that file).&lt;br /&gt;
&lt;br /&gt;
The major modified files from the previous implementation include:&lt;br /&gt;
*'''Controllers'''&lt;br /&gt;
**''assignments_controller.rb'': To refresh the topics list when changing tabs&lt;br /&gt;
**''popup_controller.rb'': To add a potential error message to the rubric view scores popup&lt;br /&gt;
&lt;br /&gt;
*'''Models'''&lt;br /&gt;
**''assignment.rb'': Add methods to determine if an assignment varies by rubric/topic. (will be refactored as part of our change, however)&lt;br /&gt;
**''assignment_form.rb'': Add topic ids to created assignment questionnaires&lt;br /&gt;
**''assignment_questionnaire.rb'': Add topic id to assignment questionnaire model&lt;br /&gt;
**''review_response_map.rb'': To allow finding review questionnaires by topic id&lt;br /&gt;
**''sign_up_topic.rb'': To allow a topic to have many assignment questionnaires attach to it (via topic id)&lt;br /&gt;
&lt;br /&gt;
*'''Views'''&lt;br /&gt;
**''assignments/edit.html.erb'': To move topic editing view to its own file that is rendered as part of assignment edit&lt;br /&gt;
**''edit/_rubrics.html.erb'': Factor out common code into a function, update to use topic id&lt;br /&gt;
**''edit/_topics.html.erb'': Topic editing view that was moved from assignment edit view&lt;br /&gt;
**''popup/view_review_scores_popup.html.erb'': Assignments that vary by topic should not be displayed, instead getting error&lt;br /&gt;
**''sign_up_sheet/_table_line.html.erb'': Add questionnaires to signup sheet table if assignment varies by topic&lt;br /&gt;
&lt;br /&gt;
*'''Helpers'''&lt;br /&gt;
**''assignment_helper.rb'': To add a topic id to the searchable fields for a questionnaire&lt;br /&gt;
&lt;br /&gt;
*'''DB Migrate'''&lt;br /&gt;
**''XXXXXXXXXXX_add_topic_id_to_assignment_questionnaires.rb'': Migration to add topic id to assignment questionnaire schema&lt;br /&gt;
&lt;br /&gt;
*'''All of the related test files to accommodate the above changes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To address the issues brought up with the previous implementation, we will also make the following major modifications:&lt;br /&gt;
*'''Controllers'''&lt;br /&gt;
**''assignments_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''grades_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''popup_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''Models'''&lt;br /&gt;
**''assignment.rb'': Add persisted fields to the assignment for varying by topic/round instead of using methods to determine it&lt;br /&gt;
**''assignment_form.rb'': No longer delete all existing questionnaires on update, update them instead. Now find questionnaire by assignment questionnaire and type rather than assignment/type/round_number/topic_id.&lt;br /&gt;
**''assignment_participant.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''feedback_response_map.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''on_the_fly_calc.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''self_review_response_map.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''tag_prompt_deployment.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''Views'''&lt;br /&gt;
**''edit/_rubrics.html.erb'': Modify to set assignment vary by round/topic fields instead of non persisted flags&lt;br /&gt;
&lt;br /&gt;
*'''Helpers'''&lt;br /&gt;
**''assignment_helper.rb'': Refactor by moving function to find questionnaire / assignment questionnaire to assignment_form.rb. Remove filters that only allow instructors to see rubrics.&lt;br /&gt;
**''grades_helper.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''summary_helper.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''DB Migrate'''&lt;br /&gt;
**''XXXXXXXXX_add_vary_by_topic_to_assignments.rb'': Migration to add “vary by topic” field to assignment&lt;br /&gt;
**''XXXXXXXXX_add_vary_by_round_to_assignments.rb'': Migration to add “vary by round” field to assignment &lt;br /&gt;
&lt;br /&gt;
*'''All of the related test files to accommodate the above changes'''&lt;br /&gt;
&lt;br /&gt;
==Database Flow==&lt;br /&gt;
We will be re-adding the database flow that was added in the previous implementation, linking ''sign_up_topic'' to ''assignment_questionnaire'' via a '''topic_id''' field.&lt;br /&gt;
[[File:HW04_table.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition to that, we will be adding two additional boolean fields to the ''assignment'' schema: '''vary_by_round''' and '''vary_by_topic'''. As discussed earlier, in the previous implementation, these were methods that were called to determine if an assignment varied by round/topic rather than a persisted value. &lt;br /&gt;
&lt;br /&gt;
[[File:E2026DatabaseFlow.png]]&lt;br /&gt;
&lt;br /&gt;
Only a subset of the fields for each table is shown in the diagram because most of the fields are not relevant to these changes and would only serve to distract from the relevant changes. Additions are shown in bold.&lt;br /&gt;
&lt;br /&gt;
==New Implementation==&lt;br /&gt;
While trying to integrate the previous team's implementation of this feature, we discovered that their method for querying AssignmentQuestionnaires (AQs) was flawed.&lt;br /&gt;
&lt;br /&gt;
It would always query for the AQs by assignment id, current round number, and current topic id.&lt;br /&gt;
&lt;br /&gt;
However, if the assignment did not have reviews that vary by round or topic, these values would be nil on the AQ, and the previous query would fail.&lt;br /&gt;
&lt;br /&gt;
To fix this, we modified the ''assignment_questionnaire'' function in the AssignmentForm model to check the Assignment's ''vary_by_round'' and ''vary_by_topic'' flags, and then add the corresponding fields to the query. &lt;br /&gt;
&lt;br /&gt;
This means that:&lt;br /&gt;
* If an assignment does not vary by round or by topic, the query for AQs will be by assignment id only.&lt;br /&gt;
* If the assignment varies by round but not topic, the query for AQs will be by assignment id and round number.&lt;br /&gt;
&lt;br /&gt;
[[File:AQNewImpl.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*As part of previous implementation, the team had introduced the following new RSpec test files. We have retained those file.&lt;br /&gt;
**spec/helpers/assignment_helper_spec.rb&lt;br /&gt;
**spec/models/self_review_response_map_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141635</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141635"/>
		<updated>2021-11-20T06:35:49Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Purpose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-Role based reviewing(OSS Project) with the existing E2026-Specialized Rubrics for different topics. While merging, we found out that the code for E2026 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2026.&lt;br /&gt;
&lt;br /&gt;
==Design Strategy==&lt;br /&gt;
This feature was previously implemented and was detailed [http://wiki.expertiza.ncsu.edu/index.php/E1936_Specialized_Rubrics here]. The feature concluded with allowing 4 rubric scenarios for an assignment:&lt;br /&gt;
*Rubric does not vary by round or by topic.&lt;br /&gt;
*Rubric varies by round, but not by topic.&lt;br /&gt;
*Rubric varies by topic, but not by round.&lt;br /&gt;
*Rubric varies by both round and topic.&lt;br /&gt;
However, there were two issues with the implementation:&lt;br /&gt;
*Rubrics in the dropdown were only those created by the logged-in instructor, so the TA wouldn’t be able to see them&lt;br /&gt;
*Rubrics would not be saved after selecting them and saving.&lt;br /&gt;
In light of these issues, [https://github.com/gabalmat/expertiza/commit/23ed2cca2976f55515ea8980646e4432858bf446 changes] to expertiza were made as follows:&lt;br /&gt;
*Two additional columns are added into the Assignment table that determines whether Rubrics varies by either Round or Topic with default values False&lt;br /&gt;
*'''update_assignment_questionnaires''' method is re-implemented&lt;br /&gt;
**Having extra column in the assignment questionnaire table topic_id, no need for deleting all the data and re-writing it again every single time in the DB (this caused the previous implementation to have a delay when selecting **rubrics)&lt;br /&gt;
**The only varying value is questionnaire_id, the rest values may not change from Topics or Rubrics tabs, but can be added&lt;br /&gt;
*There are 4 (four) possible cases for saving and updating data:&lt;br /&gt;
**used_in_round = null and topic_id = null&lt;br /&gt;
**used_in_round = integer and topic_id = null&lt;br /&gt;
**used_in_round = null and topic_id = integer&lt;br /&gt;
**used_in_round = integer and topic_id = integer&lt;br /&gt;
This solved the issue of having rubrics save&lt;br /&gt;
===Problem===&lt;br /&gt;
The feature we have to implement was not fully committed due to the previously mentioned problems, so we have to reincorporate the missing code. However, a resulting issue is the inability for an instructor or TA to use rubrics that they did not create. The current problem can be broken down into the following parts:&lt;br /&gt;
# Integrate the changes made from the original implementation into the current version of Expertiza&lt;br /&gt;
# Allow an instructor/TA to chose rubrics that aren’t only theirs&lt;br /&gt;
# Create and update tests to reflect the changes as needed&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
Our proposed solution keeps the previous implementation, but changes rubric filtering to allow instructors/TAs to use filters that are not theirs. Alongside the changes in the original implementation we propose:&lt;br /&gt;
*Allow an instructor to choose different rubrics for different topics&lt;br /&gt;
**PROBLEM: The drop-downs for selecting rubrics show only those rubrics created by the currently-logged in instructor (per project mentor). &lt;br /&gt;
***SOLUTION: Change the filtering in the questionnaire_options method to reflect the desired filtering.&lt;br /&gt;
***FILE: app/helpers/assignment_helper.rb&lt;br /&gt;
&lt;br /&gt;
==UML Diagram==&lt;br /&gt;
Following the [https://expertiza.csc.ncsu.edu/index.php/E1936_Specialized_Rubrics previous implementations's] footsteps, this diagram depicts the interactions between an instructor and an assignment. The instructor may edit, delete, copy, and other stuff (already existing in Expertiza). Alongside editing topics and due dates, the instructor can edit what rubrics are assigned to an assignment. The highlighted portions are of interest. The topics tab allows instructors to specify which rubric associates with each topic while the rubrics tab lets the instructor determine if the assignment will vary by topic or not.&lt;br /&gt;
&lt;br /&gt;
[[File:Use_case_diagram_1936.png]]&lt;br /&gt;
&lt;br /&gt;
==Files to be modified==&lt;br /&gt;
&lt;br /&gt;
Since our project is to improve upon a previous implementation that was slightly flawed, we will be modifying all of the same files that they previously modified (even if we don’t choose to alter their implementation in that file).&lt;br /&gt;
&lt;br /&gt;
The major modified files from the previous implementation include:&lt;br /&gt;
*'''Controllers'''&lt;br /&gt;
**''assignments_controller.rb'': To refresh the topics list when changing tabs&lt;br /&gt;
**''popup_controller.rb'': To add a potential error message to the rubric view scores popup&lt;br /&gt;
&lt;br /&gt;
*'''Models'''&lt;br /&gt;
**''assignment.rb'': Add methods to determine if an assignment varies by rubric/topic. (will be refactored as part of our change, however)&lt;br /&gt;
**''assignment_form.rb'': Add topic ids to created assignment questionnaires&lt;br /&gt;
**''assignment_questionnaire.rb'': Add topic id to assignment questionnaire model&lt;br /&gt;
**''review_response_map.rb'': To allow finding review questionnaires by topic id&lt;br /&gt;
**''sign_up_topic.rb'': To allow a topic to have many assignment questionnaires attach to it (via topic id)&lt;br /&gt;
&lt;br /&gt;
*'''Views'''&lt;br /&gt;
**''assignments/edit.html.erb'': To move topic editing view to its own file that is rendered as part of assignment edit&lt;br /&gt;
**''edit/_rubrics.html.erb'': Factor out common code into a function, update to use topic id&lt;br /&gt;
**''edit/_topics.html.erb'': Topic editing view that was moved from assignment edit view&lt;br /&gt;
**''popup/view_review_scores_popup.html.erb'': Assignments that vary by topic should not be displayed, instead getting error&lt;br /&gt;
**''sign_up_sheet/_table_line.html.erb'': Add questionnaires to signup sheet table if assignment varies by topic&lt;br /&gt;
&lt;br /&gt;
*'''Helpers'''&lt;br /&gt;
**''assignment_helper.rb'': To add a topic id to the searchable fields for a questionnaire&lt;br /&gt;
&lt;br /&gt;
*'''DB Migrate'''&lt;br /&gt;
**''XXXXXXXXXXX_add_topic_id_to_assignment_questionnaires.rb'': Migration to add topic id to assignment questionnaire schema&lt;br /&gt;
&lt;br /&gt;
*'''All of the related test files to accommodate the above changes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To address the issues brought up with the previous implementation, we will also make the following major modifications:&lt;br /&gt;
*'''Controllers'''&lt;br /&gt;
**''assignments_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''grades_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''popup_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''Models'''&lt;br /&gt;
**''assignment.rb'': Add persisted fields to the assignment for varying by topic/round instead of using methods to determine it&lt;br /&gt;
**''assignment_form.rb'': No longer delete all existing questionnaires on update, update them instead. Now find questionnaire by assignment questionnaire and type rather than assignment/type/round_number/topic_id.&lt;br /&gt;
**''assignment_participant.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''feedback_response_map.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''on_the_fly_calc.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''self_review_response_map.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''tag_prompt_deployment.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''Views'''&lt;br /&gt;
**''edit/_rubrics.html.erb'': Modify to set assignment vary by round/topic fields instead of non persisted flags&lt;br /&gt;
&lt;br /&gt;
*'''Helpers'''&lt;br /&gt;
**''assignment_helper.rb'': Refactor by moving function to find questionnaire / assignment questionnaire to assignment_form.rb. Remove filters that only allow instructors to see rubrics.&lt;br /&gt;
**''grades_helper.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''summary_helper.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''DB Migrate'''&lt;br /&gt;
**''XXXXXXXXX_add_vary_by_topic_to_assignments.rb'': Migration to add “vary by topic” field to assignment&lt;br /&gt;
**''XXXXXXXXX_add_vary_by_round_to_assignments.rb'': Migration to add “vary by round” field to assignment &lt;br /&gt;
&lt;br /&gt;
*'''All of the related test files to accommodate the above changes'''&lt;br /&gt;
&lt;br /&gt;
==Database Flow==&lt;br /&gt;
We will be re-adding the database flow that was added in the previous implementation, linking ''sign_up_topic'' to ''assignment_questionnaire'' via a '''topic_id''' field.&lt;br /&gt;
[[File:HW04_table.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition to that, we will be adding two additional boolean fields to the ''assignment'' schema: '''vary_by_round''' and '''vary_by_topic'''. As discussed earlier, in the previous implementation, these were methods that were called to determine if an assignment varied by round/topic rather than a persisted value. &lt;br /&gt;
&lt;br /&gt;
[[File:E2026DatabaseFlow.png]]&lt;br /&gt;
&lt;br /&gt;
Only a subset of the fields for each table is shown in the diagram because most of the fields are not relevant to these changes and would only serve to distract from the relevant changes. Additions are shown in bold.&lt;br /&gt;
&lt;br /&gt;
==New Implementation==&lt;br /&gt;
While trying to integrate the previous team's implementation of this feature, we discovered that their method for querying AssignmentQuestionnaires (AQs) was flawed.&lt;br /&gt;
&lt;br /&gt;
It would always query for the AQs by assignment id, current round number, and current topic id.&lt;br /&gt;
&lt;br /&gt;
However, if the assignment did not have reviews that vary by round or topic, these values would be nil on the AQ, and the previous query would fail.&lt;br /&gt;
&lt;br /&gt;
To fix this, we modified the ''assignment_questionnaire'' function in the AssignmentForm model to check the Assignment's ''vary_by_round'' and ''vary_by_topic'' flags, and then add the corresponding fields to the query. &lt;br /&gt;
&lt;br /&gt;
This means that:&lt;br /&gt;
* If an assignment does not vary by round or by topic, the query for AQs will be by assignment id only.&lt;br /&gt;
* If the assignment varies by round but not topic, the query for AQs will be by assignment id and round number.&lt;br /&gt;
&lt;br /&gt;
[[File:AQNewImpl.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*As part of previous implementation, the team had introduced the following new RSpec test files. We have retained those file.&lt;br /&gt;
**spec/helpers/assignment_helper_spec.rb&lt;br /&gt;
**spec/models/self_review_response_map_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141634</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141634"/>
		<updated>2021-11-20T06:34:18Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Coverage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-Role based reviewing(OSS Project) with the existing E2161-Specialized Rubrics for different topics. While merging, we found out that the code for E2161 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2161.&lt;br /&gt;
&lt;br /&gt;
==Design Strategy==&lt;br /&gt;
This feature was previously implemented and was detailed [http://wiki.expertiza.ncsu.edu/index.php/E1936_Specialized_Rubrics here]. The feature concluded with allowing 4 rubric scenarios for an assignment:&lt;br /&gt;
*Rubric does not vary by round or by topic.&lt;br /&gt;
*Rubric varies by round, but not by topic.&lt;br /&gt;
*Rubric varies by topic, but not by round.&lt;br /&gt;
*Rubric varies by both round and topic.&lt;br /&gt;
However, there were two issues with the implementation:&lt;br /&gt;
*Rubrics in the dropdown were only those created by the logged-in instructor, so the TA wouldn’t be able to see them&lt;br /&gt;
*Rubrics would not be saved after selecting them and saving.&lt;br /&gt;
In light of these issues, [https://github.com/gabalmat/expertiza/commit/23ed2cca2976f55515ea8980646e4432858bf446 changes] to expertiza were made as follows:&lt;br /&gt;
*Two additional columns are added into the Assignment table that determines whether Rubrics varies by either Round or Topic with default values False&lt;br /&gt;
*'''update_assignment_questionnaires''' method is re-implemented&lt;br /&gt;
**Having extra column in the assignment questionnaire table topic_id, no need for deleting all the data and re-writing it again every single time in the DB (this caused the previous implementation to have a delay when selecting **rubrics)&lt;br /&gt;
**The only varying value is questionnaire_id, the rest values may not change from Topics or Rubrics tabs, but can be added&lt;br /&gt;
*There are 4 (four) possible cases for saving and updating data:&lt;br /&gt;
**used_in_round = null and topic_id = null&lt;br /&gt;
**used_in_round = integer and topic_id = null&lt;br /&gt;
**used_in_round = null and topic_id = integer&lt;br /&gt;
**used_in_round = integer and topic_id = integer&lt;br /&gt;
This solved the issue of having rubrics save&lt;br /&gt;
===Problem===&lt;br /&gt;
The feature we have to implement was not fully committed due to the previously mentioned problems, so we have to reincorporate the missing code. However, a resulting issue is the inability for an instructor or TA to use rubrics that they did not create. The current problem can be broken down into the following parts:&lt;br /&gt;
# Integrate the changes made from the original implementation into the current version of Expertiza&lt;br /&gt;
# Allow an instructor/TA to chose rubrics that aren’t only theirs&lt;br /&gt;
# Create and update tests to reflect the changes as needed&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
Our proposed solution keeps the previous implementation, but changes rubric filtering to allow instructors/TAs to use filters that are not theirs. Alongside the changes in the original implementation we propose:&lt;br /&gt;
*Allow an instructor to choose different rubrics for different topics&lt;br /&gt;
**PROBLEM: The drop-downs for selecting rubrics show only those rubrics created by the currently-logged in instructor (per project mentor). &lt;br /&gt;
***SOLUTION: Change the filtering in the questionnaire_options method to reflect the desired filtering.&lt;br /&gt;
***FILE: app/helpers/assignment_helper.rb&lt;br /&gt;
&lt;br /&gt;
==UML Diagram==&lt;br /&gt;
Following the [https://expertiza.csc.ncsu.edu/index.php/E1936_Specialized_Rubrics previous implementations's] footsteps, this diagram depicts the interactions between an instructor and an assignment. The instructor may edit, delete, copy, and other stuff (already existing in Expertiza). Alongside editing topics and due dates, the instructor can edit what rubrics are assigned to an assignment. The highlighted portions are of interest. The topics tab allows instructors to specify which rubric associates with each topic while the rubrics tab lets the instructor determine if the assignment will vary by topic or not.&lt;br /&gt;
&lt;br /&gt;
[[File:Use_case_diagram_1936.png]]&lt;br /&gt;
&lt;br /&gt;
==Files to be modified==&lt;br /&gt;
&lt;br /&gt;
Since our project is to improve upon a previous implementation that was slightly flawed, we will be modifying all of the same files that they previously modified (even if we don’t choose to alter their implementation in that file).&lt;br /&gt;
&lt;br /&gt;
The major modified files from the previous implementation include:&lt;br /&gt;
*'''Controllers'''&lt;br /&gt;
**''assignments_controller.rb'': To refresh the topics list when changing tabs&lt;br /&gt;
**''popup_controller.rb'': To add a potential error message to the rubric view scores popup&lt;br /&gt;
&lt;br /&gt;
*'''Models'''&lt;br /&gt;
**''assignment.rb'': Add methods to determine if an assignment varies by rubric/topic. (will be refactored as part of our change, however)&lt;br /&gt;
**''assignment_form.rb'': Add topic ids to created assignment questionnaires&lt;br /&gt;
**''assignment_questionnaire.rb'': Add topic id to assignment questionnaire model&lt;br /&gt;
**''review_response_map.rb'': To allow finding review questionnaires by topic id&lt;br /&gt;
**''sign_up_topic.rb'': To allow a topic to have many assignment questionnaires attach to it (via topic id)&lt;br /&gt;
&lt;br /&gt;
*'''Views'''&lt;br /&gt;
**''assignments/edit.html.erb'': To move topic editing view to its own file that is rendered as part of assignment edit&lt;br /&gt;
**''edit/_rubrics.html.erb'': Factor out common code into a function, update to use topic id&lt;br /&gt;
**''edit/_topics.html.erb'': Topic editing view that was moved from assignment edit view&lt;br /&gt;
**''popup/view_review_scores_popup.html.erb'': Assignments that vary by topic should not be displayed, instead getting error&lt;br /&gt;
**''sign_up_sheet/_table_line.html.erb'': Add questionnaires to signup sheet table if assignment varies by topic&lt;br /&gt;
&lt;br /&gt;
*'''Helpers'''&lt;br /&gt;
**''assignment_helper.rb'': To add a topic id to the searchable fields for a questionnaire&lt;br /&gt;
&lt;br /&gt;
*'''DB Migrate'''&lt;br /&gt;
**''XXXXXXXXXXX_add_topic_id_to_assignment_questionnaires.rb'': Migration to add topic id to assignment questionnaire schema&lt;br /&gt;
&lt;br /&gt;
*'''All of the related test files to accommodate the above changes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To address the issues brought up with the previous implementation, we will also make the following major modifications:&lt;br /&gt;
*'''Controllers'''&lt;br /&gt;
**''assignments_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''grades_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''popup_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''Models'''&lt;br /&gt;
**''assignment.rb'': Add persisted fields to the assignment for varying by topic/round instead of using methods to determine it&lt;br /&gt;
**''assignment_form.rb'': No longer delete all existing questionnaires on update, update them instead. Now find questionnaire by assignment questionnaire and type rather than assignment/type/round_number/topic_id.&lt;br /&gt;
**''assignment_participant.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''feedback_response_map.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''on_the_fly_calc.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''self_review_response_map.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''tag_prompt_deployment.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''Views'''&lt;br /&gt;
**''edit/_rubrics.html.erb'': Modify to set assignment vary by round/topic fields instead of non persisted flags&lt;br /&gt;
&lt;br /&gt;
*'''Helpers'''&lt;br /&gt;
**''assignment_helper.rb'': Refactor by moving function to find questionnaire / assignment questionnaire to assignment_form.rb. Remove filters that only allow instructors to see rubrics.&lt;br /&gt;
**''grades_helper.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''summary_helper.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''DB Migrate'''&lt;br /&gt;
**''XXXXXXXXX_add_vary_by_topic_to_assignments.rb'': Migration to add “vary by topic” field to assignment&lt;br /&gt;
**''XXXXXXXXX_add_vary_by_round_to_assignments.rb'': Migration to add “vary by round” field to assignment &lt;br /&gt;
&lt;br /&gt;
*'''All of the related test files to accommodate the above changes'''&lt;br /&gt;
&lt;br /&gt;
==Database Flow==&lt;br /&gt;
We will be re-adding the database flow that was added in the previous implementation, linking ''sign_up_topic'' to ''assignment_questionnaire'' via a '''topic_id''' field.&lt;br /&gt;
[[File:HW04_table.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition to that, we will be adding two additional boolean fields to the ''assignment'' schema: '''vary_by_round''' and '''vary_by_topic'''. As discussed earlier, in the previous implementation, these were methods that were called to determine if an assignment varied by round/topic rather than a persisted value. &lt;br /&gt;
&lt;br /&gt;
[[File:E2026DatabaseFlow.png]]&lt;br /&gt;
&lt;br /&gt;
Only a subset of the fields for each table is shown in the diagram because most of the fields are not relevant to these changes and would only serve to distract from the relevant changes. Additions are shown in bold.&lt;br /&gt;
&lt;br /&gt;
==New Implementation==&lt;br /&gt;
While trying to integrate the previous team's implementation of this feature, we discovered that their method for querying AssignmentQuestionnaires (AQs) was flawed.&lt;br /&gt;
&lt;br /&gt;
It would always query for the AQs by assignment id, current round number, and current topic id.&lt;br /&gt;
&lt;br /&gt;
However, if the assignment did not have reviews that vary by round or topic, these values would be nil on the AQ, and the previous query would fail.&lt;br /&gt;
&lt;br /&gt;
To fix this, we modified the ''assignment_questionnaire'' function in the AssignmentForm model to check the Assignment's ''vary_by_round'' and ''vary_by_topic'' flags, and then add the corresponding fields to the query. &lt;br /&gt;
&lt;br /&gt;
This means that:&lt;br /&gt;
* If an assignment does not vary by round or by topic, the query for AQs will be by assignment id only.&lt;br /&gt;
* If the assignment varies by round but not topic, the query for AQs will be by assignment id and round number.&lt;br /&gt;
&lt;br /&gt;
[[File:AQNewImpl.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*As part of previous implementation, the team had introduced the following new RSpec test files. We have retained those file.&lt;br /&gt;
**spec/helpers/assignment_helper_spec.rb&lt;br /&gt;
**spec/models/self_review_response_map_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141633</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141633"/>
		<updated>2021-11-20T06:33:59Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Future Work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-Role based reviewing(OSS Project) with the existing E2161-Specialized Rubrics for different topics. While merging, we found out that the code for E2161 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2161.&lt;br /&gt;
&lt;br /&gt;
==Design Strategy==&lt;br /&gt;
This feature was previously implemented and was detailed [http://wiki.expertiza.ncsu.edu/index.php/E1936_Specialized_Rubrics here]. The feature concluded with allowing 4 rubric scenarios for an assignment:&lt;br /&gt;
*Rubric does not vary by round or by topic.&lt;br /&gt;
*Rubric varies by round, but not by topic.&lt;br /&gt;
*Rubric varies by topic, but not by round.&lt;br /&gt;
*Rubric varies by both round and topic.&lt;br /&gt;
However, there were two issues with the implementation:&lt;br /&gt;
*Rubrics in the dropdown were only those created by the logged-in instructor, so the TA wouldn’t be able to see them&lt;br /&gt;
*Rubrics would not be saved after selecting them and saving.&lt;br /&gt;
In light of these issues, [https://github.com/gabalmat/expertiza/commit/23ed2cca2976f55515ea8980646e4432858bf446 changes] to expertiza were made as follows:&lt;br /&gt;
*Two additional columns are added into the Assignment table that determines whether Rubrics varies by either Round or Topic with default values False&lt;br /&gt;
*'''update_assignment_questionnaires''' method is re-implemented&lt;br /&gt;
**Having extra column in the assignment questionnaire table topic_id, no need for deleting all the data and re-writing it again every single time in the DB (this caused the previous implementation to have a delay when selecting **rubrics)&lt;br /&gt;
**The only varying value is questionnaire_id, the rest values may not change from Topics or Rubrics tabs, but can be added&lt;br /&gt;
*There are 4 (four) possible cases for saving and updating data:&lt;br /&gt;
**used_in_round = null and topic_id = null&lt;br /&gt;
**used_in_round = integer and topic_id = null&lt;br /&gt;
**used_in_round = null and topic_id = integer&lt;br /&gt;
**used_in_round = integer and topic_id = integer&lt;br /&gt;
This solved the issue of having rubrics save&lt;br /&gt;
===Problem===&lt;br /&gt;
The feature we have to implement was not fully committed due to the previously mentioned problems, so we have to reincorporate the missing code. However, a resulting issue is the inability for an instructor or TA to use rubrics that they did not create. The current problem can be broken down into the following parts:&lt;br /&gt;
# Integrate the changes made from the original implementation into the current version of Expertiza&lt;br /&gt;
# Allow an instructor/TA to chose rubrics that aren’t only theirs&lt;br /&gt;
# Create and update tests to reflect the changes as needed&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
Our proposed solution keeps the previous implementation, but changes rubric filtering to allow instructors/TAs to use filters that are not theirs. Alongside the changes in the original implementation we propose:&lt;br /&gt;
*Allow an instructor to choose different rubrics for different topics&lt;br /&gt;
**PROBLEM: The drop-downs for selecting rubrics show only those rubrics created by the currently-logged in instructor (per project mentor). &lt;br /&gt;
***SOLUTION: Change the filtering in the questionnaire_options method to reflect the desired filtering.&lt;br /&gt;
***FILE: app/helpers/assignment_helper.rb&lt;br /&gt;
&lt;br /&gt;
==UML Diagram==&lt;br /&gt;
Following the [https://expertiza.csc.ncsu.edu/index.php/E1936_Specialized_Rubrics previous implementations's] footsteps, this diagram depicts the interactions between an instructor and an assignment. The instructor may edit, delete, copy, and other stuff (already existing in Expertiza). Alongside editing topics and due dates, the instructor can edit what rubrics are assigned to an assignment. The highlighted portions are of interest. The topics tab allows instructors to specify which rubric associates with each topic while the rubrics tab lets the instructor determine if the assignment will vary by topic or not.&lt;br /&gt;
&lt;br /&gt;
[[File:Use_case_diagram_1936.png]]&lt;br /&gt;
&lt;br /&gt;
==Files to be modified==&lt;br /&gt;
&lt;br /&gt;
Since our project is to improve upon a previous implementation that was slightly flawed, we will be modifying all of the same files that they previously modified (even if we don’t choose to alter their implementation in that file).&lt;br /&gt;
&lt;br /&gt;
The major modified files from the previous implementation include:&lt;br /&gt;
*'''Controllers'''&lt;br /&gt;
**''assignments_controller.rb'': To refresh the topics list when changing tabs&lt;br /&gt;
**''popup_controller.rb'': To add a potential error message to the rubric view scores popup&lt;br /&gt;
&lt;br /&gt;
*'''Models'''&lt;br /&gt;
**''assignment.rb'': Add methods to determine if an assignment varies by rubric/topic. (will be refactored as part of our change, however)&lt;br /&gt;
**''assignment_form.rb'': Add topic ids to created assignment questionnaires&lt;br /&gt;
**''assignment_questionnaire.rb'': Add topic id to assignment questionnaire model&lt;br /&gt;
**''review_response_map.rb'': To allow finding review questionnaires by topic id&lt;br /&gt;
**''sign_up_topic.rb'': To allow a topic to have many assignment questionnaires attach to it (via topic id)&lt;br /&gt;
&lt;br /&gt;
*'''Views'''&lt;br /&gt;
**''assignments/edit.html.erb'': To move topic editing view to its own file that is rendered as part of assignment edit&lt;br /&gt;
**''edit/_rubrics.html.erb'': Factor out common code into a function, update to use topic id&lt;br /&gt;
**''edit/_topics.html.erb'': Topic editing view that was moved from assignment edit view&lt;br /&gt;
**''popup/view_review_scores_popup.html.erb'': Assignments that vary by topic should not be displayed, instead getting error&lt;br /&gt;
**''sign_up_sheet/_table_line.html.erb'': Add questionnaires to signup sheet table if assignment varies by topic&lt;br /&gt;
&lt;br /&gt;
*'''Helpers'''&lt;br /&gt;
**''assignment_helper.rb'': To add a topic id to the searchable fields for a questionnaire&lt;br /&gt;
&lt;br /&gt;
*'''DB Migrate'''&lt;br /&gt;
**''XXXXXXXXXXX_add_topic_id_to_assignment_questionnaires.rb'': Migration to add topic id to assignment questionnaire schema&lt;br /&gt;
&lt;br /&gt;
*'''All of the related test files to accommodate the above changes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To address the issues brought up with the previous implementation, we will also make the following major modifications:&lt;br /&gt;
*'''Controllers'''&lt;br /&gt;
**''assignments_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''grades_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''popup_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''Models'''&lt;br /&gt;
**''assignment.rb'': Add persisted fields to the assignment for varying by topic/round instead of using methods to determine it&lt;br /&gt;
**''assignment_form.rb'': No longer delete all existing questionnaires on update, update them instead. Now find questionnaire by assignment questionnaire and type rather than assignment/type/round_number/topic_id.&lt;br /&gt;
**''assignment_participant.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''feedback_response_map.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''on_the_fly_calc.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''self_review_response_map.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''tag_prompt_deployment.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''Views'''&lt;br /&gt;
**''edit/_rubrics.html.erb'': Modify to set assignment vary by round/topic fields instead of non persisted flags&lt;br /&gt;
&lt;br /&gt;
*'''Helpers'''&lt;br /&gt;
**''assignment_helper.rb'': Refactor by moving function to find questionnaire / assignment questionnaire to assignment_form.rb. Remove filters that only allow instructors to see rubrics.&lt;br /&gt;
**''grades_helper.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''summary_helper.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''DB Migrate'''&lt;br /&gt;
**''XXXXXXXXX_add_vary_by_topic_to_assignments.rb'': Migration to add “vary by topic” field to assignment&lt;br /&gt;
**''XXXXXXXXX_add_vary_by_round_to_assignments.rb'': Migration to add “vary by round” field to assignment &lt;br /&gt;
&lt;br /&gt;
*'''All of the related test files to accommodate the above changes'''&lt;br /&gt;
&lt;br /&gt;
==Database Flow==&lt;br /&gt;
We will be re-adding the database flow that was added in the previous implementation, linking ''sign_up_topic'' to ''assignment_questionnaire'' via a '''topic_id''' field.&lt;br /&gt;
[[File:HW04_table.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition to that, we will be adding two additional boolean fields to the ''assignment'' schema: '''vary_by_round''' and '''vary_by_topic'''. As discussed earlier, in the previous implementation, these were methods that were called to determine if an assignment varied by round/topic rather than a persisted value. &lt;br /&gt;
&lt;br /&gt;
[[File:E2026DatabaseFlow.png]]&lt;br /&gt;
&lt;br /&gt;
Only a subset of the fields for each table is shown in the diagram because most of the fields are not relevant to these changes and would only serve to distract from the relevant changes. Additions are shown in bold.&lt;br /&gt;
&lt;br /&gt;
==New Implementation==&lt;br /&gt;
While trying to integrate the previous team's implementation of this feature, we discovered that their method for querying AssignmentQuestionnaires (AQs) was flawed.&lt;br /&gt;
&lt;br /&gt;
It would always query for the AQs by assignment id, current round number, and current topic id.&lt;br /&gt;
&lt;br /&gt;
However, if the assignment did not have reviews that vary by round or topic, these values would be nil on the AQ, and the previous query would fail.&lt;br /&gt;
&lt;br /&gt;
To fix this, we modified the ''assignment_questionnaire'' function in the AssignmentForm model to check the Assignment's ''vary_by_round'' and ''vary_by_topic'' flags, and then add the corresponding fields to the query. &lt;br /&gt;
&lt;br /&gt;
This means that:&lt;br /&gt;
* If an assignment does not vary by round or by topic, the query for AQs will be by assignment id only.&lt;br /&gt;
* If the assignment varies by round but not topic, the query for AQs will be by assignment id and round number.&lt;br /&gt;
&lt;br /&gt;
[[File:AQNewImpl.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*As part of previous implementation, the team had introduced the following new RSpec test files. We have retained those file.&lt;br /&gt;
**spec/helpers/assignment_helper_spec.rb&lt;br /&gt;
**spec/models/self_review_response_map_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
===Coverage===&lt;br /&gt;
All rspec tests part of [https://travis-ci.org/github/expertiza/expertiza/builds/679301186 Travis CI build] has passed. The [https://coveralls.io/jobs/61850924 code coverage] has increased by 10.9% to 41.425%.&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141632</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141632"/>
		<updated>2021-11-20T06:29:25Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Previous Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-Role based reviewing(OSS Project) with the existing E2161-Specialized Rubrics for different topics. While merging, we found out that the code for E2161 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2161.&lt;br /&gt;
&lt;br /&gt;
==Design Strategy==&lt;br /&gt;
This feature was previously implemented and was detailed [http://wiki.expertiza.ncsu.edu/index.php/E1936_Specialized_Rubrics here]. The feature concluded with allowing 4 rubric scenarios for an assignment:&lt;br /&gt;
*Rubric does not vary by round or by topic.&lt;br /&gt;
*Rubric varies by round, but not by topic.&lt;br /&gt;
*Rubric varies by topic, but not by round.&lt;br /&gt;
*Rubric varies by both round and topic.&lt;br /&gt;
However, there were two issues with the implementation:&lt;br /&gt;
*Rubrics in the dropdown were only those created by the logged-in instructor, so the TA wouldn’t be able to see them&lt;br /&gt;
*Rubrics would not be saved after selecting them and saving.&lt;br /&gt;
In light of these issues, [https://github.com/gabalmat/expertiza/commit/23ed2cca2976f55515ea8980646e4432858bf446 changes] to expertiza were made as follows:&lt;br /&gt;
*Two additional columns are added into the Assignment table that determines whether Rubrics varies by either Round or Topic with default values False&lt;br /&gt;
*'''update_assignment_questionnaires''' method is re-implemented&lt;br /&gt;
**Having extra column in the assignment questionnaire table topic_id, no need for deleting all the data and re-writing it again every single time in the DB (this caused the previous implementation to have a delay when selecting **rubrics)&lt;br /&gt;
**The only varying value is questionnaire_id, the rest values may not change from Topics or Rubrics tabs, but can be added&lt;br /&gt;
*There are 4 (four) possible cases for saving and updating data:&lt;br /&gt;
**used_in_round = null and topic_id = null&lt;br /&gt;
**used_in_round = integer and topic_id = null&lt;br /&gt;
**used_in_round = null and topic_id = integer&lt;br /&gt;
**used_in_round = integer and topic_id = integer&lt;br /&gt;
This solved the issue of having rubrics save&lt;br /&gt;
===Problem===&lt;br /&gt;
The feature we have to implement was not fully committed due to the previously mentioned problems, so we have to reincorporate the missing code. However, a resulting issue is the inability for an instructor or TA to use rubrics that they did not create. The current problem can be broken down into the following parts:&lt;br /&gt;
# Integrate the changes made from the original implementation into the current version of Expertiza&lt;br /&gt;
# Allow an instructor/TA to chose rubrics that aren’t only theirs&lt;br /&gt;
# Create and update tests to reflect the changes as needed&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
Our proposed solution keeps the previous implementation, but changes rubric filtering to allow instructors/TAs to use filters that are not theirs. Alongside the changes in the original implementation we propose:&lt;br /&gt;
*Allow an instructor to choose different rubrics for different topics&lt;br /&gt;
**PROBLEM: The drop-downs for selecting rubrics show only those rubrics created by the currently-logged in instructor (per project mentor). &lt;br /&gt;
***SOLUTION: Change the filtering in the questionnaire_options method to reflect the desired filtering.&lt;br /&gt;
***FILE: app/helpers/assignment_helper.rb&lt;br /&gt;
&lt;br /&gt;
==UML Diagram==&lt;br /&gt;
Following the [https://expertiza.csc.ncsu.edu/index.php/E1936_Specialized_Rubrics previous implementations's] footsteps, this diagram depicts the interactions between an instructor and an assignment. The instructor may edit, delete, copy, and other stuff (already existing in Expertiza). Alongside editing topics and due dates, the instructor can edit what rubrics are assigned to an assignment. The highlighted portions are of interest. The topics tab allows instructors to specify which rubric associates with each topic while the rubrics tab lets the instructor determine if the assignment will vary by topic or not.&lt;br /&gt;
&lt;br /&gt;
[[File:Use_case_diagram_1936.png]]&lt;br /&gt;
&lt;br /&gt;
==Files to be modified==&lt;br /&gt;
&lt;br /&gt;
Since our project is to improve upon a previous implementation that was slightly flawed, we will be modifying all of the same files that they previously modified (even if we don’t choose to alter their implementation in that file).&lt;br /&gt;
&lt;br /&gt;
The major modified files from the previous implementation include:&lt;br /&gt;
*'''Controllers'''&lt;br /&gt;
**''assignments_controller.rb'': To refresh the topics list when changing tabs&lt;br /&gt;
**''popup_controller.rb'': To add a potential error message to the rubric view scores popup&lt;br /&gt;
&lt;br /&gt;
*'''Models'''&lt;br /&gt;
**''assignment.rb'': Add methods to determine if an assignment varies by rubric/topic. (will be refactored as part of our change, however)&lt;br /&gt;
**''assignment_form.rb'': Add topic ids to created assignment questionnaires&lt;br /&gt;
**''assignment_questionnaire.rb'': Add topic id to assignment questionnaire model&lt;br /&gt;
**''review_response_map.rb'': To allow finding review questionnaires by topic id&lt;br /&gt;
**''sign_up_topic.rb'': To allow a topic to have many assignment questionnaires attach to it (via topic id)&lt;br /&gt;
&lt;br /&gt;
*'''Views'''&lt;br /&gt;
**''assignments/edit.html.erb'': To move topic editing view to its own file that is rendered as part of assignment edit&lt;br /&gt;
**''edit/_rubrics.html.erb'': Factor out common code into a function, update to use topic id&lt;br /&gt;
**''edit/_topics.html.erb'': Topic editing view that was moved from assignment edit view&lt;br /&gt;
**''popup/view_review_scores_popup.html.erb'': Assignments that vary by topic should not be displayed, instead getting error&lt;br /&gt;
**''sign_up_sheet/_table_line.html.erb'': Add questionnaires to signup sheet table if assignment varies by topic&lt;br /&gt;
&lt;br /&gt;
*'''Helpers'''&lt;br /&gt;
**''assignment_helper.rb'': To add a topic id to the searchable fields for a questionnaire&lt;br /&gt;
&lt;br /&gt;
*'''DB Migrate'''&lt;br /&gt;
**''XXXXXXXXXXX_add_topic_id_to_assignment_questionnaires.rb'': Migration to add topic id to assignment questionnaire schema&lt;br /&gt;
&lt;br /&gt;
*'''All of the related test files to accommodate the above changes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To address the issues brought up with the previous implementation, we will also make the following major modifications:&lt;br /&gt;
*'''Controllers'''&lt;br /&gt;
**''assignments_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''grades_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''popup_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''Models'''&lt;br /&gt;
**''assignment.rb'': Add persisted fields to the assignment for varying by topic/round instead of using methods to determine it&lt;br /&gt;
**''assignment_form.rb'': No longer delete all existing questionnaires on update, update them instead. Now find questionnaire by assignment questionnaire and type rather than assignment/type/round_number/topic_id.&lt;br /&gt;
**''assignment_participant.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''feedback_response_map.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''on_the_fly_calc.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''self_review_response_map.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''tag_prompt_deployment.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''Views'''&lt;br /&gt;
**''edit/_rubrics.html.erb'': Modify to set assignment vary by round/topic fields instead of non persisted flags&lt;br /&gt;
&lt;br /&gt;
*'''Helpers'''&lt;br /&gt;
**''assignment_helper.rb'': Refactor by moving function to find questionnaire / assignment questionnaire to assignment_form.rb. Remove filters that only allow instructors to see rubrics.&lt;br /&gt;
**''grades_helper.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''summary_helper.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''DB Migrate'''&lt;br /&gt;
**''XXXXXXXXX_add_vary_by_topic_to_assignments.rb'': Migration to add “vary by topic” field to assignment&lt;br /&gt;
**''XXXXXXXXX_add_vary_by_round_to_assignments.rb'': Migration to add “vary by round” field to assignment &lt;br /&gt;
&lt;br /&gt;
*'''All of the related test files to accommodate the above changes'''&lt;br /&gt;
&lt;br /&gt;
==Database Flow==&lt;br /&gt;
We will be re-adding the database flow that was added in the previous implementation, linking ''sign_up_topic'' to ''assignment_questionnaire'' via a '''topic_id''' field.&lt;br /&gt;
[[File:HW04_table.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition to that, we will be adding two additional boolean fields to the ''assignment'' schema: '''vary_by_round''' and '''vary_by_topic'''. As discussed earlier, in the previous implementation, these were methods that were called to determine if an assignment varied by round/topic rather than a persisted value. &lt;br /&gt;
&lt;br /&gt;
[[File:E2026DatabaseFlow.png]]&lt;br /&gt;
&lt;br /&gt;
Only a subset of the fields for each table is shown in the diagram because most of the fields are not relevant to these changes and would only serve to distract from the relevant changes. Additions are shown in bold.&lt;br /&gt;
&lt;br /&gt;
==New Implementation==&lt;br /&gt;
While trying to integrate the previous team's implementation of this feature, we discovered that their method for querying AssignmentQuestionnaires (AQs) was flawed.&lt;br /&gt;
&lt;br /&gt;
It would always query for the AQs by assignment id, current round number, and current topic id.&lt;br /&gt;
&lt;br /&gt;
However, if the assignment did not have reviews that vary by round or topic, these values would be nil on the AQ, and the previous query would fail.&lt;br /&gt;
&lt;br /&gt;
To fix this, we modified the ''assignment_questionnaire'' function in the AssignmentForm model to check the Assignment's ''vary_by_round'' and ''vary_by_topic'' flags, and then add the corresponding fields to the query. &lt;br /&gt;
&lt;br /&gt;
This means that:&lt;br /&gt;
* If an assignment does not vary by round or by topic, the query for AQs will be by assignment id only.&lt;br /&gt;
* If the assignment varies by round but not topic, the query for AQs will be by assignment id and round number.&lt;br /&gt;
&lt;br /&gt;
[[File:AQNewImpl.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*As part of previous implementation, the team had introduced the following new RSpec test files. We have retained those file.&lt;br /&gt;
**spec/helpers/assignment_helper_spec.rb&lt;br /&gt;
**spec/models/self_review_response_map_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
===Coverage===&lt;br /&gt;
All rspec tests part of [https://travis-ci.org/github/expertiza/expertiza/builds/679301186 Travis CI build] has passed. The [https://coveralls.io/jobs/61850924 code coverage] has increased by 10.9% to 41.425%.&lt;br /&gt;
&lt;br /&gt;
== Future Work==&lt;br /&gt;
After merging the previous team's work with expertiza, several RSpec tests failed.&lt;br /&gt;
*This was due to how questionnaires were retrieved/found for an assignment. Staggered deadlines also rely on finding questionnaires using topic id, which isn't handled until after an assignment is made.&lt;br /&gt;
*'''Resolved'''&lt;br /&gt;
However, undoing filtering results in even more errors across models, controllers, and forms. This feature, however is a quality of life improvement and is less of a priority.&lt;br /&gt;
* '''Unresolved'''&lt;br /&gt;
Another quality of life improvement is that staggered deadlines and topics cannot be added to an assignment until after the assignment has been created and saved.&lt;br /&gt;
* This issue exists on expertiza's beta branch itself, separate from our changes.&lt;br /&gt;
*'''Unresolved'''&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141631</id>
		<title>CSC/ECE 517 Fall 2021 - E2161. Merge code for role based reviewing with code for topic specific rubrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2161._Merge_code_for_role_based_reviewing_with_code_for_topic_specific_rubrics&amp;diff=141631"/>
		<updated>2021-11-20T06:29:01Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* Purpose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains description of changes designed and implemented for [https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.8s6o9jnnxj0p E2161. Merge code for role-based reviewing with code for topic-specific rubrics], a Final Project for CSC/ECE 517, Fall 2021.&lt;br /&gt;
== Purpose==&lt;br /&gt;
In CSC/ECE 517, there are Expertiza-based course projects, Mozilla-based course projects, etc. However, currently, we can only specify one kind of rubric for all kinds of course projects. This means that refactoring projects, testing projects, and Mozilla projects need to use the same rubric.  We hope we could specify different rubrics to be used with different kinds of course projects.&lt;br /&gt;
&lt;br /&gt;
The project objective is to merge E2147-Role based reviewing(OSS Project) with the existing E2161-Specialized Rubrics for different topics. While merging, we found out that the code for E2161 has already been merged on Expertiza beta branch and so now the actual implementation is to write test cases for both E2147 and E2161.&lt;br /&gt;
&lt;br /&gt;
== Previous Implementation==&lt;br /&gt;
All aspects of previous implementation were good, and their design was well appreciated. Their changes were also merged to '''expertiza:beta''' branch, but were later reverted since the specialized rubrics weren’t saved in the database. This [https://github.com/expertiza/expertiza/issues/1475 github issue] provides a detailed explanation to the problem.&lt;br /&gt;
&lt;br /&gt;
For us to get started, we were provided with following links from previous implementation:&lt;br /&gt;
*http://wiki.expertiza.ncsu.edu/index.php/E1936_Specialized_Rubrics&lt;br /&gt;
*https://github.com/gabalmat/expertiza/tree/beta&lt;br /&gt;
*https://github.com/expertiza/expertiza/pull/1444&lt;br /&gt;
*https://www.youtube.com/watch?v=F7nQsIUspQM&lt;br /&gt;
&lt;br /&gt;
==Design Strategy==&lt;br /&gt;
This feature was previously implemented and was detailed [http://wiki.expertiza.ncsu.edu/index.php/E1936_Specialized_Rubrics here]. The feature concluded with allowing 4 rubric scenarios for an assignment:&lt;br /&gt;
*Rubric does not vary by round or by topic.&lt;br /&gt;
*Rubric varies by round, but not by topic.&lt;br /&gt;
*Rubric varies by topic, but not by round.&lt;br /&gt;
*Rubric varies by both round and topic.&lt;br /&gt;
However, there were two issues with the implementation:&lt;br /&gt;
*Rubrics in the dropdown were only those created by the logged-in instructor, so the TA wouldn’t be able to see them&lt;br /&gt;
*Rubrics would not be saved after selecting them and saving.&lt;br /&gt;
In light of these issues, [https://github.com/gabalmat/expertiza/commit/23ed2cca2976f55515ea8980646e4432858bf446 changes] to expertiza were made as follows:&lt;br /&gt;
*Two additional columns are added into the Assignment table that determines whether Rubrics varies by either Round or Topic with default values False&lt;br /&gt;
*'''update_assignment_questionnaires''' method is re-implemented&lt;br /&gt;
**Having extra column in the assignment questionnaire table topic_id, no need for deleting all the data and re-writing it again every single time in the DB (this caused the previous implementation to have a delay when selecting **rubrics)&lt;br /&gt;
**The only varying value is questionnaire_id, the rest values may not change from Topics or Rubrics tabs, but can be added&lt;br /&gt;
*There are 4 (four) possible cases for saving and updating data:&lt;br /&gt;
**used_in_round = null and topic_id = null&lt;br /&gt;
**used_in_round = integer and topic_id = null&lt;br /&gt;
**used_in_round = null and topic_id = integer&lt;br /&gt;
**used_in_round = integer and topic_id = integer&lt;br /&gt;
This solved the issue of having rubrics save&lt;br /&gt;
===Problem===&lt;br /&gt;
The feature we have to implement was not fully committed due to the previously mentioned problems, so we have to reincorporate the missing code. However, a resulting issue is the inability for an instructor or TA to use rubrics that they did not create. The current problem can be broken down into the following parts:&lt;br /&gt;
# Integrate the changes made from the original implementation into the current version of Expertiza&lt;br /&gt;
# Allow an instructor/TA to chose rubrics that aren’t only theirs&lt;br /&gt;
# Create and update tests to reflect the changes as needed&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
Our proposed solution keeps the previous implementation, but changes rubric filtering to allow instructors/TAs to use filters that are not theirs. Alongside the changes in the original implementation we propose:&lt;br /&gt;
*Allow an instructor to choose different rubrics for different topics&lt;br /&gt;
**PROBLEM: The drop-downs for selecting rubrics show only those rubrics created by the currently-logged in instructor (per project mentor). &lt;br /&gt;
***SOLUTION: Change the filtering in the questionnaire_options method to reflect the desired filtering.&lt;br /&gt;
***FILE: app/helpers/assignment_helper.rb&lt;br /&gt;
&lt;br /&gt;
==UML Diagram==&lt;br /&gt;
Following the [https://expertiza.csc.ncsu.edu/index.php/E1936_Specialized_Rubrics previous implementations's] footsteps, this diagram depicts the interactions between an instructor and an assignment. The instructor may edit, delete, copy, and other stuff (already existing in Expertiza). Alongside editing topics and due dates, the instructor can edit what rubrics are assigned to an assignment. The highlighted portions are of interest. The topics tab allows instructors to specify which rubric associates with each topic while the rubrics tab lets the instructor determine if the assignment will vary by topic or not.&lt;br /&gt;
&lt;br /&gt;
[[File:Use_case_diagram_1936.png]]&lt;br /&gt;
&lt;br /&gt;
==Files to be modified==&lt;br /&gt;
&lt;br /&gt;
Since our project is to improve upon a previous implementation that was slightly flawed, we will be modifying all of the same files that they previously modified (even if we don’t choose to alter their implementation in that file).&lt;br /&gt;
&lt;br /&gt;
The major modified files from the previous implementation include:&lt;br /&gt;
*'''Controllers'''&lt;br /&gt;
**''assignments_controller.rb'': To refresh the topics list when changing tabs&lt;br /&gt;
**''popup_controller.rb'': To add a potential error message to the rubric view scores popup&lt;br /&gt;
&lt;br /&gt;
*'''Models'''&lt;br /&gt;
**''assignment.rb'': Add methods to determine if an assignment varies by rubric/topic. (will be refactored as part of our change, however)&lt;br /&gt;
**''assignment_form.rb'': Add topic ids to created assignment questionnaires&lt;br /&gt;
**''assignment_questionnaire.rb'': Add topic id to assignment questionnaire model&lt;br /&gt;
**''review_response_map.rb'': To allow finding review questionnaires by topic id&lt;br /&gt;
**''sign_up_topic.rb'': To allow a topic to have many assignment questionnaires attach to it (via topic id)&lt;br /&gt;
&lt;br /&gt;
*'''Views'''&lt;br /&gt;
**''assignments/edit.html.erb'': To move topic editing view to its own file that is rendered as part of assignment edit&lt;br /&gt;
**''edit/_rubrics.html.erb'': Factor out common code into a function, update to use topic id&lt;br /&gt;
**''edit/_topics.html.erb'': Topic editing view that was moved from assignment edit view&lt;br /&gt;
**''popup/view_review_scores_popup.html.erb'': Assignments that vary by topic should not be displayed, instead getting error&lt;br /&gt;
**''sign_up_sheet/_table_line.html.erb'': Add questionnaires to signup sheet table if assignment varies by topic&lt;br /&gt;
&lt;br /&gt;
*'''Helpers'''&lt;br /&gt;
**''assignment_helper.rb'': To add a topic id to the searchable fields for a questionnaire&lt;br /&gt;
&lt;br /&gt;
*'''DB Migrate'''&lt;br /&gt;
**''XXXXXXXXXXX_add_topic_id_to_assignment_questionnaires.rb'': Migration to add topic id to assignment questionnaire schema&lt;br /&gt;
&lt;br /&gt;
*'''All of the related test files to accommodate the above changes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To address the issues brought up with the previous implementation, we will also make the following major modifications:&lt;br /&gt;
*'''Controllers'''&lt;br /&gt;
**''assignments_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''grades_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''popup_controller.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''Models'''&lt;br /&gt;
**''assignment.rb'': Add persisted fields to the assignment for varying by topic/round instead of using methods to determine it&lt;br /&gt;
**''assignment_form.rb'': No longer delete all existing questionnaires on update, update them instead. Now find questionnaire by assignment questionnaire and type rather than assignment/type/round_number/topic_id.&lt;br /&gt;
**''assignment_participant.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''feedback_response_map.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''on_the_fly_calc.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''self_review_response_map.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''tag_prompt_deployment.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''Views'''&lt;br /&gt;
**''edit/_rubrics.html.erb'': Modify to set assignment vary by round/topic fields instead of non persisted flags&lt;br /&gt;
&lt;br /&gt;
*'''Helpers'''&lt;br /&gt;
**''assignment_helper.rb'': Refactor by moving function to find questionnaire / assignment questionnaire to assignment_form.rb. Remove filters that only allow instructors to see rubrics.&lt;br /&gt;
**''grades_helper.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
**''summary_helper.rb'': Refactor to use the persisted assignment fields for varying by topic/round instead of using methods&lt;br /&gt;
&lt;br /&gt;
*'''DB Migrate'''&lt;br /&gt;
**''XXXXXXXXX_add_vary_by_topic_to_assignments.rb'': Migration to add “vary by topic” field to assignment&lt;br /&gt;
**''XXXXXXXXX_add_vary_by_round_to_assignments.rb'': Migration to add “vary by round” field to assignment &lt;br /&gt;
&lt;br /&gt;
*'''All of the related test files to accommodate the above changes'''&lt;br /&gt;
&lt;br /&gt;
==Database Flow==&lt;br /&gt;
We will be re-adding the database flow that was added in the previous implementation, linking ''sign_up_topic'' to ''assignment_questionnaire'' via a '''topic_id''' field.&lt;br /&gt;
[[File:HW04_table.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition to that, we will be adding two additional boolean fields to the ''assignment'' schema: '''vary_by_round''' and '''vary_by_topic'''. As discussed earlier, in the previous implementation, these were methods that were called to determine if an assignment varied by round/topic rather than a persisted value. &lt;br /&gt;
&lt;br /&gt;
[[File:E2026DatabaseFlow.png]]&lt;br /&gt;
&lt;br /&gt;
Only a subset of the fields for each table is shown in the diagram because most of the fields are not relevant to these changes and would only serve to distract from the relevant changes. Additions are shown in bold.&lt;br /&gt;
&lt;br /&gt;
==New Implementation==&lt;br /&gt;
While trying to integrate the previous team's implementation of this feature, we discovered that their method for querying AssignmentQuestionnaires (AQs) was flawed.&lt;br /&gt;
&lt;br /&gt;
It would always query for the AQs by assignment id, current round number, and current topic id.&lt;br /&gt;
&lt;br /&gt;
However, if the assignment did not have reviews that vary by round or topic, these values would be nil on the AQ, and the previous query would fail.&lt;br /&gt;
&lt;br /&gt;
To fix this, we modified the ''assignment_questionnaire'' function in the AssignmentForm model to check the Assignment's ''vary_by_round'' and ''vary_by_topic'' flags, and then add the corresponding fields to the query. &lt;br /&gt;
&lt;br /&gt;
This means that:&lt;br /&gt;
* If an assignment does not vary by round or by topic, the query for AQs will be by assignment id only.&lt;br /&gt;
* If the assignment varies by round but not topic, the query for AQs will be by assignment id and round number.&lt;br /&gt;
&lt;br /&gt;
[[File:AQNewImpl.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
As part of our implementation, we modified existing code as well as added new code. To ensure that existing functionality was not broken, and new functionality worked as expected, we used the following Test Strategy (which was also used by previous team):&lt;br /&gt;
===Run and pass existing RSpec Tests===&lt;br /&gt;
*The following existing RSpec test files have been modified and they pass as part of testing:&lt;br /&gt;
**spec/controllers/assignments_controller_spec.rb&lt;br /&gt;
**spec/controllers/questionnaires_controller_spec.rb&lt;br /&gt;
**spec/controllers/response_controller_spec.rb&lt;br /&gt;
**spec/factories/factories.rb&lt;br /&gt;
**spec/features/assignment_creation_spec.rb&lt;br /&gt;
**spec/features/quiz_spec.rb&lt;br /&gt;
**spec/features/staggered_deadline_spec.rb&lt;br /&gt;
**spec/models/assignment_form_spec.rb&lt;br /&gt;
**spec/models/assignment_spec.rb&lt;br /&gt;
**spec/models/on_the_fly_calc_spec.rb&lt;br /&gt;
**spec/models/response_spec.rb&lt;br /&gt;
**spec/models/review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Develop New RSpec Tests===&lt;br /&gt;
*As part of previous implementation, the team had introduced the following new RSpec test files. We have retained those file.&lt;br /&gt;
**spec/helpers/assignment_helper_spec.rb&lt;br /&gt;
**spec/models/self_review_response_map_spec.rb&lt;br /&gt;
*All these rspec tests passed.&lt;br /&gt;
&lt;br /&gt;
===Manual Testing in Expertiza UI===&lt;br /&gt;
Here we describe manual UI Testing steps to edit an existing assignment to allow it have to specialized rubrics for different topic types. These steps are also shown in recorded demo video.&lt;br /&gt;
*Login to Expertiza using instructor account (For testing, username: '''instructor6''', password: '''password''')&lt;br /&gt;
*Click on Manage &amp;gt; Assignments&lt;br /&gt;
*Click on Edit option for any assignment, you should get following view. Make sure '''Has topics?''' box is checked.&lt;br /&gt;
[[File:Assignment edit 3.png]]&lt;br /&gt;
*Click on Rubrics tab. You will see 2 checkboxes ('''Review rubric varies by round?''', '''Review rubric varies by topic?''')&lt;br /&gt;
*Check the box for '''Review rubric varies by topic?'''&lt;br /&gt;
*Go to Topics tab and verify that there is dropdown menu beside each Topic.&lt;br /&gt;
*Select a rubric from dropdown menu, and click '''Save'''&lt;br /&gt;
[[File:Topics rubric 2.png]]&lt;br /&gt;
*Go back to Home, and select the same assignment to edit. When you click on Topics tab, you should see the rubric you had selected.&lt;br /&gt;
&lt;br /&gt;
===Coverage===&lt;br /&gt;
All rspec tests part of [https://travis-ci.org/github/expertiza/expertiza/builds/679301186 Travis CI build] has passed. The [https://coveralls.io/jobs/61850924 code coverage] has increased by 10.9% to 41.425%.&lt;br /&gt;
&lt;br /&gt;
== Future Work==&lt;br /&gt;
After merging the previous team's work with expertiza, several RSpec tests failed.&lt;br /&gt;
*This was due to how questionnaires were retrieved/found for an assignment. Staggered deadlines also rely on finding questionnaires using topic id, which isn't handled until after an assignment is made.&lt;br /&gt;
*'''Resolved'''&lt;br /&gt;
However, undoing filtering results in even more errors across models, controllers, and forms. This feature, however is a quality of life improvement and is less of a priority.&lt;br /&gt;
* '''Unresolved'''&lt;br /&gt;
Another quality of life improvement is that staggered deadlines and topics cannot be added to an assignment until after the assignment has been created and saved.&lt;br /&gt;
* This issue exists on expertiza's beta branch itself, separate from our changes.&lt;br /&gt;
*'''Unresolved'''&lt;br /&gt;
&lt;br /&gt;
==Team Information==&lt;br /&gt;
* Naman Shrimali&lt;br /&gt;
* Kanchan Rawat&lt;br /&gt;
* Subodh Thota&lt;br /&gt;
* Andrew Shipman&lt;br /&gt;
Mentor : Prof. Edward F. Gehringer&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing&amp;diff=140854</id>
		<title>CSC/ECE 517 Fall 2021 - E2147. Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing&amp;diff=140854"/>
		<updated>2021-11-04T02:15:08Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E2147. Role-based reviewing==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application through which students can submit and peer-review learning objects (articles, code, web sites, etc). The Expertiza project is supported by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
====Peer Review Information====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Login credentials for peer review.&lt;br /&gt;
&lt;br /&gt;
* Instructor login:&lt;br /&gt;
** Username: instructor6&lt;br /&gt;
** Password: password&lt;br /&gt;
&lt;br /&gt;
* Student login:&lt;br /&gt;
** Username: student4340&lt;br /&gt;
** Password: password&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In various agile methodologies, such as Scrum, different team members take on different roles, such as architect, facilitator, and implementer.  One might want to use a different rubric for evaluating the contribution of members with different roles.  Thus, this would not be separate from teammate review, but it would be a specialization of teammate review.&lt;br /&gt;
&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Created a new database table, model, view, and controller for duties.&lt;br /&gt;
* Allow assignments to be marked for role-based reviewing.&lt;br /&gt;
* Certain users can add and edit roles for assignments.&lt;br /&gt;
&lt;br /&gt;
Due to naming issues all of the backend components for role-based reviewing are known as duty or duties. When referring to the backend this documentation will refer to them as duty or duties and when referring to frontend components they will be called role or roles.&lt;br /&gt;
&lt;br /&gt;
===About Current Reviewing===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Currently reviewing does not allow students to have different rubrics for an assignment based on their role in the team.&lt;br /&gt;
&lt;br /&gt;
===UML Diagram for the Solution Implemented===&lt;br /&gt;
[[File:E2147.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Solutions Implemented and Delivered===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''Below we have listed the solutions that we implemented, why we did certain design decisions, and explanations on how they were implemented.''&lt;br /&gt;
&lt;br /&gt;
'''Created a new database table, model, view, and controller for duties.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''Database''&lt;br /&gt;
&lt;br /&gt;
We created a new duty table using scaffolding. In the database, each duty entry has an assignment_id, a max_duty_limit, and a duty_name. &lt;br /&gt;
&lt;br /&gt;
* The assignment_id is the id of the assignment to which this duty belongs to. &lt;br /&gt;
* The max_duty_limit field is an integer and is the maximum number of students who are allowed to have a specific duty (e.g. 1 scrum master but 5 developers are allowed).&lt;br /&gt;
* The duty_name is the name of the duty and will be displayed as Role name on the frontend.&lt;br /&gt;
&lt;br /&gt;
''Model''&lt;br /&gt;
&lt;br /&gt;
The model for duty is simple and simply marks a duty as belonging to assignment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Duty &amp;lt; ActiveRecord::Base&lt;br /&gt;
  belongs_to :assignment&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Views''&lt;br /&gt;
&lt;br /&gt;
There were quite a few new views added for the implementation, they will simply be mentioned in this section and then explained in the corresponding solution description.&lt;br /&gt;
&lt;br /&gt;
The new views were:&lt;br /&gt;
&lt;br /&gt;
* actions&lt;br /&gt;
* add_duties&lt;br /&gt;
* add_duty&lt;br /&gt;
* checkbox&lt;br /&gt;
* duty&lt;br /&gt;
* table_header&lt;br /&gt;
* table_line&lt;br /&gt;
* edit&lt;br /&gt;
* new&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Controller''&lt;br /&gt;
&lt;br /&gt;
We created a new duties controller which allows for creation, editing, and deletion of duties from an assignment. The controller has a check to see if the current user is authorized to make the request.&lt;br /&gt;
&lt;br /&gt;
'''Allow assignments to be marked for role-based reviewing.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Under the Review Strategy Tab of an assignment a checkbox was added that when clicked marks the assignment as role-based reviewing and displays an interface for adding, editing, and deleting roles.&lt;br /&gt;
&lt;br /&gt;
In the Review Strategy Tab under the self review checkbox we added a render call to the checkbox view:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% if current_page?(action: 'edit') %&amp;gt;&lt;br /&gt;
    &amp;lt;!--E2147 Duty Based Reviewing--&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td id='is_duty_based_assignment'&amp;gt;&lt;br /&gt;
        &amp;lt;input name=&amp;quot;assignment_form[assignment][is_duty_based_assignment]&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;%= check_box_tag('assignment_form[assignment][is_duty_based_assignment]', 'true', @assignment_form.assignment.is_duty_based_assignment, {:id =&amp;gt; &amp;quot;is_duty_checkbox&amp;quot;, :onChange =&amp;gt; 'hasDutiesChanged()'}) %&amp;gt;&lt;br /&gt;
        &amp;lt;%= label_tag('duty_assignment', 'Is Role-Based Reviewing?') %&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='Check the box if this assignment allows role assignments within the team'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;div id=&amp;quot;add_duties&amp;quot; &amp;lt;%= &amp;quot;hidden&amp;quot; if not @assignment_form.assignment.is_duty_based_assignment %&amp;gt; &amp;gt;&lt;br /&gt;
          &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;%= render '/duties/add_duties' %&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The checkbox view checks if the current page is being edited rather than created since duties rely on an assignment existing to link via id. This functionality is similar to how topics are added to the assignment. &lt;br /&gt;
&lt;br /&gt;
If the checkbox is checked and saved the assignment will be marked as a role-based reviewing assignment via the database column is_duty_based_assignment in the assignment table. When the checkbox is checked the add_duties view is rendered and displayed as well. When unchecked the view is hidden and the is_duty_based_assignment is marked as false when saved.&lt;br /&gt;
&lt;br /&gt;
[[File:Unchecked-Role-Based-Reviewing.png]]&lt;br /&gt;
&lt;br /&gt;
If the assignment has no duties in the backend the add_duties view will display a note with the text &amp;quot;Roles have not yet been created.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:Checked-Role-Based-Reviewing-no-roles.png]]&lt;br /&gt;
&lt;br /&gt;
If there are duties linked to the currently edited assignment then the view will render a table header from the table_header view and a line for each duty from the table_line view. At the end of this view, the add_duty partial view is rendered.&lt;br /&gt;
&lt;br /&gt;
The table_header view displays a table header with three items. Role name, Maximum member limit, and Actions, each with respective widths of 45%, 45%, and 10%.&lt;br /&gt;
&lt;br /&gt;
The table_line view crafts a table row based on the duty that was passed to it. The first column is the duty's duty_name with a link to the editing page for the duty if clicked. The next column is the duty's max_duty_limit, and the final column is a list of actions for the current duty which is rendered using the actions view.&lt;br /&gt;
&lt;br /&gt;
[[File:Display-duties.png]]&lt;br /&gt;
&lt;br /&gt;
The actions view displays two linked images, these are named &amp;quot;Edit Role&amp;quot; and &amp;quot;Delete Role&amp;quot;, and are linked to their respective actions. The icons used for these actions are in line with other parts of expertiza for the actions that they represent.&lt;br /&gt;
&lt;br /&gt;
The add_duty view is a link to the new view and is labelled &amp;quot;New role&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When clicked the user is directed to the new duty view:&lt;br /&gt;
&lt;br /&gt;
[[File:New-Duty.png]]&lt;br /&gt;
&lt;br /&gt;
Selecting back or create link back to the original assignment and upon successful creation there is a notification stating &amp;quot;Role was successfully created.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:Duty-creation-success.png]]&lt;br /&gt;
&lt;br /&gt;
'''Certain users can add and edit roles for assignments.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Users with TA privileges are able to add a role (added as duty to backend for clarity) to an assignment.&lt;br /&gt;
&lt;br /&gt;
An authorized user can select the edit role icon or the name of a duty on the Review Strategy tab and will be redirected to a form (duty view) that is auto populated by the edit view for the duty they are attempting to edit:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit-duty.png]]&lt;br /&gt;
&lt;br /&gt;
After successfully updating the duty the user is redirected back to the assignment edit page and get a notification of the change:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit-duty-confirmation.png]]&lt;br /&gt;
&lt;br /&gt;
An authorized user can also delete an existing duty, after deletion they will get another notification:&lt;br /&gt;
&lt;br /&gt;
[[File:Duty-deletion-confirmation.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====RSPEC====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Since duties_controller was a brand new file we created a new spec files &amp;quot;duties_controller_spec.rb&amp;quot; which covers creation, editing, and deletion of duties in the system. To run this file use the following command while in the top level of the expertiza directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rspec ./spec/controllers/duties_controller_spec.rb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UI====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''The following steps need to be performed to test this code from the UI:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Save and exit the assignment.&lt;br /&gt;
&lt;br /&gt;
6. Login as a student and attempt to apply to the duty.&lt;br /&gt;
&lt;br /&gt;
'''To test editing of a duty:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Click create and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
6. Click either the edit icon or the duty name listed under Role name.&lt;br /&gt;
&lt;br /&gt;
7. Edit the duty, press Update and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
'''To test deleting of a duty:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Click create and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
6. Click either the delete icon.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
1. If a duty's maximum member limit is changed to be below the current number of students who are assigned to that duty nothing happens. We feel that a good future improvement would be to notify the students of the change and require them to select which students are dropped from the duty.&lt;br /&gt;
&lt;br /&gt;
2. We believe that the checkbox for role-based reviewing can be moved to the general tab and only be displayed when the assignment is team based. This is due to dole-based reviewing being only available when an assignment is team based.&lt;br /&gt;
&lt;br /&gt;
3. We believe that a possible future improvement would be to allow a user to import duties and their corresponding rubrics into other assignments.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing&amp;diff=140852</id>
		<title>CSC/ECE 517 Fall 2021 - E2147. Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing&amp;diff=140852"/>
		<updated>2021-11-04T02:14:32Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E2147. Role-based reviewing==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application through which students can submit and peer-review learning objects (articles, code, web sites, etc). The Expertiza project is supported by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
====Peer Review Information====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Login credentials for peer review.&lt;br /&gt;
&lt;br /&gt;
* Instructor login:&lt;br /&gt;
** Username: instructor6&lt;br /&gt;
** Password: password&lt;br /&gt;
&lt;br /&gt;
* Student login:&lt;br /&gt;
** Username: student4340&lt;br /&gt;
** Password: password&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In various agile methodologies, such as Scrum, different team members take on different roles, such as architect, facilitator, and implementer.  One might want to use a different rubric for evaluating the contribution of members with different roles.  Thus, this would not be separate from teammate review, but it would be a specialization of teammate review.&lt;br /&gt;
&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Created a new database table, model, view, and controller for duties.&lt;br /&gt;
* Allow assignments to be marked for role-based reviewing.&lt;br /&gt;
* Certain users can add and edit roles for assignments.&lt;br /&gt;
&lt;br /&gt;
Due to naming issues all of the backend components for role-based reviewing are known as duty or duties. When referring to the backend this documentation will refer to them as duty or duties and when referring to frontend components they will be called role or roles.&lt;br /&gt;
&lt;br /&gt;
===About Current Reviewing===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Currently reviewing does not allow students to have different rubrics for an assignment based on their role in the team.&lt;br /&gt;
&lt;br /&gt;
===UML Diagram for the Solution Implemented===&lt;br /&gt;
[[File:E2147.png]]&lt;br /&gt;
In a UML Class Diagram, The relationships depicted are as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Solutions Implemented and Delivered===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''Below we have listed the solutions that we implemented, why we did certain design decisions, and explanations on how they were implemented.''&lt;br /&gt;
&lt;br /&gt;
'''Created a new database table, model, view, and controller for duties.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''Database''&lt;br /&gt;
&lt;br /&gt;
We created a new duty table using scaffolding. In the database, each duty entry has an assignment_id, a max_duty_limit, and a duty_name. &lt;br /&gt;
&lt;br /&gt;
* The assignment_id is the id of the assignment to which this duty belongs to. &lt;br /&gt;
* The max_duty_limit field is an integer and is the maximum number of students who are allowed to have a specific duty (e.g. 1 scrum master but 5 developers are allowed).&lt;br /&gt;
* The duty_name is the name of the duty and will be displayed as Role name on the frontend.&lt;br /&gt;
&lt;br /&gt;
''Model''&lt;br /&gt;
&lt;br /&gt;
The model for duty is simple and simply marks a duty as belonging to assignment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Duty &amp;lt; ActiveRecord::Base&lt;br /&gt;
  belongs_to :assignment&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Views''&lt;br /&gt;
&lt;br /&gt;
There were quite a few new views added for the implementation, they will simply be mentioned in this section and then explained in the corresponding solution description.&lt;br /&gt;
&lt;br /&gt;
The new views were:&lt;br /&gt;
&lt;br /&gt;
* actions&lt;br /&gt;
* add_duties&lt;br /&gt;
* add_duty&lt;br /&gt;
* checkbox&lt;br /&gt;
* duty&lt;br /&gt;
* table_header&lt;br /&gt;
* table_line&lt;br /&gt;
* edit&lt;br /&gt;
* new&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Controller''&lt;br /&gt;
&lt;br /&gt;
We created a new duties controller which allows for creation, editing, and deletion of duties from an assignment. The controller has a check to see if the current user is authorized to make the request.&lt;br /&gt;
&lt;br /&gt;
'''Allow assignments to be marked for role-based reviewing.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Under the Review Strategy Tab of an assignment a checkbox was added that when clicked marks the assignment as role-based reviewing and displays an interface for adding, editing, and deleting roles.&lt;br /&gt;
&lt;br /&gt;
In the Review Strategy Tab under the self review checkbox we added a render call to the checkbox view:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% if current_page?(action: 'edit') %&amp;gt;&lt;br /&gt;
    &amp;lt;!--E2147 Duty Based Reviewing--&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td id='is_duty_based_assignment'&amp;gt;&lt;br /&gt;
        &amp;lt;input name=&amp;quot;assignment_form[assignment][is_duty_based_assignment]&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;%= check_box_tag('assignment_form[assignment][is_duty_based_assignment]', 'true', @assignment_form.assignment.is_duty_based_assignment, {:id =&amp;gt; &amp;quot;is_duty_checkbox&amp;quot;, :onChange =&amp;gt; 'hasDutiesChanged()'}) %&amp;gt;&lt;br /&gt;
        &amp;lt;%= label_tag('duty_assignment', 'Is Role-Based Reviewing?') %&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='Check the box if this assignment allows role assignments within the team'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;div id=&amp;quot;add_duties&amp;quot; &amp;lt;%= &amp;quot;hidden&amp;quot; if not @assignment_form.assignment.is_duty_based_assignment %&amp;gt; &amp;gt;&lt;br /&gt;
          &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;%= render '/duties/add_duties' %&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The checkbox view checks if the current page is being edited rather than created since duties rely on an assignment existing to link via id. This functionality is similar to how topics are added to the assignment. &lt;br /&gt;
&lt;br /&gt;
If the checkbox is checked and saved the assignment will be marked as a role-based reviewing assignment via the database column is_duty_based_assignment in the assignment table. When the checkbox is checked the add_duties view is rendered and displayed as well. When unchecked the view is hidden and the is_duty_based_assignment is marked as false when saved.&lt;br /&gt;
&lt;br /&gt;
[[File:Unchecked-Role-Based-Reviewing.png]]&lt;br /&gt;
&lt;br /&gt;
If the assignment has no duties in the backend the add_duties view will display a note with the text &amp;quot;Roles have not yet been created.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:Checked-Role-Based-Reviewing-no-roles.png]]&lt;br /&gt;
&lt;br /&gt;
If there are duties linked to the currently edited assignment then the view will render a table header from the table_header view and a line for each duty from the table_line view. At the end of this view, the add_duty partial view is rendered.&lt;br /&gt;
&lt;br /&gt;
The table_header view displays a table header with three items. Role name, Maximum member limit, and Actions, each with respective widths of 45%, 45%, and 10%.&lt;br /&gt;
&lt;br /&gt;
The table_line view crafts a table row based on the duty that was passed to it. The first column is the duty's duty_name with a link to the editing page for the duty if clicked. The next column is the duty's max_duty_limit, and the final column is a list of actions for the current duty which is rendered using the actions view.&lt;br /&gt;
&lt;br /&gt;
[[File:Display-duties.png]]&lt;br /&gt;
&lt;br /&gt;
The actions view displays two linked images, these are named &amp;quot;Edit Role&amp;quot; and &amp;quot;Delete Role&amp;quot;, and are linked to their respective actions. The icons used for these actions are in line with other parts of expertiza for the actions that they represent.&lt;br /&gt;
&lt;br /&gt;
The add_duty view is a link to the new view and is labelled &amp;quot;New role&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When clicked the user is directed to the new duty view:&lt;br /&gt;
&lt;br /&gt;
[[File:New-Duty.png]]&lt;br /&gt;
&lt;br /&gt;
Selecting back or create link back to the original assignment and upon successful creation there is a notification stating &amp;quot;Role was successfully created.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:Duty-creation-success.png]]&lt;br /&gt;
&lt;br /&gt;
'''Certain users can add and edit roles for assignments.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Users with TA privileges are able to add a role (added as duty to backend for clarity) to an assignment.&lt;br /&gt;
&lt;br /&gt;
An authorized user can select the edit role icon or the name of a duty on the Review Strategy tab and will be redirected to a form (duty view) that is auto populated by the edit view for the duty they are attempting to edit:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit-duty.png]]&lt;br /&gt;
&lt;br /&gt;
After successfully updating the duty the user is redirected back to the assignment edit page and get a notification of the change:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit-duty-confirmation.png]]&lt;br /&gt;
&lt;br /&gt;
An authorized user can also delete an existing duty, after deletion they will get another notification:&lt;br /&gt;
&lt;br /&gt;
[[File:Duty-deletion-confirmation.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====RSPEC====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Since duties_controller was a brand new file we created a new spec files &amp;quot;duties_controller_spec.rb&amp;quot; which covers creation, editing, and deletion of duties in the system. To run this file use the following command while in the top level of the expertiza directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rspec ./spec/controllers/duties_controller_spec.rb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UI====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''The following steps need to be performed to test this code from the UI:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Save and exit the assignment.&lt;br /&gt;
&lt;br /&gt;
6. Login as a student and attempt to apply to the duty.&lt;br /&gt;
&lt;br /&gt;
'''To test editing of a duty:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Click create and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
6. Click either the edit icon or the duty name listed under Role name.&lt;br /&gt;
&lt;br /&gt;
7. Edit the duty, press Update and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
'''To test deleting of a duty:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Click create and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
6. Click either the delete icon.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
1. If a duty's maximum member limit is changed to be below the current number of students who are assigned to that duty nothing happens. We feel that a good future improvement would be to notify the students of the change and require them to select which students are dropped from the duty.&lt;br /&gt;
&lt;br /&gt;
2. We believe that the checkbox for role-based reviewing can be moved to the general tab and only be displayed when the assignment is team based. This is due to dole-based reviewing being only available when an assignment is team based.&lt;br /&gt;
&lt;br /&gt;
3. We believe that a possible future improvement would be to allow a user to import duties and their corresponding rubrics into other assignments.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:E2147.png&amp;diff=140850</id>
		<title>File:E2147.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:E2147.png&amp;diff=140850"/>
		<updated>2021-11-04T02:11:24Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: Kprawat uploaded a new version of File:E2147.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:E2147.png&amp;diff=140849</id>
		<title>File:E2147.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:E2147.png&amp;diff=140849"/>
		<updated>2021-11-04T02:09:53Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing&amp;diff=140848</id>
		<title>CSC/ECE 517 Fall 2021 - E2147. Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing&amp;diff=140848"/>
		<updated>2021-11-04T02:09:42Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: /* UML Diagram for the Solution Implemented */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E2147. Role-based reviewing==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application through which students can submit and peer-review learning objects (articles, code, web sites, etc). The Expertiza project is supported by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
====Peer Review Information====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Login credentials for peer review.&lt;br /&gt;
&lt;br /&gt;
* Instructor login:&lt;br /&gt;
** Username: instructor6&lt;br /&gt;
** Password: password&lt;br /&gt;
&lt;br /&gt;
* Student login:&lt;br /&gt;
** Username: student4340&lt;br /&gt;
** Password: password&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In various agile methodologies, such as Scrum, different team members take on different roles, such as architect, facilitator, and implementer.  One might want to use a different rubric for evaluating the contribution of members with different roles.  Thus, this would not be separate from teammate review, but it would be a specialization of teammate review.&lt;br /&gt;
&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Created a new database table, model, view, and controller for duties.&lt;br /&gt;
* Allow assignments to be marked for role-based reviewing.&lt;br /&gt;
* Certain users can add and edit roles for assignments.&lt;br /&gt;
&lt;br /&gt;
Due to naming issues all of the backend components for role-based reviewing are known as duty or duties. When referring to the backend this documentation will refer to them as duty or duties and when referring to frontend components they will be called role or roles.&lt;br /&gt;
&lt;br /&gt;
===About Current Reviewing===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Currently reviewing does not allow students to have different rubrics for an assignment based on their role in the team.&lt;br /&gt;
&lt;br /&gt;
===UML Diagram for the Solution Implemented===&lt;br /&gt;
[[File:E2147.png]]&lt;br /&gt;
&lt;br /&gt;
===Solutions Implemented and Delivered===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''Below we have listed the solutions that we implemented, why we did certain design decisions, and explanations on how they were implemented.''&lt;br /&gt;
&lt;br /&gt;
'''Created a new database table, model, view, and controller for duties.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''Database''&lt;br /&gt;
&lt;br /&gt;
We created a new duty table using scaffolding. In the database, each duty entry has an assignment_id, a max_duty_limit, and a duty_name. &lt;br /&gt;
&lt;br /&gt;
* The assignment_id is the id of the assignment to which this duty belongs to. &lt;br /&gt;
* The max_duty_limit field is an integer and is the maximum number of students who are allowed to have a specific duty (e.g. 1 scrum master but 5 developers are allowed).&lt;br /&gt;
* The duty_name is the name of the duty and will be displayed as Role name on the frontend.&lt;br /&gt;
&lt;br /&gt;
''Model''&lt;br /&gt;
&lt;br /&gt;
The model for duty is simple and simply marks a duty as belonging to assignment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Duty &amp;lt; ActiveRecord::Base&lt;br /&gt;
  belongs_to :assignment&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Views''&lt;br /&gt;
&lt;br /&gt;
There were quite a few new views added for the implementation, they will simply be mentioned in this section and then explained in the corresponding solution description.&lt;br /&gt;
&lt;br /&gt;
The new views were:&lt;br /&gt;
&lt;br /&gt;
* actions&lt;br /&gt;
* add_duties&lt;br /&gt;
* add_duty&lt;br /&gt;
* checkbox&lt;br /&gt;
* duty&lt;br /&gt;
* table_header&lt;br /&gt;
* table_line&lt;br /&gt;
* edit&lt;br /&gt;
* new&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Controller''&lt;br /&gt;
&lt;br /&gt;
We created a new duties controller which allows for creation, editing, and deletion of duties from an assignment. The controller has a check to see if the current user is authorized to make the request.&lt;br /&gt;
&lt;br /&gt;
'''Allow assignments to be marked for role-based reviewing.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Under the Review Strategy Tab of an assignment a checkbox was added that when clicked marks the assignment as role-based reviewing and displays an interface for adding, editing, and deleting roles.&lt;br /&gt;
&lt;br /&gt;
In the Review Strategy Tab under the self review checkbox we added a render call to the checkbox view:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% if current_page?(action: 'edit') %&amp;gt;&lt;br /&gt;
    &amp;lt;!--E2147 Duty Based Reviewing--&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td id='is_duty_based_assignment'&amp;gt;&lt;br /&gt;
        &amp;lt;input name=&amp;quot;assignment_form[assignment][is_duty_based_assignment]&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;%= check_box_tag('assignment_form[assignment][is_duty_based_assignment]', 'true', @assignment_form.assignment.is_duty_based_assignment, {:id =&amp;gt; &amp;quot;is_duty_checkbox&amp;quot;, :onChange =&amp;gt; 'hasDutiesChanged()'}) %&amp;gt;&lt;br /&gt;
        &amp;lt;%= label_tag('duty_assignment', 'Is Role-Based Reviewing?') %&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='Check the box if this assignment allows role assignments within the team'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;div id=&amp;quot;add_duties&amp;quot; &amp;lt;%= &amp;quot;hidden&amp;quot; if not @assignment_form.assignment.is_duty_based_assignment %&amp;gt; &amp;gt;&lt;br /&gt;
          &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;%= render '/duties/add_duties' %&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The checkbox view checks if the current page is being edited rather than created since duties rely on an assignment existing to link via id. This functionality is similar to how topics are added to the assignment. &lt;br /&gt;
&lt;br /&gt;
If the checkbox is checked and saved the assignment will be marked as a role-based reviewing assignment via the database column is_duty_based_assignment in the assignment table. When the checkbox is checked the add_duties view is rendered and displayed as well. When unchecked the view is hidden and the is_duty_based_assignment is marked as false when saved.&lt;br /&gt;
&lt;br /&gt;
[[File:Unchecked-Role-Based-Reviewing.png]]&lt;br /&gt;
&lt;br /&gt;
If the assignment has no duties in the backend the add_duties view will display a note with the text &amp;quot;Roles have not yet been created.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:Checked-Role-Based-Reviewing-no-roles.png]]&lt;br /&gt;
&lt;br /&gt;
If there are duties linked to the currently edited assignment then the view will render a table header from the table_header view and a line for each duty from the table_line view. At the end of this view, the add_duty partial view is rendered.&lt;br /&gt;
&lt;br /&gt;
The table_header view displays a table header with three items. Role name, Maximum member limit, and Actions, each with respective widths of 45%, 45%, and 10%.&lt;br /&gt;
&lt;br /&gt;
The table_line view crafts a table row based on the duty that was passed to it. The first column is the duty's duty_name with a link to the editing page for the duty if clicked. The next column is the duty's max_duty_limit, and the final column is a list of actions for the current duty which is rendered using the actions view.&lt;br /&gt;
&lt;br /&gt;
[[File:Display-duties.png]]&lt;br /&gt;
&lt;br /&gt;
The actions view displays two linked images, these are named &amp;quot;Edit Role&amp;quot; and &amp;quot;Delete Role&amp;quot;, and are linked to their respective actions. The icons used for these actions are in line with other parts of expertiza for the actions that they represent.&lt;br /&gt;
&lt;br /&gt;
The add_duty view is a link to the new view and is labelled &amp;quot;New role&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When clicked the user is directed to the new duty view:&lt;br /&gt;
&lt;br /&gt;
[[File:New-Duty.png]]&lt;br /&gt;
&lt;br /&gt;
Selecting back or create link back to the original assignment and upon successful creation there is a notification stating &amp;quot;Role was successfully created.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:Duty-creation-success.png]]&lt;br /&gt;
&lt;br /&gt;
'''Certain users can add and edit roles for assignments.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Users with TA privileges are able to add a role (added as duty to backend for clarity) to an assignment.&lt;br /&gt;
&lt;br /&gt;
An authorized user can select the edit role icon or the name of a duty on the Review Strategy tab and will be redirected to a form (duty view) that is auto populated by the edit view for the duty they are attempting to edit:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit-duty.png]]&lt;br /&gt;
&lt;br /&gt;
After successfully updating the duty the user is redirected back to the assignment edit page and get a notification of the change:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit-duty-confirmation.png]]&lt;br /&gt;
&lt;br /&gt;
An authorized user can also delete an existing duty, after deletion they will get another notification:&lt;br /&gt;
&lt;br /&gt;
[[File:Duty-deletion-confirmation.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====RSPEC====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Since duties_controller was a brand new file we created a new spec files &amp;quot;duties_controller_spec.rb&amp;quot; which covers creation, editing, and deletion of duties in the system. To run this file use the following command while in the top level of the expertiza directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rspec ./spec/controllers/duties_controller_spec.rb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UI====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''The following steps need to be performed to test this code from the UI:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Save and exit the assignment.&lt;br /&gt;
&lt;br /&gt;
6. Login as a student and attempt to apply to the duty.&lt;br /&gt;
&lt;br /&gt;
'''To test editing of a duty:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Click create and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
6. Click either the edit icon or the duty name listed under Role name.&lt;br /&gt;
&lt;br /&gt;
7. Edit the duty, press Update and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
'''To test deleting of a duty:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Click create and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
6. Click either the delete icon.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
1. If a duty's maximum member limit is changed to be below the current number of students who are assigned to that duty nothing happens. We feel that a good future improvement would be to notify the students of the change and require them to select which students are dropped from the duty.&lt;br /&gt;
&lt;br /&gt;
2. We believe that the checkbox for role-based reviewing can be moved to the general tab and only be displayed when the assignment is team based. This is due to dole-based reviewing being only available when an assignment is team based.&lt;br /&gt;
&lt;br /&gt;
3. We believe that a possible future improvement would be to allow a user to import duties and their corresponding rubrics into other assignments.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing&amp;diff=140831</id>
		<title>CSC/ECE 517 Fall 2021 - E2147. Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing&amp;diff=140831"/>
		<updated>2021-11-04T01:52:47Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E2147. Role-based reviewing==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application through which students can submit and peer-review learning objects (articles, code, web sites, etc). The Expertiza project is supported by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
====Peer Review Information====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Login credentials for peer review.&lt;br /&gt;
&lt;br /&gt;
* Instructor login:&lt;br /&gt;
** Username: instructor6&lt;br /&gt;
** Password: password&lt;br /&gt;
&lt;br /&gt;
* Student login:&lt;br /&gt;
** Username: student4340&lt;br /&gt;
** Password: password&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In various agile methodologies, such as Scrum, different team members take on different roles, such as architect, facilitator, and implementer.  One might want to use a different rubric for evaluating the contribution of members with different roles.  Thus, this would not be separate from teammate review, but it would be a specialization of teammate review.&lt;br /&gt;
&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Created a new database table, model, view, and controller for duties.&lt;br /&gt;
* Allow assignments to be marked for role-based reviewing.&lt;br /&gt;
* Certain users can add and edit roles for assignments.&lt;br /&gt;
&lt;br /&gt;
Due to naming issues all of the backend components for role-based reviewing are known as duty or duties. When referring to the backend this documentation will refer to them as duty or duties and when referring to frontend components they will be called role or roles.&lt;br /&gt;
&lt;br /&gt;
===About Current Reviewing===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Currently reviewing does not allow students to have different rubrics for an assignment based on their role in the team.&lt;br /&gt;
&lt;br /&gt;
===UML Diagram for the Solution Implemented===&lt;br /&gt;
[[File:E2147.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Solutions Implemented and Delivered===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''Below we have listed the solutions that we implemented, why we did certain design decisions, and explanations on how they were implemented.''&lt;br /&gt;
&lt;br /&gt;
'''Created a new database table, model, view, and controller for duties.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''Database''&lt;br /&gt;
&lt;br /&gt;
We created a new duty table using scaffolding. In the database, each duty entry has an assignment_id, a max_duty_limit, and a duty_name. &lt;br /&gt;
&lt;br /&gt;
* The assignment_id is the id of the assignment to which this duty belongs to. &lt;br /&gt;
* The max_duty_limit field is an integer and is the maximum number of students who are allowed to have a specific duty (e.g. 1 scrum master but 5 developers are allowed).&lt;br /&gt;
* The duty_name is the name of the duty and will be displayed as Role name on the frontend.&lt;br /&gt;
&lt;br /&gt;
''Model''&lt;br /&gt;
&lt;br /&gt;
The model for duty is simple and simply marks a duty as belonging to assignment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Duty &amp;lt; ActiveRecord::Base&lt;br /&gt;
  belongs_to :assignment&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Views''&lt;br /&gt;
&lt;br /&gt;
There were quite a few new views added for the implementation, they will simply be mentioned in this section and then explained in the corresponding solution description.&lt;br /&gt;
&lt;br /&gt;
The new views were:&lt;br /&gt;
&lt;br /&gt;
* actions&lt;br /&gt;
* add_duties&lt;br /&gt;
* add_duty&lt;br /&gt;
* checkbox&lt;br /&gt;
* duty&lt;br /&gt;
* table_header&lt;br /&gt;
* table_line&lt;br /&gt;
* edit&lt;br /&gt;
* new&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Controller''&lt;br /&gt;
&lt;br /&gt;
We created a new duties controller which allows for creation, editing, and deletion of duties from an assignment. The controller has a check to see if the current user is authorized to make the request.&lt;br /&gt;
&lt;br /&gt;
'''Allow assignments to be marked for role-based reviewing.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Under the Review Strategy Tab of an assignment a checkbox was added that when clicked marks the assignment as role-based reviewing and displays an interface for adding, editing, and deleting roles.&lt;br /&gt;
&lt;br /&gt;
In the Review Strategy Tab under the self review checkbox we added a render call to the checkbox view:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% if current_page?(action: 'edit') %&amp;gt;&lt;br /&gt;
    &amp;lt;!--E2147 Duty Based Reviewing--&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td id='is_duty_based_assignment'&amp;gt;&lt;br /&gt;
        &amp;lt;input name=&amp;quot;assignment_form[assignment][is_duty_based_assignment]&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;%= check_box_tag('assignment_form[assignment][is_duty_based_assignment]', 'true', @assignment_form.assignment.is_duty_based_assignment, {:id =&amp;gt; &amp;quot;is_duty_checkbox&amp;quot;, :onChange =&amp;gt; 'hasDutiesChanged()'}) %&amp;gt;&lt;br /&gt;
        &amp;lt;%= label_tag('duty_assignment', 'Is Role-Based Reviewing?') %&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='Check the box if this assignment allows role assignments within the team'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;div id=&amp;quot;add_duties&amp;quot; &amp;lt;%= &amp;quot;hidden&amp;quot; if not @assignment_form.assignment.is_duty_based_assignment %&amp;gt; &amp;gt;&lt;br /&gt;
          &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;%= render '/duties/add_duties' %&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The checkbox view checks if the current page is being edited rather than created since duties rely on an assignment existing to link via id. This functionality is similar to how topics are added to the assignment. &lt;br /&gt;
&lt;br /&gt;
If the checkbox is checked and saved the assignment will be marked as a role-based reviewing assignment via the database column is_duty_based_assignment in the assignment table. When the checkbox is checked the add_duties view is rendered and displayed as well. When unchecked the view is hidden and the is_duty_based_assignment is marked as false when saved.&lt;br /&gt;
&lt;br /&gt;
[[File:Unchecked-Role-Based-Reviewing.png]]&lt;br /&gt;
&lt;br /&gt;
If the assignment has no duties in the backend the add_duties view will display a note with the text &amp;quot;Roles have not yet been created.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:Checked-Role-Based-Reviewing-no-roles.png]]&lt;br /&gt;
&lt;br /&gt;
If there are duties linked to the currently edited assignment then the view will render a table header from the table_header view and a line for each duty from the table_line view. At the end of this view, the add_duty partial view is rendered.&lt;br /&gt;
&lt;br /&gt;
The table_header view displays a table header with three items. Role name, Maximum member limit, and Actions, each with respective widths of 45%, 45%, and 10%.&lt;br /&gt;
&lt;br /&gt;
The table_line view crafts a table row based on the duty that was passed to it. The first column is the duty's duty_name with a link to the editing page for the duty if clicked. The next column is the duty's max_duty_limit, and the final column is a list of actions for the current duty which is rendered using the actions view.&lt;br /&gt;
&lt;br /&gt;
[[File:Display-duties.png]]&lt;br /&gt;
&lt;br /&gt;
The actions view displays two linked images, these are named &amp;quot;Edit Role&amp;quot; and &amp;quot;Delete Role&amp;quot;, and are linked to their respective actions. The icons used for these actions are in line with other parts of expertiza for the actions that they represent.&lt;br /&gt;
&lt;br /&gt;
The add_duty view is a link to the new view and is labelled &amp;quot;New role&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When clicked the user is directed to the new duty view:&lt;br /&gt;
&lt;br /&gt;
[[File:New-Duty.png]]&lt;br /&gt;
&lt;br /&gt;
Selecting back or create link back to the original assignment and upon successful creation there is a notification stating &amp;quot;Role was successfully created.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:Duty-creation-success.png]]&lt;br /&gt;
&lt;br /&gt;
'''Certain users can add and edit roles for assignments.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Users with TA privileges are able to add a role (added as duty to backend for clarity) to an assignment.&lt;br /&gt;
&lt;br /&gt;
An authorized user can select the edit role icon or the name of a duty on the Review Strategy tab and will be redirected to a form (duty view) that is auto populated by the edit view for the duty they are attempting to edit:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit-duty.png]]&lt;br /&gt;
&lt;br /&gt;
After successfully updating the duty the user is redirected back to the assignment edit page and get a notification of the change:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit-duty-confirmation.png]]&lt;br /&gt;
&lt;br /&gt;
An authorized user can also delete an existing duty, after deletion they will get another notification:&lt;br /&gt;
&lt;br /&gt;
[[File:Duty-deletion-confirmation.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====RSPEC====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Since duties_controller was a brand new file we created a new spec files &amp;quot;duties_controller_spec.rb&amp;quot; which covers creation, editing, and deletion of duties in the system. To run this file use the following command while in the top level of the expertiza directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rspec ./spec/controllers/duties_controller_spec.rb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UI====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''The following steps need to be performed to test this code from the UI:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Save and exit the assignment.&lt;br /&gt;
&lt;br /&gt;
6. Login as a student and attempt to apply to the duty.&lt;br /&gt;
&lt;br /&gt;
'''To test editing of a duty:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Click create and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
6. Click either the edit icon or the duty name listed under Role name.&lt;br /&gt;
&lt;br /&gt;
7. Edit the duty, press Update and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
'''To test deleting of a duty:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Click create and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
6. Click either the delete icon.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
1. If a duty's maximum member limit is changed to be below the current number of students who are assigned to that duty nothing happens. We feel that a good future improvement would be to notify the students of the change and require them to select which students are dropped from the duty.&lt;br /&gt;
&lt;br /&gt;
2. We believe that the checkbox for role-based reviewing can be moved to the general tab and only be displayed when the assignment is team based. This is due to dole-based reviewing being only available when an assignment is team based.&lt;br /&gt;
&lt;br /&gt;
3. We believe that a possible future improvement would be to allow a user to import duties and their corresponding rubrics into other assignments.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing&amp;diff=140818</id>
		<title>CSC/ECE 517 Fall 2021 - E2147. Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing&amp;diff=140818"/>
		<updated>2021-11-04T01:49:45Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E2147. Role-based reviewing==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application through which students can submit and peer-review learning objects (articles, code, web sites, etc). The Expertiza project is supported by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
====Peer Review Information====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Login credentials for peer review.&lt;br /&gt;
&lt;br /&gt;
* Instructor login:&lt;br /&gt;
** Username: instructor6&lt;br /&gt;
** Password: password&lt;br /&gt;
&lt;br /&gt;
* Student login:&lt;br /&gt;
** Username: student4340&lt;br /&gt;
** Password: password&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In various agile methodologies, such as Scrum, different team members take on different roles, such as architect, facilitator, and implementer.  One might want to use a different rubric for evaluating the contribution of members with different roles.  Thus, this would not be separate from teammate review, but it would be a specialization of teammate review.&lt;br /&gt;
&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Created a new database table, model, view, and controller for duties.&lt;br /&gt;
* Allow assignments to be marked for role-based reviewing.&lt;br /&gt;
* Certain users can add and edit roles for assignments.&lt;br /&gt;
&lt;br /&gt;
Due to naming issues all of the backend components for role-based reviewing are known as duty or duties. When referring to the backend this documentation will refer to them as duty or duties and when referring to frontend components they will be called role or roles.&lt;br /&gt;
&lt;br /&gt;
===About Current Reviewing===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Currently reviewing does not allow students to have different rubrics for an assignment based on their role in the team.&lt;br /&gt;
&lt;br /&gt;
===UML Diagram for the Solution Implemented===&lt;br /&gt;
&lt;br /&gt;
===Solutions Implemented and Delivered===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''Below we have listed the solutions that we implemented, why we did certain design decisions, and explanations on how they were implemented.''&lt;br /&gt;
&lt;br /&gt;
'''Created a new database table, model, view, and controller for duties.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''Database''&lt;br /&gt;
&lt;br /&gt;
We created a new duty table using scaffolding. In the database, each duty entry has an assignment_id, a max_duty_limit, and a duty_name. &lt;br /&gt;
&lt;br /&gt;
* The assignment_id is the id of the assignment to which this duty belongs to. &lt;br /&gt;
* The max_duty_limit field is an integer and is the maximum number of students who are allowed to have a specific duty (e.g. 1 scrum master but 5 developers are allowed).&lt;br /&gt;
* The duty_name is the name of the duty and will be displayed as Role name on the frontend.&lt;br /&gt;
&lt;br /&gt;
''Model''&lt;br /&gt;
&lt;br /&gt;
The model for duty is simple and simply marks a duty as belonging to assignment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Duty &amp;lt; ActiveRecord::Base&lt;br /&gt;
  belongs_to :assignment&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Views''&lt;br /&gt;
&lt;br /&gt;
There were quite a few new views added for the implementation, they will simply be mentioned in this section and then explained in the corresponding solution description.&lt;br /&gt;
&lt;br /&gt;
The new views were:&lt;br /&gt;
&lt;br /&gt;
* actions&lt;br /&gt;
* add_duties&lt;br /&gt;
* add_duty&lt;br /&gt;
* checkbox&lt;br /&gt;
* duty&lt;br /&gt;
* table_header&lt;br /&gt;
* table_line&lt;br /&gt;
* edit&lt;br /&gt;
* new&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Controller''&lt;br /&gt;
&lt;br /&gt;
We created a new duties controller which allows for creation, editing, and deletion of duties from an assignment. The controller has a check to see if the current user is authorized to make the request.&lt;br /&gt;
&lt;br /&gt;
'''Allow assignments to be marked for role-based reviewing.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Under the Review Strategy Tab of an assignment a checkbox was added that when clicked marks the assignment as role-based reviewing and displays an interface for adding, editing, and deleting roles.&lt;br /&gt;
&lt;br /&gt;
In the Review Strategy Tab under the self review checkbox we added a render call to the checkbox view:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% if current_page?(action: 'edit') %&amp;gt;&lt;br /&gt;
    &amp;lt;!--E2147 Duty Based Reviewing--&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td id='is_duty_based_assignment'&amp;gt;&lt;br /&gt;
        &amp;lt;input name=&amp;quot;assignment_form[assignment][is_duty_based_assignment]&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;%= check_box_tag('assignment_form[assignment][is_duty_based_assignment]', 'true', @assignment_form.assignment.is_duty_based_assignment, {:id =&amp;gt; &amp;quot;is_duty_checkbox&amp;quot;, :onChange =&amp;gt; 'hasDutiesChanged()'}) %&amp;gt;&lt;br /&gt;
        &amp;lt;%= label_tag('duty_assignment', 'Is Role-Based Reviewing?') %&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='Check the box if this assignment allows role assignments within the team'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;div id=&amp;quot;add_duties&amp;quot; &amp;lt;%= &amp;quot;hidden&amp;quot; if not @assignment_form.assignment.is_duty_based_assignment %&amp;gt; &amp;gt;&lt;br /&gt;
          &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;%= render '/duties/add_duties' %&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The checkbox view checks if the current page is being edited rather than created since duties rely on an assignment existing to link via id. This functionality is similar to how topics are added to the assignment. &lt;br /&gt;
&lt;br /&gt;
If the checkbox is checked and saved the assignment will be marked as a role-based reviewing assignment via the database column is_duty_based_assignment in the assignment table. When the checkbox is checked the add_duties view is rendered and displayed as well. When unchecked the view is hidden and the is_duty_based_assignment is marked as false when saved.&lt;br /&gt;
&lt;br /&gt;
[[File:Unchecked-Role-Based-Reviewing.png]]&lt;br /&gt;
&lt;br /&gt;
If the assignment has no duties in the backend the add_duties view will display a note with the text &amp;quot;Roles have not yet been created.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:Checked-Role-Based-Reviewing-no-roles.png]]&lt;br /&gt;
&lt;br /&gt;
If there are duties linked to the currently edited assignment then the view will render a table header from the table_header view and a line for each duty from the table_line view. At the end of this view, the add_duty partial view is rendered.&lt;br /&gt;
&lt;br /&gt;
The table_header view displays a table header with three items. Role name, Maximum member limit, and Actions, each with respective widths of 45%, 45%, and 10%.&lt;br /&gt;
&lt;br /&gt;
The table_line view crafts a table row based on the duty that was passed to it. The first column is the duty's duty_name with a link to the editing page for the duty if clicked. The next column is the duty's max_duty_limit, and the final column is a list of actions for the current duty which is rendered using the actions view.&lt;br /&gt;
&lt;br /&gt;
[[File:Display-duties.png]]&lt;br /&gt;
&lt;br /&gt;
The actions view displays two linked images, these are named &amp;quot;Edit Role&amp;quot; and &amp;quot;Delete Role&amp;quot;, and are linked to their respective actions. The icons used for these actions are in line with other parts of expertiza for the actions that they represent.&lt;br /&gt;
&lt;br /&gt;
The add_duty view is a link to the new view and is labelled &amp;quot;New role&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When clicked the user is directed to the new duty view:&lt;br /&gt;
&lt;br /&gt;
[[File:New-Duty.png]]&lt;br /&gt;
&lt;br /&gt;
Selecting back or create link back to the original assignment and upon successful creation there is a notification stating &amp;quot;Role was successfully created.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:Duty-creation-success.png]]&lt;br /&gt;
&lt;br /&gt;
'''Certain users can add and edit roles for assignments.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Users with TA privileges are able to add a role (added as duty to backend for clarity) to an assignment.&lt;br /&gt;
&lt;br /&gt;
An authorized user can select the edit role icon or the name of a duty on the Review Strategy tab and will be redirected to a form (duty view) that is auto populated by the edit view for the duty they are attempting to edit:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit-duty.png]]&lt;br /&gt;
&lt;br /&gt;
After successfully updating the duty the user is redirected back to the assignment edit page and get a notification of the change:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit-duty-confirmation.png]]&lt;br /&gt;
&lt;br /&gt;
An authorized user can also delete an existing duty, after deletion they will get another notification:&lt;br /&gt;
&lt;br /&gt;
[[File:Duty-deletion-confirmation.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====RSPEC====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Since duties_controller was a brand new file we created a new spec files &amp;quot;duties_controller_spec.rb&amp;quot; which covers creation, editing, and deletion of duties in the system. To run this file use the following command while in the top level of the expertiza directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rspec ./spec/controllers/duties_controller_spec.rb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UI====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''The following steps need to be performed to test this code from the UI:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Save and exit the assignment.&lt;br /&gt;
&lt;br /&gt;
6. Login as a student and attempt to apply to the duty.&lt;br /&gt;
&lt;br /&gt;
'''To test editing of a duty:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Click create and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
6. Click either the edit icon or the duty name listed under Role name.&lt;br /&gt;
&lt;br /&gt;
7. Edit the duty, press Update and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
'''To test deleting of a duty:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Click create and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
6. Click either the delete icon.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
1. If a duty's maximum member limit is changed to be below the current number of students who are assigned to that duty nothing happens. We feel that a good future improvement would be to notify the students of the change and require them to select which students are dropped from the duty.&lt;br /&gt;
&lt;br /&gt;
2. We believe that the checkbox for role-based reviewing can be moved to the general tab and only be displayed when the assignment is team based. This is due to dole-based reviewing being only available when an assignment is team based.&lt;br /&gt;
&lt;br /&gt;
3. We believe that a possible future improvement would be to allow a user to import duties and their corresponding rubrics into other assignments.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing&amp;diff=140816</id>
		<title>CSC/ECE 517 Fall 2021 - E2147. Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2147._Role-based_reviewing&amp;diff=140816"/>
		<updated>2021-11-04T01:48:36Z</updated>

		<summary type="html">&lt;p&gt;Kprawat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E2147. Role-based reviewing==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application through which students can submit and peer-review learning objects (articles, code, web sites, etc). The Expertiza project is supported by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
====Peer Review Information====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Login credentials for peer review.&lt;br /&gt;
&lt;br /&gt;
* Instructor login:&lt;br /&gt;
** Username: instructor6&lt;br /&gt;
** Password: password&lt;br /&gt;
&lt;br /&gt;
* Student login:&lt;br /&gt;
** Username: student4340&lt;br /&gt;
** Password: password&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In various agile methodologies, such as Scrum, different team members take on different roles, such as architect, facilitator, and implementer.  One might want to use a different rubric for evaluating the contribution of members with different roles.  Thus, this would not be separate from teammate review, but it would be a specialization of teammate review.&lt;br /&gt;
&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Created a new database table, model, view, and controller for duties.&lt;br /&gt;
* Allow assignments to be marked for role-based reviewing.&lt;br /&gt;
* Certain users can add and edit roles for assignments.&lt;br /&gt;
&lt;br /&gt;
Due to naming issues all of the backend components for role-based reviewing are known as duty or duties. When referring to the backend this documentation will refer to them as duty or duties and when referring to frontend components they will be called role or roles.&lt;br /&gt;
&lt;br /&gt;
===About Current Reviewing===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Currently reviewing does not allow students to have different rubrics for an assignment based on their role in the team.&lt;br /&gt;
&lt;br /&gt;
===UML Diagram for the solution implemented===&lt;br /&gt;
&lt;br /&gt;
===Solutions Implemented and Delivered===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''Below we have listed the solutions that we implemented, why we did certain design decisions, and explanations on how they were implemented.''&lt;br /&gt;
&lt;br /&gt;
'''Created a new database table, model, view, and controller for duties.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''Database''&lt;br /&gt;
&lt;br /&gt;
We created a new duty table using scaffolding. In the database, each duty entry has an assignment_id, a max_duty_limit, and a duty_name. &lt;br /&gt;
&lt;br /&gt;
* The assignment_id is the id of the assignment to which this duty belongs to. &lt;br /&gt;
* The max_duty_limit field is an integer and is the maximum number of students who are allowed to have a specific duty (e.g. 1 scrum master but 5 developers are allowed).&lt;br /&gt;
* The duty_name is the name of the duty and will be displayed as Role name on the frontend.&lt;br /&gt;
&lt;br /&gt;
''Model''&lt;br /&gt;
&lt;br /&gt;
The model for duty is simple and simply marks a duty as belonging to assignment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Duty &amp;lt; ActiveRecord::Base&lt;br /&gt;
  belongs_to :assignment&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Views''&lt;br /&gt;
&lt;br /&gt;
There were quite a few new views added for the implementation, they will simply be mentioned in this section and then explained in the corresponding solution description.&lt;br /&gt;
&lt;br /&gt;
The new views were:&lt;br /&gt;
&lt;br /&gt;
* actions&lt;br /&gt;
* add_duties&lt;br /&gt;
* add_duty&lt;br /&gt;
* checkbox&lt;br /&gt;
* duty&lt;br /&gt;
* table_header&lt;br /&gt;
* table_line&lt;br /&gt;
* edit&lt;br /&gt;
* new&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Controller''&lt;br /&gt;
&lt;br /&gt;
We created a new duties controller which allows for creation, editing, and deletion of duties from an assignment. The controller has a check to see if the current user is authorized to make the request.&lt;br /&gt;
&lt;br /&gt;
'''Allow assignments to be marked for role-based reviewing.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Under the Review Strategy Tab of an assignment a checkbox was added that when clicked marks the assignment as role-based reviewing and displays an interface for adding, editing, and deleting roles.&lt;br /&gt;
&lt;br /&gt;
In the Review Strategy Tab under the self review checkbox we added a render call to the checkbox view:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% if current_page?(action: 'edit') %&amp;gt;&lt;br /&gt;
    &amp;lt;!--E2147 Duty Based Reviewing--&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td id='is_duty_based_assignment'&amp;gt;&lt;br /&gt;
        &amp;lt;input name=&amp;quot;assignment_form[assignment][is_duty_based_assignment]&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;%= check_box_tag('assignment_form[assignment][is_duty_based_assignment]', 'true', @assignment_form.assignment.is_duty_based_assignment, {:id =&amp;gt; &amp;quot;is_duty_checkbox&amp;quot;, :onChange =&amp;gt; 'hasDutiesChanged()'}) %&amp;gt;&lt;br /&gt;
        &amp;lt;%= label_tag('duty_assignment', 'Is Role-Based Reviewing?') %&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='Check the box if this assignment allows role assignments within the team'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;div id=&amp;quot;add_duties&amp;quot; &amp;lt;%= &amp;quot;hidden&amp;quot; if not @assignment_form.assignment.is_duty_based_assignment %&amp;gt; &amp;gt;&lt;br /&gt;
          &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;%= render '/duties/add_duties' %&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The checkbox view checks if the current page is being edited rather than created since duties rely on an assignment existing to link via id. This functionality is similar to how topics are added to the assignment. &lt;br /&gt;
&lt;br /&gt;
If the checkbox is checked and saved the assignment will be marked as a role-based reviewing assignment via the database column is_duty_based_assignment in the assignment table. When the checkbox is checked the add_duties view is rendered and displayed as well. When unchecked the view is hidden and the is_duty_based_assignment is marked as false when saved.&lt;br /&gt;
&lt;br /&gt;
[[File:Unchecked-Role-Based-Reviewing.png]]&lt;br /&gt;
&lt;br /&gt;
If the assignment has no duties in the backend the add_duties view will display a note with the text &amp;quot;Roles have not yet been created.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:Checked-Role-Based-Reviewing-no-roles.png]]&lt;br /&gt;
&lt;br /&gt;
If there are duties linked to the currently edited assignment then the view will render a table header from the table_header view and a line for each duty from the table_line view. At the end of this view, the add_duty partial view is rendered.&lt;br /&gt;
&lt;br /&gt;
The table_header view displays a table header with three items. Role name, Maximum member limit, and Actions, each with respective widths of 45%, 45%, and 10%.&lt;br /&gt;
&lt;br /&gt;
The table_line view crafts a table row based on the duty that was passed to it. The first column is the duty's duty_name with a link to the editing page for the duty if clicked. The next column is the duty's max_duty_limit, and the final column is a list of actions for the current duty which is rendered using the actions view.&lt;br /&gt;
&lt;br /&gt;
[[File:Display-duties.png]]&lt;br /&gt;
&lt;br /&gt;
The actions view displays two linked images, these are named &amp;quot;Edit Role&amp;quot; and &amp;quot;Delete Role&amp;quot;, and are linked to their respective actions. The icons used for these actions are in line with other parts of expertiza for the actions that they represent.&lt;br /&gt;
&lt;br /&gt;
The add_duty view is a link to the new view and is labelled &amp;quot;New role&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When clicked the user is directed to the new duty view:&lt;br /&gt;
&lt;br /&gt;
[[File:New-Duty.png]]&lt;br /&gt;
&lt;br /&gt;
Selecting back or create link back to the original assignment and upon successful creation there is a notification stating &amp;quot;Role was successfully created.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:Duty-creation-success.png]]&lt;br /&gt;
&lt;br /&gt;
'''Certain users can add and edit roles for assignments.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Users with TA privileges are able to add a role (added as duty to backend for clarity) to an assignment.&lt;br /&gt;
&lt;br /&gt;
An authorized user can select the edit role icon or the name of a duty on the Review Strategy tab and will be redirected to a form (duty view) that is auto populated by the edit view for the duty they are attempting to edit:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit-duty.png]]&lt;br /&gt;
&lt;br /&gt;
After successfully updating the duty the user is redirected back to the assignment edit page and get a notification of the change:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit-duty-confirmation.png]]&lt;br /&gt;
&lt;br /&gt;
An authorized user can also delete an existing duty, after deletion they will get another notification:&lt;br /&gt;
&lt;br /&gt;
[[File:Duty-deletion-confirmation.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====RSPEC====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Since duties_controller was a brand new file we created a new spec files &amp;quot;duties_controller_spec.rb&amp;quot; which covers creation, editing, and deletion of duties in the system. To run this file use the following command while in the top level of the expertiza directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rspec ./spec/controllers/duties_controller_spec.rb &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UI====&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''The following steps need to be performed to test this code from the UI:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Save and exit the assignment.&lt;br /&gt;
&lt;br /&gt;
6. Login as a student and attempt to apply to the duty.&lt;br /&gt;
&lt;br /&gt;
'''To test editing of a duty:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Click create and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
6. Click either the edit icon or the duty name listed under Role name.&lt;br /&gt;
&lt;br /&gt;
7. Edit the duty, press Update and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
'''To test deleting of a duty:'''&lt;br /&gt;
&lt;br /&gt;
1. Login as an instructor. Create a course and an assignment or navigate to an existing course with assignments.&lt;br /&gt;
&lt;br /&gt;
2. Mark the assignment as a team assignment and navigate to the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
3. Check the Is Role-Based Reviewing checkbox and save the assignment.&lt;br /&gt;
&lt;br /&gt;
4. Click New Role and fill out the information for creating a new duty. &lt;br /&gt;
&lt;br /&gt;
5. Click create and navigate to the Review Strategy tab again.&lt;br /&gt;
&lt;br /&gt;
6. Click either the delete icon.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
1. If a duty's maximum member limit is changed to be below the current number of students who are assigned to that duty nothing happens. We feel that a good future improvement would be to notify the students of the change and require them to select which students are dropped from the duty.&lt;br /&gt;
&lt;br /&gt;
2. We believe that the checkbox for role-based reviewing can be moved to the general tab and only be displayed when the assignment is team based. This is due to dole-based reviewing being only available when an assignment is team based.&lt;br /&gt;
&lt;br /&gt;
3. We believe that a possible future improvement would be to allow a user to import duties and their corresponding rubrics into other assignments.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Kprawat</name></author>
	</entry>
</feed>