<?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=Zwang236</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=Zwang236"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Zwang236"/>
	<updated>2026-07-05T00:02:55Z</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_2022_-_E2285._Grading_audit_trail&amp;diff=147023</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147023"/>
		<updated>2022-12-05T02:15:57Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Relevant Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
==== Submission Page With Grade History Option ====&lt;br /&gt;
[[File:Audit_Trail_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Summary Report ====&lt;br /&gt;
[[File:Audit_Trail_2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history ====&lt;br /&gt;
[[File:Audit_Trail_3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
[[File:Grade_controller.png|800px]]&lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
[[File:Rmapping_controller.png|800px]]&lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/uQtvkIba3DY/ Screencast]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147022</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147022"/>
		<updated>2022-12-05T02:15:35Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Relevant Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
==== Submission Page With Grade History Option ====&lt;br /&gt;
[[File:Audit_Trail_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Summary Report ====&lt;br /&gt;
[[File:Audit_Trail_2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history ====&lt;br /&gt;
[[File:Audit_Trail_3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
[[File:Grade_controller.png|800px]]&lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
[[File:Rmapping_controller.png|800px]]&lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;br /&gt;
[https://youtu.be/uQtvkIba3DY/ screencast]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147020</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147020"/>
		<updated>2022-12-05T01:25:52Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Testing Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
==== Submission Page With Grade History Option ====&lt;br /&gt;
[[File:Audit_Trail_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Summary Report ====&lt;br /&gt;
[[File:Audit_Trail_2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history ====&lt;br /&gt;
[[File:Audit_Trail_3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
[[File:Grade_controller.png|800px]]&lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
[[File:Rmapping_controller.png|800px]]&lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147019</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147019"/>
		<updated>2022-12-05T01:25:40Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Files Modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
==== Submission Page With Grade History Option ====&lt;br /&gt;
[[File:Audit_Trail_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Summary Report ====&lt;br /&gt;
[[File:Audit_Trail_2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history ====&lt;br /&gt;
[[File:Audit_Trail_3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
[[File:Grade_controller.png|800px]]&lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147018</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147018"/>
		<updated>2022-12-05T01:25:28Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Testing Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
==== Submission Page With Grade History Option ====&lt;br /&gt;
[[File:Audit_Trail_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Summary Report ====&lt;br /&gt;
[[File:Audit_Trail_2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history ====&lt;br /&gt;
[[File:Audit_Trail_3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
[[File:Grade_controller.png|800px]]&lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
[[File:Rmapping_controller.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147017</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147017"/>
		<updated>2022-12-05T01:25:17Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Files Modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
==== Submission Page With Grade History Option ====&lt;br /&gt;
[[File:Audit_Trail_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Summary Report ====&lt;br /&gt;
[[File:Audit_Trail_2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history ====&lt;br /&gt;
[[File:Audit_Trail_3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
[[File:Rmapping_controller.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147016</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147016"/>
		<updated>2022-12-05T01:24:40Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Files Modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
==== Submission Page With Grade History Option ====&lt;br /&gt;
[[File:Audit_Trail_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Summary Report ====&lt;br /&gt;
[[File:Audit_Trail_2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history ====&lt;br /&gt;
[[File:Audit_Trail_3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
[[File:Grade_controller.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
[[File:Rmapping_controller.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Rmapping_controller.png&amp;diff=147015</id>
		<title>File:Rmapping controller.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Rmapping_controller.png&amp;diff=147015"/>
		<updated>2022-12-05T01:23:07Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Grade_controller.png&amp;diff=147014</id>
		<title>File:Grade controller.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Grade_controller.png&amp;diff=147014"/>
		<updated>2022-12-05T01:22:37Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147013</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147013"/>
		<updated>2022-12-05T00:51:10Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Grade History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
==== Submission Page With Grade History Option ====&lt;br /&gt;
[[File:Audit_Trail_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Summary Report ====&lt;br /&gt;
[[File:Audit_Trail_2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history ====&lt;br /&gt;
[[File:Audit_Trail_3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147012</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147012"/>
		<updated>2022-12-05T00:50:24Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* grade history */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
==== Grade History ====&lt;br /&gt;
[[File:Audit_Trail_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Summary Report ====&lt;br /&gt;
[[File:Audit_Trail_2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history ====&lt;br /&gt;
[[File:Audit_Trail_3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147011</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147011"/>
		<updated>2022-12-05T00:50:11Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
==== grade history ====&lt;br /&gt;
[[File:Audit_Trail_1.png|800px]]&lt;br /&gt;
==== Summary Report ====&lt;br /&gt;
[[File:Audit_Trail_2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history ====&lt;br /&gt;
[[File:Audit_Trail_3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147010</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147010"/>
		<updated>2022-12-05T00:49:52Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Expected View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
==== grade history ====&lt;br /&gt;
[[File:Audit_Trail_1.png|800px]]&lt;br /&gt;
==== report ====&lt;br /&gt;
[[File:Audit_Trail_2.png|800px]]&lt;br /&gt;
==== Grade history ====&lt;br /&gt;
[[File:Audit_Trail_3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147009</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147009"/>
		<updated>2022-12-05T00:48:30Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Expected View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
'''grade history'''&lt;br /&gt;
[[File:Audit_Trail_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Audit_Trail_2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Audit_Trail_3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147008</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147008"/>
		<updated>2022-12-05T00:48:01Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Expected View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
[[File:Audit_Trail_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Audit_Trail_2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Audit_Trail_3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147007</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147007"/>
		<updated>2022-12-05T00:47:44Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Expected View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
[[File:Audit_Trail_1.png|500px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Audit_Trail_2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Audit_Trail_3.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147006</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147006"/>
		<updated>2022-12-05T00:47:05Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Expected View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
[[File:Audit_Trail_1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Audit_Trail_2.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Audit_Trail_3.png]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147005</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147005"/>
		<updated>2022-12-05T00:46:37Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Expected View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
[[Audit_Trail_1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Audit_Trail_2.png]]&lt;br /&gt;
[[Audit_Trail_3.png]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147004</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147004"/>
		<updated>2022-12-05T00:45:15Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Expected View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
[[Audit_Trail_1.png|500px]]&lt;br /&gt;
&lt;br /&gt;
[[Audit_Trail_2.png|500px]]&lt;br /&gt;
[[Audit_Trail_3.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Audit_Trail_3.png&amp;diff=147003</id>
		<title>File:Audit Trail 3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Audit_Trail_3.png&amp;diff=147003"/>
		<updated>2022-12-05T00:43:37Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Audit_Trail_2.png&amp;diff=147002</id>
		<title>File:Audit Trail 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Audit_Trail_2.png&amp;diff=147002"/>
		<updated>2022-12-05T00:43:11Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Audit_Trail_1.png&amp;diff=147001</id>
		<title>File:Audit Trail 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Audit_Trail_1.png&amp;diff=147001"/>
		<updated>2022-12-05T00:42:42Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147000</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=147000"/>
		<updated>2022-12-04T23:43:28Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Files Added */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146999</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146999"/>
		<updated>2022-12-04T23:42:40Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*spec/features/grade_histories_spec.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     Feature test to check if the grades appear in chronological order&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     Helper file to facilitate the above mentioned feature test.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146998</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146998"/>
		<updated>2022-12-04T23:41:52Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Files Modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146997</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146997"/>
		<updated>2022-12-04T23:41:37Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146996</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146996"/>
		<updated>2022-12-04T23:37:51Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Relevant Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2237]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146995</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146995"/>
		<updated>2022-12-04T23:37:31Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Relevant Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1441/ Github 1934]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/2407/ Github 2285]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146994</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146994"/>
		<updated>2022-12-04T23:35:39Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test SubmissionGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test ReviewGradeHistory.create: call a submission grade when changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test GradeHistory.where: called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
Feature Testing:&lt;br /&gt;
&lt;br /&gt;
1. Test the grading history: visible and shown in chronological order?&lt;br /&gt;
   spec/features/grade_histories_spec.rb&lt;br /&gt;
   spec/features/helpers/grade_histories_helper.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
https://github.com/expertiza/expertiza/pull/1441/&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/pull/2407/&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146993</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146993"/>
		<updated>2022-12-04T23:30:26Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* General Design Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
=== Expected View ===&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
https://github.com/expertiza/expertiza/pull/1441/&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/pull/2407/&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146992</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146992"/>
		<updated>2022-12-04T23:28:45Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Flow Chart */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
https://github.com/expertiza/expertiza/pull/1441/&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/pull/2407/&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146991</id>
		<title>CSC/ECE 517 Fall 2022 - E2285. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2285._Grading_audit_trail&amp;diff=146991"/>
		<updated>2022-12-04T23:28:32Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored:&lt;br /&gt;
&lt;br /&gt;
*When an instructor assigns a grade, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
*Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information must be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
The grading audit trail can probably pattern off the submission records history (shown below) on expertiza.&lt;br /&gt;
&lt;br /&gt;
The below page can be reached by logging in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Submissions -&amp;gt; History&lt;br /&gt;
&lt;br /&gt;
At the minimum, a grading log entry must include the instructor id, assignment id, student id, grade, comment and timestamp.&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
The team created a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
They used the MVC design to create a model, a controller, and a view for both '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes containing instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
They also modified the grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=yyxX_kRYxLc&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
Preliminary: The previous iterations of the project fulfilled all the functional requirements of the &amp;quot;grading audit trail&amp;quot; feature, but it is four years old and the pull requests never merged. Thus, the changes are outdated and cause build issues with the latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
1. Cherry pick and manually fixup the changes from previous iterations to fix build issues.&lt;br /&gt;
&lt;br /&gt;
2. Cleanup GUI so it meshes cleanly with latest Expertiza.&lt;br /&gt;
&lt;br /&gt;
3. Add comments and test cases.&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
&lt;br /&gt;
[[File:flow_Diagram.png|900px]]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
https://github.com/expertiza/expertiza/pull/1441/&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/pull/2407/&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Flow_Diagram.png&amp;diff=146990</id>
		<title>File:Flow Diagram.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Flow_Diagram.png&amp;diff=146990"/>
		<updated>2022-12-04T23:26:42Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022&amp;diff=146581</id>
		<title>CSC/ECE 517 Fall 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022&amp;diff=146581"/>
		<updated>2022-11-15T16:32:31Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OSS Projects ==&lt;br /&gt;
&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2250. Refactor suggestion controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2252. Refactor auth controller.rb &amp;amp; password retrieval controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2253.Refactor delayed mailer.rb and scheduled task.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2254: Refactor teams_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2255. Refactor student_quizzes_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2256: Refactor late_policies_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2257: Refactor questionnaires_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2258. Refactor submitted_content_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2259. Refactor signup_sheet_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2260. Refactor review_mapping_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2255. Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2262: Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2263.Refactor student teams functionality]]&lt;br /&gt;
&lt;br /&gt;
== Final Projects ==&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2275. Further refactoring and improvement of student_quizzes controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2276. Fix &amp;quot;Back&amp;quot; link on “New Late Policy” page]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2284. Calibration submissions should be copied along with calibration assignments]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2279. Further refactoring and improvement of signup_sheet controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2285. Grading audit trail]]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146543</id>
		<title>CSC/ECE 517 Fall 2022 - E2279. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146543"/>
		<updated>2022-11-15T03:25:30Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Mentor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
Not Assigned&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146542</id>
		<title>CSC/ECE 517 Fall 2022 - E2279. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146542"/>
		<updated>2022-11-15T03:24:52Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Team Member */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146541</id>
		<title>CSC/ECE 517 Fall 2022 - E2279. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146541"/>
		<updated>2022-11-15T03:22:09Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Team Member */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146540</id>
		<title>CSC/ECE 517 Fall 2022 - E2279. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146540"/>
		<updated>2022-11-15T03:21:13Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Team Member */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
111&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146539</id>
		<title>CSC/ECE 517 Fall 2022 - E2279. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146539"/>
		<updated>2022-11-15T03:20:38Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
&lt;br /&gt;
== General Design Plan ==&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146538</id>
		<title>CSC/ECE 517 Fall 2022 - E2279. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146538"/>
		<updated>2022-11-15T03:16:10Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146537</id>
		<title>CSC/ECE 517 Fall 2022 - E2279. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146537"/>
		<updated>2022-11-15T03:13:29Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Problem Description===&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146536</id>
		<title>CSC/ECE 517 Fall 2022 - E2279. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146536"/>
		<updated>2022-11-15T03:13:04Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
=== Problem Description===&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146535</id>
		<title>CSC/ECE 517 Fall 2022 - E2279. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146535"/>
		<updated>2022-11-15T03:12:29Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
&lt;br /&gt;
=== Team Member ===&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146534</id>
		<title>CSC/ECE 517 Fall 2022 - E2279. Grading audit trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2279._Grading_audit_trail&amp;diff=146534"/>
		<updated>2022-11-15T03:10:31Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: Created page with &amp;quot;== Introduction ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022&amp;diff=146533</id>
		<title>CSC/ECE 517 Fall 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022&amp;diff=146533"/>
		<updated>2022-11-15T03:06:38Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Final Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OSS Projects ==&lt;br /&gt;
&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2250. Refactor suggestion controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2252. Refactor auth controller.rb &amp;amp; password retrieval controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2253.Refactor delayed mailer.rb and scheduled task.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2254: Refactor teams_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2255. Refactor student_quizzes_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2256: Refactor late_policies_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2257: Refactor questionnaires_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2258. Refactor submitted_content_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2259. Refactor signup_sheet_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2260. Refactor review_mapping_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2255. Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2262: Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2263.Refactor student teams functionality]]&lt;br /&gt;
&lt;br /&gt;
== Final Projects ==&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2275. Further refactoring and improvement of student_quizzes controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2276. Fix &amp;quot;Back&amp;quot; link on “New Late Policy” page]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2284. Calibration submissions should be copied along with calibration assignments]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2279. Further refactoring and improvement of signup_sheet controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2022 - E2279. Grading audit trail]]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2255._Refactor_review_mapping_helper.rb&amp;diff=146041</id>
		<title>CSC/ECE 517 Fall 2022 - E2255. Refactor review mapping helper.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2255._Refactor_review_mapping_helper.rb&amp;diff=146041"/>
		<updated>2022-10-27T01:00:46Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* RSPEC Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams of Expertise to work on various projects and assignments. Students can also peer review other students' submissions. Expertise supports submission across various document types, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Use Code Climate to do a diagnosis for Expertiza. Search for the issues involving the files mentioned above.&lt;br /&gt;
* Fix all the methods having the issue with cyclomatic complexity, assignment branch condition size, extra commas, space or lack of it, and assigning branching condition.&lt;br /&gt;
* Write test cases of any new code written. Test the existing functionality after refactoring&lt;br /&gt;
&lt;br /&gt;
===Problems and Solutions===&lt;br /&gt;
====Problem 1====&lt;br /&gt;
* Use Code Climate to do a diagnosis for Expertiza. Search for the issues involving the files mentioned above.&lt;br /&gt;
::'''Example:'''&lt;br /&gt;
[[File:codec_1.png|900px]]&lt;br /&gt;
[[File:codec.png]]&lt;br /&gt;
====Problem 2==== &lt;br /&gt;
* Fix all the methods having the issue with cyclomatic complexity, assignment branch condition size, extra commas, space or lack of it, and assigning branching condition.&lt;br /&gt;
::'''Example One:''' Cyclomatic complexity Error, check_submission_state has Cyclomatic complexity 10 Maximum 5&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    if submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      color.push 'purple'&lt;br /&gt;
    else&lt;br /&gt;
      link = submitted_hyperlink(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      if link.nil? || (link !~ %r{https*:\/\/wiki(.*)}) # can be extended for github links in future&lt;br /&gt;
        color.push 'green'&lt;br /&gt;
      else&lt;br /&gt;
        link_updated_at = get_link_updated_at(link)&lt;br /&gt;
        color.push link_updated_since_last?(round, assignment_due_dates, link_updated_at) ? 'purple' : 'green'&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': The problem is caused by nesting loops so we break it up&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    if submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      color.push 'purple'&lt;br /&gt;
      return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    link = submitted_hyperlink(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    if link.nil? || (link !~ %r{https*:\/\/wiki(.*)}) # Can be extended for github links in future&lt;br /&gt;
      color.push 'green'&lt;br /&gt;
      return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    link_updated_at = get_link_updated_at(link)&lt;br /&gt;
    color.push link_updated_since_last?(round, assignment_due_dates, link_updated_at) ? 'purple' : 'green'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Two:''' Inconsistent Capitalization on comments&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # loops through the number of assignment review rounds and obtains the team colour&lt;br /&gt;
  def obtain_team_color(response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    color = []&lt;br /&gt;
&lt;br /&gt;
    (1..@assignment.num_review_rounds).each do |round|&lt;br /&gt;
      check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    color[-1]&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': Since many comments have inconsistent capitalization, our group went over the code line by line and manually fixed all inconsistent capitalizations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Loops through the number of assignment review rounds and obtains the team colour&lt;br /&gt;
  def obtain_team_color(response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    color = []&lt;br /&gt;
&lt;br /&gt;
    (1..@assignment.num_review_rounds).each do |round|&lt;br /&gt;
      check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    color[-1]&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Three:''' Inconsistent Spacing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    submission = SubmissionRecord.where(team_id: response_map.reviewee_id, operation: ['Submit File', 'Submit Hyperlink'])&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    subm_created_at = submission.where(created_at: assignment_created..submission_due_date)&lt;br /&gt;
    if round &amp;gt; 1&lt;br /&gt;
      submission_due_last_round = assignment_due_dates.where(round: round - 1, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
      subm_created_at = submission.where(created_at: submission_due_last_round..submission_due_date)&lt;br /&gt;
    end&lt;br /&gt;
    !subm_created_at.try(:first).try(:created_at).nil?&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': Many functions within the file are clustered like the example above, we have to go through the code line by line and add spacing before lines to make the code more readable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    submission = SubmissionRecord.where(team_id: response_map.reviewee_id, operation: ['Submit File', 'Submit Hyperlink'])&lt;br /&gt;
&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    subm_created_at = submission.where(created_at: assignment_created..submission_due_date)&lt;br /&gt;
&lt;br /&gt;
    if round &amp;gt; 1&lt;br /&gt;
      submission_due_last_round = assignment_due_dates.where(round: round - 1, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
      subm_created_at = submission.where(created_at: submission_due_last_round..submission_due_date)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    !subm_created_at.try(:first).try(:created_at).nil?&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Four:''' Add comments for some functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  #&lt;br /&gt;
  # for calibration report&lt;br /&gt;
  #&lt;br /&gt;
  def get_css_style_for_calibration_report(diff)&lt;br /&gt;
    &lt;br /&gt;
    dict = { 0 =&amp;gt; 'c5', 1 =&amp;gt; 'c4', 2 =&amp;gt; 'c3', 3 =&amp;gt; 'c2' }&lt;br /&gt;
&lt;br /&gt;
    if dict.key?(diff.abs)&lt;br /&gt;
      dict[diff.abs]&lt;br /&gt;
    else&lt;br /&gt;
      'c1'&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': many of the functions inside the code have an inconsistent format and lack comments, our team went through the code line by line to edit and add comments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gets CSS style for calibration report&lt;br /&gt;
  def get_css_style_for_calibration_report(diff)&lt;br /&gt;
  # Diff - the difference between stu's answer and instructor's answer&lt;br /&gt;
  dict = { 0 =&amp;gt; 'c5', 1 =&amp;gt; 'c4', 2 =&amp;gt; 'c3', 3 =&amp;gt; 'c2' }&lt;br /&gt;
  &lt;br /&gt;
  if dict.key?(diff.abs)&lt;br /&gt;
      dict[diff.abs]&lt;br /&gt;
    else&lt;br /&gt;
      'c1'&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Problem 3==== &lt;br /&gt;
* Write test cases of any new code written. Test the existing functionality after refactoring&lt;br /&gt;
:Note: Due to the majority of the code already being refactored, Thus our team did not make any major changes to the review_mapping_helper.rb file. We did however use RSPEC to test all existing functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ rspec spec/helpers/review_mapping_helper_spec.rb&lt;br /&gt;
$ rspec spec/features/review_mapping_helper_spec.rb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Work Flow Diagram===&lt;br /&gt;
[[File:codec_2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
===Travis-CI===&lt;br /&gt;
[[File:codec_6.png|500px]]&lt;br /&gt;
&lt;br /&gt;
[[File:codec_7.png|500px]]&lt;br /&gt;
&lt;br /&gt;
===RSPEC Testing===&lt;br /&gt;
&lt;br /&gt;
:'''NOTE:''' there are existing errors already inside the code before we started refactoring. And after refactoring, Our changes did not regress any functionality. Since our responsibility is only refactoring the code and not fixing the functionalities, the RSPEC Testing result showed that we have done our due diligence.&lt;br /&gt;
&lt;br /&gt;
: Result RSPEC testing Before Refactoring&lt;br /&gt;
: Command Used:&lt;br /&gt;
: '''rspec spec/helpers/review_mapping_helper_spec.rb'''&lt;br /&gt;
: result:&lt;br /&gt;
: 61 examples, 0 failures - spec &lt;br /&gt;
[[File:codec_3.png|500px]]&lt;br /&gt;
: Command Used:&lt;br /&gt;
: '''rspec spec/features/review_mapping_helper_spec.rb'''&lt;br /&gt;
: 21 examples, 20 failures - features &lt;br /&gt;
[[File:codec_4.png|500px]]&lt;br /&gt;
&lt;br /&gt;
[[File:codec_5.png|500px]]&lt;br /&gt;
&lt;br /&gt;
: Result Rspec testing After Refactoring:&lt;br /&gt;
: Our change did not regress any functionality&lt;br /&gt;
&lt;br /&gt;
===Admin Account Information===&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
===Project Mentor===&lt;br /&gt;
&lt;br /&gt;
Edward Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Jialin Cui (jcui9@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
===Team Member===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
===Reference===&lt;br /&gt;
#[http://152.7.177.159:8080/ VCL link]&lt;br /&gt;
#[https://github.com/b4443/expertiza Github Repo]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2470 Github Pull Request]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/vyasrc/expertiza/tree/refactor_suggestion_controller GitHub Project Repository Fork]&lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Project Documentation Wiki]&lt;br /&gt;
#[https://docs.codeclimate.com/docs/cognitive-complexity CodeClimate Documentation]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2255._Refactor_review_mapping_helper.rb&amp;diff=146040</id>
		<title>CSC/ECE 517 Fall 2022 - E2255. Refactor review mapping helper.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2255._Refactor_review_mapping_helper.rb&amp;diff=146040"/>
		<updated>2022-10-27T00:58:49Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Reference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams of Expertise to work on various projects and assignments. Students can also peer review other students' submissions. Expertise supports submission across various document types, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Use Code Climate to do a diagnosis for Expertiza. Search for the issues involving the files mentioned above.&lt;br /&gt;
* Fix all the methods having the issue with cyclomatic complexity, assignment branch condition size, extra commas, space or lack of it, and assigning branching condition.&lt;br /&gt;
* Write test cases of any new code written. Test the existing functionality after refactoring&lt;br /&gt;
&lt;br /&gt;
===Problems and Solutions===&lt;br /&gt;
====Problem 1====&lt;br /&gt;
* Use Code Climate to do a diagnosis for Expertiza. Search for the issues involving the files mentioned above.&lt;br /&gt;
::'''Example:'''&lt;br /&gt;
[[File:codec_1.png|900px]]&lt;br /&gt;
[[File:codec.png]]&lt;br /&gt;
====Problem 2==== &lt;br /&gt;
* Fix all the methods having the issue with cyclomatic complexity, assignment branch condition size, extra commas, space or lack of it, and assigning branching condition.&lt;br /&gt;
::'''Example One:''' Cyclomatic complexity Error, check_submission_state has Cyclomatic complexity 10 Maximum 5&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    if submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      color.push 'purple'&lt;br /&gt;
    else&lt;br /&gt;
      link = submitted_hyperlink(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      if link.nil? || (link !~ %r{https*:\/\/wiki(.*)}) # can be extended for github links in future&lt;br /&gt;
        color.push 'green'&lt;br /&gt;
      else&lt;br /&gt;
        link_updated_at = get_link_updated_at(link)&lt;br /&gt;
        color.push link_updated_since_last?(round, assignment_due_dates, link_updated_at) ? 'purple' : 'green'&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': The problem is caused by nesting loops so we break it up&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    if submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      color.push 'purple'&lt;br /&gt;
      return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    link = submitted_hyperlink(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    if link.nil? || (link !~ %r{https*:\/\/wiki(.*)}) # Can be extended for github links in future&lt;br /&gt;
      color.push 'green'&lt;br /&gt;
      return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    link_updated_at = get_link_updated_at(link)&lt;br /&gt;
    color.push link_updated_since_last?(round, assignment_due_dates, link_updated_at) ? 'purple' : 'green'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Two:''' Inconsistent Capitalization on comments&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # loops through the number of assignment review rounds and obtains the team colour&lt;br /&gt;
  def obtain_team_color(response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    color = []&lt;br /&gt;
&lt;br /&gt;
    (1..@assignment.num_review_rounds).each do |round|&lt;br /&gt;
      check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    color[-1]&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': Since many comments have inconsistent capitalization, our group went over the code line by line and manually fixed all inconsistent capitalizations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Loops through the number of assignment review rounds and obtains the team colour&lt;br /&gt;
  def obtain_team_color(response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    color = []&lt;br /&gt;
&lt;br /&gt;
    (1..@assignment.num_review_rounds).each do |round|&lt;br /&gt;
      check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    color[-1]&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Three:''' Inconsistent Spacing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    submission = SubmissionRecord.where(team_id: response_map.reviewee_id, operation: ['Submit File', 'Submit Hyperlink'])&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    subm_created_at = submission.where(created_at: assignment_created..submission_due_date)&lt;br /&gt;
    if round &amp;gt; 1&lt;br /&gt;
      submission_due_last_round = assignment_due_dates.where(round: round - 1, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
      subm_created_at = submission.where(created_at: submission_due_last_round..submission_due_date)&lt;br /&gt;
    end&lt;br /&gt;
    !subm_created_at.try(:first).try(:created_at).nil?&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': Many functions within the file are clustered like the example above, we have to go through the code line by line and add spacing before lines to make the code more readable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    submission = SubmissionRecord.where(team_id: response_map.reviewee_id, operation: ['Submit File', 'Submit Hyperlink'])&lt;br /&gt;
&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    subm_created_at = submission.where(created_at: assignment_created..submission_due_date)&lt;br /&gt;
&lt;br /&gt;
    if round &amp;gt; 1&lt;br /&gt;
      submission_due_last_round = assignment_due_dates.where(round: round - 1, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
      subm_created_at = submission.where(created_at: submission_due_last_round..submission_due_date)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    !subm_created_at.try(:first).try(:created_at).nil?&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Four:''' Add comments for some functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  #&lt;br /&gt;
  # for calibration report&lt;br /&gt;
  #&lt;br /&gt;
  def get_css_style_for_calibration_report(diff)&lt;br /&gt;
    &lt;br /&gt;
    dict = { 0 =&amp;gt; 'c5', 1 =&amp;gt; 'c4', 2 =&amp;gt; 'c3', 3 =&amp;gt; 'c2' }&lt;br /&gt;
&lt;br /&gt;
    if dict.key?(diff.abs)&lt;br /&gt;
      dict[diff.abs]&lt;br /&gt;
    else&lt;br /&gt;
      'c1'&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': many of the functions inside the code have an inconsistent format and lack comments, our team went through the code line by line to edit and add comments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gets CSS style for calibration report&lt;br /&gt;
  def get_css_style_for_calibration_report(diff)&lt;br /&gt;
  # Diff - the difference between stu's answer and instructor's answer&lt;br /&gt;
  dict = { 0 =&amp;gt; 'c5', 1 =&amp;gt; 'c4', 2 =&amp;gt; 'c3', 3 =&amp;gt; 'c2' }&lt;br /&gt;
  &lt;br /&gt;
  if dict.key?(diff.abs)&lt;br /&gt;
      dict[diff.abs]&lt;br /&gt;
    else&lt;br /&gt;
      'c1'&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Problem 3==== &lt;br /&gt;
* Write test cases of any new code written. Test the existing functionality after refactoring&lt;br /&gt;
:Note: Due to the majority of the code already being refactored, Thus our team did not make any major changes to the review_mapping_helper.rb file. We did however use RSPEC to test all existing functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ rspec spec/helpers/review_mapping_helper_spec.rb&lt;br /&gt;
$ rspec spec/features/review_mapping_helper_spec.rb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Work Flow Diagram===&lt;br /&gt;
[[File:codec_2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
===Travis-CI===&lt;br /&gt;
[[File:codec_6.png|500px]]&lt;br /&gt;
&lt;br /&gt;
[[File:codec_7.png|500px]]&lt;br /&gt;
&lt;br /&gt;
===RSPEC Testing===&lt;br /&gt;
&lt;br /&gt;
:'''NOTE:''' there are existing errors already inside the code before we started refactoring. And after refactoring, Our changes did not regress any functionality. Since our responsibility is only refactoring the code and not fixing the functionalities, the RSPEC Testing result showed that we have done our due diligence.&lt;br /&gt;
&lt;br /&gt;
: Result RSPEC testing Before Refactoring&lt;br /&gt;
: Command Used:&lt;br /&gt;
: '''rspec spec/helpers/review_mapping_helper_spec.rb'''&lt;br /&gt;
: result:&lt;br /&gt;
: 61 examples, 0 failures - spec &lt;br /&gt;
[[File:codec_3.png|500px]]&lt;br /&gt;
: Command Used:&lt;br /&gt;
: '''rspec spec/features/review_mapping_helper_spec.rb'''&lt;br /&gt;
: 21 examples, 20 failures - features &lt;br /&gt;
[[File:codec_4.png|500px]]&lt;br /&gt;
&lt;br /&gt;
[[File:codec_5.png|500px]]&lt;br /&gt;
&lt;br /&gt;
: Result Rspec testing After Refactoring:&lt;br /&gt;
: Our change did not regress any functionality&lt;br /&gt;
&lt;br /&gt;
===Project Mentor===&lt;br /&gt;
&lt;br /&gt;
Edward Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Jialin Cui (jcui9@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
===Team Member===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
===Reference===&lt;br /&gt;
#[http://152.7.177.159:8080/ VCL link]&lt;br /&gt;
#[https://github.com/b4443/expertiza Github Repo]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2470 Github Pull Request]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/vyasrc/expertiza/tree/refactor_suggestion_controller GitHub Project Repository Fork]&lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Project Documentation Wiki]&lt;br /&gt;
#[https://docs.codeclimate.com/docs/cognitive-complexity CodeClimate Documentation]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2255._Refactor_review_mapping_helper.rb&amp;diff=145979</id>
		<title>CSC/ECE 517 Fall 2022 - E2255. Refactor review mapping helper.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2255._Refactor_review_mapping_helper.rb&amp;diff=145979"/>
		<updated>2022-10-26T16:05:46Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* RSPEC Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams of Expertise to work on various projects and assignments. Students can also peer review other students' submissions. Expertise supports submission across various document types, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Use Code Climate to do a diagnosis for Expertiza. Search for the issues involving the files mentioned above.&lt;br /&gt;
* Fix all the methods having the issue with cyclomatic complexity, assignment branch condition size, extra commas, space or lack of it, and assigning branching condition.&lt;br /&gt;
* Write test cases of any new code written. Test the existing functionality after refactoring&lt;br /&gt;
&lt;br /&gt;
===Problems and Solutions===&lt;br /&gt;
====Problem 1====&lt;br /&gt;
* Use Code Climate to do a diagnosis for Expertiza. Search for the issues involving the files mentioned above.&lt;br /&gt;
::'''Example:'''&lt;br /&gt;
[[File:codec_1.png|900px]]&lt;br /&gt;
[[File:codec.png]]&lt;br /&gt;
====Problem 2==== &lt;br /&gt;
* Fix all the methods having the issue with cyclomatic complexity, assignment branch condition size, extra commas, space or lack of it, and assigning branching condition.&lt;br /&gt;
::'''Example One:''' Cyclomatic complexity Error, check_submission_state has Cyclomatic complexity 10 Maximum 5&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    if submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      color.push 'purple'&lt;br /&gt;
    else&lt;br /&gt;
      link = submitted_hyperlink(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      if link.nil? || (link !~ %r{https*:\/\/wiki(.*)}) # can be extended for github links in future&lt;br /&gt;
        color.push 'green'&lt;br /&gt;
      else&lt;br /&gt;
        link_updated_at = get_link_updated_at(link)&lt;br /&gt;
        color.push link_updated_since_last?(round, assignment_due_dates, link_updated_at) ? 'purple' : 'green'&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': The problem is caused by nesting loops so we break it up&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    if submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      color.push 'purple'&lt;br /&gt;
      return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    link = submitted_hyperlink(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    if link.nil? || (link !~ %r{https*:\/\/wiki(.*)}) # Can be extended for github links in future&lt;br /&gt;
      color.push 'green'&lt;br /&gt;
      return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    link_updated_at = get_link_updated_at(link)&lt;br /&gt;
    color.push link_updated_since_last?(round, assignment_due_dates, link_updated_at) ? 'purple' : 'green'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Two:''' Inconsistent Capitalization on comments&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # loops through the number of assignment review rounds and obtains the team colour&lt;br /&gt;
  def obtain_team_color(response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    color = []&lt;br /&gt;
&lt;br /&gt;
    (1..@assignment.num_review_rounds).each do |round|&lt;br /&gt;
      check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    color[-1]&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': Since many comments have inconsistent capitalization, our group went over the code line by line and manually fixed all inconsistent capitalizations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Loops through the number of assignment review rounds and obtains the team colour&lt;br /&gt;
  def obtain_team_color(response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    color = []&lt;br /&gt;
&lt;br /&gt;
    (1..@assignment.num_review_rounds).each do |round|&lt;br /&gt;
      check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    color[-1]&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Three:''' Inconsistent Spacing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    submission = SubmissionRecord.where(team_id: response_map.reviewee_id, operation: ['Submit File', 'Submit Hyperlink'])&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    subm_created_at = submission.where(created_at: assignment_created..submission_due_date)&lt;br /&gt;
    if round &amp;gt; 1&lt;br /&gt;
      submission_due_last_round = assignment_due_dates.where(round: round - 1, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
      subm_created_at = submission.where(created_at: submission_due_last_round..submission_due_date)&lt;br /&gt;
    end&lt;br /&gt;
    !subm_created_at.try(:first).try(:created_at).nil?&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': Many functions within the file are clustered like the example above, we have to go through the code line by line and add spacing before lines to make the code more readable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    submission = SubmissionRecord.where(team_id: response_map.reviewee_id, operation: ['Submit File', 'Submit Hyperlink'])&lt;br /&gt;
&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    subm_created_at = submission.where(created_at: assignment_created..submission_due_date)&lt;br /&gt;
&lt;br /&gt;
    if round &amp;gt; 1&lt;br /&gt;
      submission_due_last_round = assignment_due_dates.where(round: round - 1, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
      subm_created_at = submission.where(created_at: submission_due_last_round..submission_due_date)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    !subm_created_at.try(:first).try(:created_at).nil?&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Four:''' Add comments for some functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  #&lt;br /&gt;
  # for calibration report&lt;br /&gt;
  #&lt;br /&gt;
  def get_css_style_for_calibration_report(diff)&lt;br /&gt;
    &lt;br /&gt;
    dict = { 0 =&amp;gt; 'c5', 1 =&amp;gt; 'c4', 2 =&amp;gt; 'c3', 3 =&amp;gt; 'c2' }&lt;br /&gt;
&lt;br /&gt;
    if dict.key?(diff.abs)&lt;br /&gt;
      dict[diff.abs]&lt;br /&gt;
    else&lt;br /&gt;
      'c1'&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': many of the functions inside the code have an inconsistent format and lack comments, our team went through the code line by line to edit and add comments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gets CSS style for calibration report&lt;br /&gt;
  def get_css_style_for_calibration_report(diff)&lt;br /&gt;
  # Diff - the difference between stu's answer and instructor's answer&lt;br /&gt;
  dict = { 0 =&amp;gt; 'c5', 1 =&amp;gt; 'c4', 2 =&amp;gt; 'c3', 3 =&amp;gt; 'c2' }&lt;br /&gt;
  &lt;br /&gt;
  if dict.key?(diff.abs)&lt;br /&gt;
      dict[diff.abs]&lt;br /&gt;
    else&lt;br /&gt;
      'c1'&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Problem 3==== &lt;br /&gt;
* Write test cases of any new code written. Test the existing functionality after refactoring&lt;br /&gt;
:Note: Due to the majority of the code already being refactored, Thus our team did not make any major changes to the review_mapping_helper.rb file. We did however use RSPEC to test all existing functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ rspec spec/helpers/review_mapping_helper_spec.rb&lt;br /&gt;
$ rspec spec/features/review_mapping_helper_spec.rb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Work Flow Diagram===&lt;br /&gt;
[[File:codec_2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
===Travis-CI===&lt;br /&gt;
[[File:codec_6.png|500px]]&lt;br /&gt;
&lt;br /&gt;
[[File:codec_7.png|500px]]&lt;br /&gt;
&lt;br /&gt;
===RSPEC Testing===&lt;br /&gt;
&lt;br /&gt;
:'''NOTE:''' there are existing errors already inside the code before we started refactoring. And after refactoring, Our changes did not regress any functionality. Since our responsibility is only refactoring the code and not fixing the functionalities, the RSPEC Testing result showed that we have done our due diligence.&lt;br /&gt;
&lt;br /&gt;
: Result RSPEC testing Before Refactoring&lt;br /&gt;
: Command Used:&lt;br /&gt;
: '''rspec spec/helpers/review_mapping_helper_spec.rb'''&lt;br /&gt;
: result:&lt;br /&gt;
: 61 examples, 0 failures - spec &lt;br /&gt;
[[File:codec_3.png|500px]]&lt;br /&gt;
: Command Used:&lt;br /&gt;
: '''rspec spec/features/review_mapping_helper_spec.rb'''&lt;br /&gt;
: 21 examples, 20 failures - features &lt;br /&gt;
[[File:codec_4.png|500px]]&lt;br /&gt;
&lt;br /&gt;
[[File:codec_5.png|500px]]&lt;br /&gt;
&lt;br /&gt;
: Result Rspec testing After Refactoring:&lt;br /&gt;
: Our change did not regress any functionality&lt;br /&gt;
&lt;br /&gt;
===Project Mentor===&lt;br /&gt;
&lt;br /&gt;
Edward Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Jialin Cui (jcui9@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
===Team Member===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
===Reference===&lt;br /&gt;
#[http://152.7.177.127:3000/ VCL link]&lt;br /&gt;
#[https://github.com/b4443/expertiza Github Repo]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2470 Github Pull Request]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/vyasrc/expertiza/tree/refactor_suggestion_controller GitHub Project Repository Fork]&lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Project Documentation Wiki]&lt;br /&gt;
#[https://docs.codeclimate.com/docs/cognitive-complexity CodeClimate Documentation]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2255._Refactor_review_mapping_helper.rb&amp;diff=145978</id>
		<title>CSC/ECE 517 Fall 2022 - E2255. Refactor review mapping helper.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2255._Refactor_review_mapping_helper.rb&amp;diff=145978"/>
		<updated>2022-10-26T16:05:07Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* RSPEC Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams of Expertise to work on various projects and assignments. Students can also peer review other students' submissions. Expertise supports submission across various document types, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Use Code Climate to do a diagnosis for Expertiza. Search for the issues involving the files mentioned above.&lt;br /&gt;
* Fix all the methods having the issue with cyclomatic complexity, assignment branch condition size, extra commas, space or lack of it, and assigning branching condition.&lt;br /&gt;
* Write test cases of any new code written. Test the existing functionality after refactoring&lt;br /&gt;
&lt;br /&gt;
===Problems and Solutions===&lt;br /&gt;
====Problem 1====&lt;br /&gt;
* Use Code Climate to do a diagnosis for Expertiza. Search for the issues involving the files mentioned above.&lt;br /&gt;
::'''Example:'''&lt;br /&gt;
[[File:codec_1.png|900px]]&lt;br /&gt;
[[File:codec.png]]&lt;br /&gt;
====Problem 2==== &lt;br /&gt;
* Fix all the methods having the issue with cyclomatic complexity, assignment branch condition size, extra commas, space or lack of it, and assigning branching condition.&lt;br /&gt;
::'''Example One:''' Cyclomatic complexity Error, check_submission_state has Cyclomatic complexity 10 Maximum 5&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    if submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      color.push 'purple'&lt;br /&gt;
    else&lt;br /&gt;
      link = submitted_hyperlink(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      if link.nil? || (link !~ %r{https*:\/\/wiki(.*)}) # can be extended for github links in future&lt;br /&gt;
        color.push 'green'&lt;br /&gt;
      else&lt;br /&gt;
        link_updated_at = get_link_updated_at(link)&lt;br /&gt;
        color.push link_updated_since_last?(round, assignment_due_dates, link_updated_at) ? 'purple' : 'green'&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': The problem is caused by nesting loops so we break it up&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    if submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      color.push 'purple'&lt;br /&gt;
      return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    link = submitted_hyperlink(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    if link.nil? || (link !~ %r{https*:\/\/wiki(.*)}) # Can be extended for github links in future&lt;br /&gt;
      color.push 'green'&lt;br /&gt;
      return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    link_updated_at = get_link_updated_at(link)&lt;br /&gt;
    color.push link_updated_since_last?(round, assignment_due_dates, link_updated_at) ? 'purple' : 'green'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Two:''' Inconsistent Capitalization on comments&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # loops through the number of assignment review rounds and obtains the team colour&lt;br /&gt;
  def obtain_team_color(response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    color = []&lt;br /&gt;
&lt;br /&gt;
    (1..@assignment.num_review_rounds).each do |round|&lt;br /&gt;
      check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    color[-1]&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': Since many comments have inconsistent capitalization, our group went over the code line by line and manually fixed all inconsistent capitalizations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Loops through the number of assignment review rounds and obtains the team colour&lt;br /&gt;
  def obtain_team_color(response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    color = []&lt;br /&gt;
&lt;br /&gt;
    (1..@assignment.num_review_rounds).each do |round|&lt;br /&gt;
      check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    color[-1]&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Three:''' Inconsistent Spacing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    submission = SubmissionRecord.where(team_id: response_map.reviewee_id, operation: ['Submit File', 'Submit Hyperlink'])&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    subm_created_at = submission.where(created_at: assignment_created..submission_due_date)&lt;br /&gt;
    if round &amp;gt; 1&lt;br /&gt;
      submission_due_last_round = assignment_due_dates.where(round: round - 1, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
      subm_created_at = submission.where(created_at: submission_due_last_round..submission_due_date)&lt;br /&gt;
    end&lt;br /&gt;
    !subm_created_at.try(:first).try(:created_at).nil?&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': Many functions within the file are clustered like the example above, we have to go through the code line by line and add spacing before lines to make the code more readable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    submission = SubmissionRecord.where(team_id: response_map.reviewee_id, operation: ['Submit File', 'Submit Hyperlink'])&lt;br /&gt;
&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    subm_created_at = submission.where(created_at: assignment_created..submission_due_date)&lt;br /&gt;
&lt;br /&gt;
    if round &amp;gt; 1&lt;br /&gt;
      submission_due_last_round = assignment_due_dates.where(round: round - 1, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
      subm_created_at = submission.where(created_at: submission_due_last_round..submission_due_date)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    !subm_created_at.try(:first).try(:created_at).nil?&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Four:''' Add comments for some functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  #&lt;br /&gt;
  # for calibration report&lt;br /&gt;
  #&lt;br /&gt;
  def get_css_style_for_calibration_report(diff)&lt;br /&gt;
    &lt;br /&gt;
    dict = { 0 =&amp;gt; 'c5', 1 =&amp;gt; 'c4', 2 =&amp;gt; 'c3', 3 =&amp;gt; 'c2' }&lt;br /&gt;
&lt;br /&gt;
    if dict.key?(diff.abs)&lt;br /&gt;
      dict[diff.abs]&lt;br /&gt;
    else&lt;br /&gt;
      'c1'&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': many of the functions inside the code have an inconsistent format and lack comments, our team went through the code line by line to edit and add comments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gets CSS style for calibration report&lt;br /&gt;
  def get_css_style_for_calibration_report(diff)&lt;br /&gt;
  # Diff - the difference between stu's answer and instructor's answer&lt;br /&gt;
  dict = { 0 =&amp;gt; 'c5', 1 =&amp;gt; 'c4', 2 =&amp;gt; 'c3', 3 =&amp;gt; 'c2' }&lt;br /&gt;
  &lt;br /&gt;
  if dict.key?(diff.abs)&lt;br /&gt;
      dict[diff.abs]&lt;br /&gt;
    else&lt;br /&gt;
      'c1'&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Problem 3==== &lt;br /&gt;
* Write test cases of any new code written. Test the existing functionality after refactoring&lt;br /&gt;
:Note: Due to the majority of the code already being refactored, Thus our team did not make any major changes to the review_mapping_helper.rb file. We did however use RSPEC to test all existing functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ rspec spec/helpers/review_mapping_helper_spec.rb&lt;br /&gt;
$ rspec spec/features/review_mapping_helper_spec.rb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Work Flow Diagram===&lt;br /&gt;
[[File:codec_2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
===Travis-CI===&lt;br /&gt;
[[File:codec_6.png|500px]]&lt;br /&gt;
&lt;br /&gt;
[[File:codec_7.png|500px]]&lt;br /&gt;
&lt;br /&gt;
===RSPEC Testing===&lt;br /&gt;
&lt;br /&gt;
:'''NOTE:''' there are existing errors already inside the code before we started refactoring. And after refactoring, Our changes did not regress any functionality. Since our responsibility is only refactoring the code and not fixing the functionalities, the RSPEC Testing result showed that we have done our due diligence.&lt;br /&gt;
&lt;br /&gt;
: Result RSPEC testing Before Refactoring&lt;br /&gt;
: Command Used:&lt;br /&gt;
:: '''rspec spec/helpers/review_mapping_helper_spec.rb'''&lt;br /&gt;
:: result&lt;br /&gt;
:: 61 examples, 0 failures - spec &lt;br /&gt;
[[File:codec_3.png|500px]]&lt;br /&gt;
: Command Used:&lt;br /&gt;
:: '''rspec spec/features/review_mapping_helper_spec.rb'''&lt;br /&gt;
:: 21 examples, 20 failures - features &lt;br /&gt;
[[File:codec_4.png|500px]]&lt;br /&gt;
&lt;br /&gt;
[[File:codec_5.png|500px]]&lt;br /&gt;
&lt;br /&gt;
: Result Rspec testing After Refactoring:&lt;br /&gt;
: Our change did not regress any functionality&lt;br /&gt;
&lt;br /&gt;
===Project Mentor===&lt;br /&gt;
&lt;br /&gt;
Edward Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Jialin Cui (jcui9@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
===Team Member===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
===Reference===&lt;br /&gt;
#[http://152.7.177.127:3000/ VCL link]&lt;br /&gt;
#[https://github.com/b4443/expertiza Github Repo]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2470 Github Pull Request]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/vyasrc/expertiza/tree/refactor_suggestion_controller GitHub Project Repository Fork]&lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Project Documentation Wiki]&lt;br /&gt;
#[https://docs.codeclimate.com/docs/cognitive-complexity CodeClimate Documentation]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2255._Refactor_review_mapping_helper.rb&amp;diff=145977</id>
		<title>CSC/ECE 517 Fall 2022 - E2255. Refactor review mapping helper.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2255._Refactor_review_mapping_helper.rb&amp;diff=145977"/>
		<updated>2022-10-26T16:03:44Z</updated>

		<summary type="html">&lt;p&gt;Zwang236: /* Travis-CI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams of Expertise to work on various projects and assignments. Students can also peer review other students' submissions. Expertise supports submission across various document types, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Use Code Climate to do a diagnosis for Expertiza. Search for the issues involving the files mentioned above.&lt;br /&gt;
* Fix all the methods having the issue with cyclomatic complexity, assignment branch condition size, extra commas, space or lack of it, and assigning branching condition.&lt;br /&gt;
* Write test cases of any new code written. Test the existing functionality after refactoring&lt;br /&gt;
&lt;br /&gt;
===Problems and Solutions===&lt;br /&gt;
====Problem 1====&lt;br /&gt;
* Use Code Climate to do a diagnosis for Expertiza. Search for the issues involving the files mentioned above.&lt;br /&gt;
::'''Example:'''&lt;br /&gt;
[[File:codec_1.png|900px]]&lt;br /&gt;
[[File:codec.png]]&lt;br /&gt;
====Problem 2==== &lt;br /&gt;
* Fix all the methods having the issue with cyclomatic complexity, assignment branch condition size, extra commas, space or lack of it, and assigning branching condition.&lt;br /&gt;
::'''Example One:''' Cyclomatic complexity Error, check_submission_state has Cyclomatic complexity 10 Maximum 5&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    if submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      color.push 'purple'&lt;br /&gt;
    else&lt;br /&gt;
      link = submitted_hyperlink(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      if link.nil? || (link !~ %r{https*:\/\/wiki(.*)}) # can be extended for github links in future&lt;br /&gt;
        color.push 'green'&lt;br /&gt;
      else&lt;br /&gt;
        link_updated_at = get_link_updated_at(link)&lt;br /&gt;
        color.push link_updated_since_last?(round, assignment_due_dates, link_updated_at) ? 'purple' : 'green'&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': The problem is caused by nesting loops so we break it up&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    if submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
      color.push 'purple'&lt;br /&gt;
      return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    link = submitted_hyperlink(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    if link.nil? || (link !~ %r{https*:\/\/wiki(.*)}) # Can be extended for github links in future&lt;br /&gt;
      color.push 'green'&lt;br /&gt;
      return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    link_updated_at = get_link_updated_at(link)&lt;br /&gt;
    color.push link_updated_since_last?(round, assignment_due_dates, link_updated_at) ? 'purple' : 'green'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Two:''' Inconsistent Capitalization on comments&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # loops through the number of assignment review rounds and obtains the team colour&lt;br /&gt;
  def obtain_team_color(response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    color = []&lt;br /&gt;
&lt;br /&gt;
    (1..@assignment.num_review_rounds).each do |round|&lt;br /&gt;
      check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    color[-1]&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': Since many comments have inconsistent capitalization, our group went over the code line by line and manually fixed all inconsistent capitalizations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Loops through the number of assignment review rounds and obtains the team colour&lt;br /&gt;
  def obtain_team_color(response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    color = []&lt;br /&gt;
&lt;br /&gt;
    (1..@assignment.num_review_rounds).each do |round|&lt;br /&gt;
      check_submission_state(response_map, assignment_created, assignment_due_dates, round, color)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    color[-1]&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Three:''' Inconsistent Spacing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    submission = SubmissionRecord.where(team_id: response_map.reviewee_id, operation: ['Submit File', 'Submit Hyperlink'])&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    subm_created_at = submission.where(created_at: assignment_created..submission_due_date)&lt;br /&gt;
    if round &amp;gt; 1&lt;br /&gt;
      submission_due_last_round = assignment_due_dates.where(round: round - 1, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
      subm_created_at = submission.where(created_at: submission_due_last_round..submission_due_date)&lt;br /&gt;
    end&lt;br /&gt;
    !subm_created_at.try(:first).try(:created_at).nil?&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': Many functions within the file are clustered like the example above, we have to go through the code line by line and add spacing before lines to make the code more readable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def submitted_within_round?(round, response_map, assignment_created, assignment_due_dates)&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    submission = SubmissionRecord.where(team_id: response_map.reviewee_id, operation: ['Submit File', 'Submit Hyperlink'])&lt;br /&gt;
&lt;br /&gt;
    submission_due_date = assignment_due_dates.where(round: round, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
    subm_created_at = submission.where(created_at: assignment_created..submission_due_date)&lt;br /&gt;
&lt;br /&gt;
    if round &amp;gt; 1&lt;br /&gt;
      submission_due_last_round = assignment_due_dates.where(round: round - 1, deadline_type_id: 1).try(:first).try(:due_at)&lt;br /&gt;
      subm_created_at = submission.where(created_at: submission_due_last_round..submission_due_date)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    !subm_created_at.try(:first).try(:created_at).nil?&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Example Four:''' Add comments for some functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  #&lt;br /&gt;
  # for calibration report&lt;br /&gt;
  #&lt;br /&gt;
  def get_css_style_for_calibration_report(diff)&lt;br /&gt;
    &lt;br /&gt;
    dict = { 0 =&amp;gt; 'c5', 1 =&amp;gt; 'c4', 2 =&amp;gt; 'c3', 3 =&amp;gt; 'c2' }&lt;br /&gt;
&lt;br /&gt;
    if dict.key?(diff.abs)&lt;br /&gt;
      dict[diff.abs]&lt;br /&gt;
    else&lt;br /&gt;
      'c1'&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::'''Solution''': many of the functions inside the code have an inconsistent format and lack comments, our team went through the code line by line to edit and add comments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gets CSS style for calibration report&lt;br /&gt;
  def get_css_style_for_calibration_report(diff)&lt;br /&gt;
  # Diff - the difference between stu's answer and instructor's answer&lt;br /&gt;
  dict = { 0 =&amp;gt; 'c5', 1 =&amp;gt; 'c4', 2 =&amp;gt; 'c3', 3 =&amp;gt; 'c2' }&lt;br /&gt;
  &lt;br /&gt;
  if dict.key?(diff.abs)&lt;br /&gt;
      dict[diff.abs]&lt;br /&gt;
    else&lt;br /&gt;
      'c1'&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Problem 3==== &lt;br /&gt;
* Write test cases of any new code written. Test the existing functionality after refactoring&lt;br /&gt;
:Note: Due to the majority of the code already being refactored, Thus our team did not make any major changes to the review_mapping_helper.rb file. We did however use RSPEC to test all existing functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ rspec spec/helpers/review_mapping_helper_spec.rb&lt;br /&gt;
$ rspec spec/features/review_mapping_helper_spec.rb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Work Flow Diagram===&lt;br /&gt;
[[File:codec_2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
===Travis-CI===&lt;br /&gt;
[[File:codec_6.png|500px]]&lt;br /&gt;
&lt;br /&gt;
[[File:codec_7.png|500px]]&lt;br /&gt;
&lt;br /&gt;
===RSPEC Testing===&lt;br /&gt;
&lt;br /&gt;
:'''NOTE:''' there are existing errors already inside the code before we started refactoring. And after refactoring, Our changes did not regress any functionality. Since our responsibility is only refactoring the code and not fixing the functionalities, the RSPEC Testing result showed that we have done our due diligence.&lt;br /&gt;
&lt;br /&gt;
: Result RSPEC testing Before Refactoring&lt;br /&gt;
:: Command Used:&lt;br /&gt;
:: '''rspec spec/helpers/review_mapping_helper_spec.rb'''&lt;br /&gt;
:: result&lt;br /&gt;
:: 61 examples, 0 failures - spec &lt;br /&gt;
[[File:codec_3.png|500px]]&lt;br /&gt;
:: Command Used:&lt;br /&gt;
:: '''rspec spec/features/review_mapping_helper_spec.rb'''&lt;br /&gt;
:: 21 examples, 20 failures - features &lt;br /&gt;
[[File:codec_4.png|500px]]&lt;br /&gt;
&lt;br /&gt;
[[File:codec_5.png|500px]]&lt;br /&gt;
&lt;br /&gt;
: Result Rspec testing After Refactoring&lt;br /&gt;
:: Our change did not regress any functionality&lt;br /&gt;
&lt;br /&gt;
===Project Mentor===&lt;br /&gt;
&lt;br /&gt;
Edward Gehringer (efg@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Jialin Cui (jcui9@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
===Team Member===&lt;br /&gt;
&lt;br /&gt;
Zanxiang Wang (zwang236@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Nikhil Mehra (nmehra2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Brian Davis (bbdavis4@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
===Reference===&lt;br /&gt;
#[http://152.7.177.127:3000/ VCL link]&lt;br /&gt;
#[https://github.com/b4443/expertiza Github Repo]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2470 Github Pull Request]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/vyasrc/expertiza/tree/refactor_suggestion_controller GitHub Project Repository Fork]&lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Project Documentation Wiki]&lt;br /&gt;
#[https://docs.codeclimate.com/docs/cognitive-complexity CodeClimate Documentation]&lt;/div&gt;</summary>
		<author><name>Zwang236</name></author>
	</entry>
</feed>