<?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=Vvarada2</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=Vvarada2"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Vvarada2"/>
	<updated>2026-06-06T12:02:29Z</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_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137437</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137437"/>
		<updated>2020-11-17T23:03:43Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
HOW: We'll create an independent method for our logic and append it to the existing logic without necessarily modifying it&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;br /&gt;
&lt;br /&gt;
1. Manually impersonate the process of tagging reviews for a dummy assignment&lt;br /&gt;
&lt;br /&gt;
2. Test that the tag times are recorded and displayed properly&lt;br /&gt;
&lt;br /&gt;
3. Compare it with previous logic to check that values/logic is consistent&lt;br /&gt;
&lt;br /&gt;
4. Regression test just to see that the existing charts aren't broken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
1. Logged in as Instructor 6 with username = &amp;lt;b&amp;gt;instructor6&amp;lt;/b&amp;gt; and password = &amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Click &amp;quot;Manage...&amp;quot; -&amp;gt; &amp;quot;Assignments&amp;quot; from the top-left menu item&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT1.png|200px]]&lt;br /&gt;
&lt;br /&gt;
3. Create a new assignment by clicking the &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
4. Filling the necessary information in &amp;lt;b&amp;gt;&amp;quot;General&amp;quot;&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;&amp;quot;Rubrics&amp;quot;&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;&amp;quot;Due Dates&amp;quot;&amp;lt;/b&amp;gt; sections indicated in the following screenshots. Then click &amp;lt;b&amp;gt;Create&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT3.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT5.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Edit &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;add new..&amp;lt;/b&amp;gt; under &amp;lt;b&amp;gt;Tag prompt&amp;lt;/b&amp;gt; dropdown list&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT6.png|600px]]&lt;br /&gt;
&lt;br /&gt;
6. Click the green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; on the top-right of the popup window. Enter the value for &amp;lt;b&amp;gt;prompt&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;desc&amp;lt;/b&amp;gt; as shown in the screenshot below. Click green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button at the right most column.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT7.png|600px]]&lt;br /&gt;
&lt;br /&gt;
7. Select &amp;lt;b&amp;gt;Criterion&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;apply to question type&amp;lt;/b&amp;gt;. Click &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT8.png|600px]]&lt;br /&gt;
&lt;br /&gt;
8. Click the &amp;lt;b&amp;gt;Add Participants&amp;lt;/b&amp;gt; button, then add &amp;lt;b&amp;gt;student7339&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;student7430&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT9.png|600px]]&lt;br /&gt;
&lt;br /&gt;
9. Logged in as student7339 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and make a submission from &amp;lt;b&amp;gt;Your work&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT10.png|600px]]&lt;br /&gt;
&lt;br /&gt;
10. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Submission&amp;lt;/b&amp;gt; to be two days before today.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
11. Logged in as student7430 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and submit review from &amp;lt;b&amp;gt;Others' work&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT12_5.png|600px]]&lt;br /&gt;
[[File:E2082_MT12.png|400px]]&lt;br /&gt;
&lt;br /&gt;
12. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Review&amp;lt;/b&amp;gt; to be one day before today.&lt;br /&gt;
[[File:E2082_MT13.png|400px]]&lt;br /&gt;
&lt;br /&gt;
13. Logged in as student7339 and tag the review from &amp;lt;Your scores&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT14.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT15.png|600px]]&lt;br /&gt;
&lt;br /&gt;
14. Logged in as instructor6. Go to &amp;lt;b&amp;gt;manage...-&amp;gt;Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View Reports&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT16.png|600px]]&lt;br /&gt;
&lt;br /&gt;
15. Select &amp;lt;b&amp;gt;Answer Tagging Report&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View&amp;lt;/b&amp;gt; button. &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT17.png|600px]]&lt;br /&gt;
&lt;br /&gt;
16. The highlighted column in blue rectangle is the new feature we added&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unit Tests ===&lt;br /&gt;
&lt;br /&gt;
Tests were added to test the accuracy of calculating the statistics of the timings we have tracked in this project.&lt;br /&gt;
The comprehensive test can test all the math logic involved in our design.&lt;br /&gt;
&lt;br /&gt;
[[File:Test_cases2.png]]&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137436</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137436"/>
		<updated>2020-11-17T23:03:25Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;br /&gt;
&lt;br /&gt;
1. Manually impersonate the process of tagging reviews for a dummy assignment&lt;br /&gt;
&lt;br /&gt;
2. Test that the tag times are recorded and displayed properly&lt;br /&gt;
&lt;br /&gt;
3. Compare it with previous logic to check that values/logic is consistent&lt;br /&gt;
&lt;br /&gt;
4. Regression test just to see that the existing charts aren't broken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
1. Logged in as Instructor 6 with username = &amp;lt;b&amp;gt;instructor6&amp;lt;/b&amp;gt; and password = &amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Click &amp;quot;Manage...&amp;quot; -&amp;gt; &amp;quot;Assignments&amp;quot; from the top-left menu item&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT1.png|200px]]&lt;br /&gt;
&lt;br /&gt;
3. Create a new assignment by clicking the &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
4. Filling the necessary information in &amp;lt;b&amp;gt;&amp;quot;General&amp;quot;&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;&amp;quot;Rubrics&amp;quot;&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;&amp;quot;Due Dates&amp;quot;&amp;lt;/b&amp;gt; sections indicated in the following screenshots. Then click &amp;lt;b&amp;gt;Create&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT3.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT5.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Edit &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;add new..&amp;lt;/b&amp;gt; under &amp;lt;b&amp;gt;Tag prompt&amp;lt;/b&amp;gt; dropdown list&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT6.png|600px]]&lt;br /&gt;
&lt;br /&gt;
6. Click the green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; on the top-right of the popup window. Enter the value for &amp;lt;b&amp;gt;prompt&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;desc&amp;lt;/b&amp;gt; as shown in the screenshot below. Click green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button at the right most column.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT7.png|600px]]&lt;br /&gt;
&lt;br /&gt;
7. Select &amp;lt;b&amp;gt;Criterion&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;apply to question type&amp;lt;/b&amp;gt;. Click &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT8.png|600px]]&lt;br /&gt;
&lt;br /&gt;
8. Click the &amp;lt;b&amp;gt;Add Participants&amp;lt;/b&amp;gt; button, then add &amp;lt;b&amp;gt;student7339&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;student7430&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT9.png|600px]]&lt;br /&gt;
&lt;br /&gt;
9. Logged in as student7339 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and make a submission from &amp;lt;b&amp;gt;Your work&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT10.png|600px]]&lt;br /&gt;
&lt;br /&gt;
10. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Submission&amp;lt;/b&amp;gt; to be two days before today.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
11. Logged in as student7430 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and submit review from &amp;lt;b&amp;gt;Others' work&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT12_5.png|600px]]&lt;br /&gt;
[[File:E2082_MT12.png|400px]]&lt;br /&gt;
&lt;br /&gt;
12. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Review&amp;lt;/b&amp;gt; to be one day before today.&lt;br /&gt;
[[File:E2082_MT13.png|400px]]&lt;br /&gt;
&lt;br /&gt;
13. Logged in as student7339 and tag the review from &amp;lt;Your scores&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT14.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT15.png|600px]]&lt;br /&gt;
&lt;br /&gt;
14. Logged in as instructor6. Go to &amp;lt;b&amp;gt;manage...-&amp;gt;Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View Reports&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT16.png|600px]]&lt;br /&gt;
&lt;br /&gt;
15. Select &amp;lt;b&amp;gt;Answer Tagging Report&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View&amp;lt;/b&amp;gt; button. &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT17.png|600px]]&lt;br /&gt;
&lt;br /&gt;
16. The highlighted column in blue rectangle is the new feature we added&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unit Tests ===&lt;br /&gt;
&lt;br /&gt;
Tests were added to test the accuracy of calculating the statistics of the timings we have tracked in this project.&lt;br /&gt;
The comprehensive test can test all the math logic involved in our design.&lt;br /&gt;
&lt;br /&gt;
[[File:Test_cases2.png]]&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137435</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137435"/>
		<updated>2020-11-17T23:03:11Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;br /&gt;
&lt;br /&gt;
1. Manually impersonate the process of tagging reviews for a dummy assignment&lt;br /&gt;
&lt;br /&gt;
2. Test that the tag times are recorded and displayed properly&lt;br /&gt;
&lt;br /&gt;
3. Compare it with previous logic to check that values/logic is consistent&lt;br /&gt;
&lt;br /&gt;
4. Regression test just to see that the existing charts aren't broken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
1. Logged in as Instructor 6 with username = &amp;lt;b&amp;gt;instructor6&amp;lt;/b&amp;gt; and password = &amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Click &amp;quot;Manage...&amp;quot; -&amp;gt; &amp;quot;Assignments&amp;quot; from the top-left menu item&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT1.png|200px]]&lt;br /&gt;
&lt;br /&gt;
3. Create a new assignment by clicking the &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
4. Filling the necessary information in &amp;lt;b&amp;gt;&amp;quot;General&amp;quot;&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;&amp;quot;Rubrics&amp;quot;&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;&amp;quot;Due Dates&amp;quot;&amp;lt;/b&amp;gt; sections indicated in the following screenshots. Then click &amp;lt;b&amp;gt;Create&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT3.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT5.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Edit &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;add new..&amp;lt;/b&amp;gt; under &amp;lt;b&amp;gt;Tag prompt&amp;lt;/b&amp;gt; dropdown list&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT6.png|600px]]&lt;br /&gt;
&lt;br /&gt;
6. Click the green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; on the top-right of the popup window. Enter the value for &amp;lt;b&amp;gt;prompt&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;desc&amp;lt;/b&amp;gt; as shown in the screenshot below. Click green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button at the right most column.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT7.png|600px]]&lt;br /&gt;
&lt;br /&gt;
7. Select &amp;lt;b&amp;gt;Criterion&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;apply to question type&amp;lt;/b&amp;gt;. Click &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT8.png|600px]]&lt;br /&gt;
&lt;br /&gt;
8. Click the &amp;lt;b&amp;gt;Add Participants&amp;lt;/b&amp;gt; button, then add &amp;lt;b&amp;gt;student7339&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;student7430&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT9.png|600px]]&lt;br /&gt;
&lt;br /&gt;
9. Logged in as student7339 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and make a submission from &amp;lt;b&amp;gt;Your work&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT10.png|600px]]&lt;br /&gt;
&lt;br /&gt;
10. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Submission&amp;lt;/b&amp;gt; to be two days before today.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
11. Logged in as student7430 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and submit review from &amp;lt;b&amp;gt;Others' work&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT12_5.png|600px]]&lt;br /&gt;
[[File:E2082_MT12.png|400px]]&lt;br /&gt;
&lt;br /&gt;
12. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Review&amp;lt;/b&amp;gt; to be one day before today.&lt;br /&gt;
[[File:E2082_MT13.png|400px]]&lt;br /&gt;
&lt;br /&gt;
13. Logged in as student7339 and tag the review from &amp;lt;Your scores&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT14.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT15.png|600px]]&lt;br /&gt;
&lt;br /&gt;
14. Logged in as instructor6. Go to &amp;lt;b&amp;gt;manage...-&amp;gt;Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View Reports&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT16.png|600px]]&lt;br /&gt;
&lt;br /&gt;
15. Select &amp;lt;b&amp;gt;Answer Tagging Report&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View&amp;lt;/b&amp;gt; button. &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT17.png|600px]]&lt;br /&gt;
&lt;br /&gt;
16. The highlighted column in blue rectangle is the new feature we added&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unit Tests ===&lt;br /&gt;
&lt;br /&gt;
Tests were added to test the accuracy of calculating the statistics of the timings we have tracked in this project.&lt;br /&gt;
The comprehensive test can test all the math logic involved in our design.&lt;br /&gt;
&lt;br /&gt;
[[File:Test_cases2.png]]&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137433</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137433"/>
		<updated>2020-11-17T23:02:43Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main Logic is shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Main logic.png]]&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;br /&gt;
&lt;br /&gt;
1. Manually impersonate the process of tagging reviews for a dummy assignment&lt;br /&gt;
&lt;br /&gt;
2. Test that the tag times are recorded and displayed properly&lt;br /&gt;
&lt;br /&gt;
3. Compare it with previous logic to check that values/logic is consistent&lt;br /&gt;
&lt;br /&gt;
4. Regression test just to see that the existing charts aren't broken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
1. Logged in as Instructor 6 with username = &amp;lt;b&amp;gt;instructor6&amp;lt;/b&amp;gt; and password = &amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Click &amp;quot;Manage...&amp;quot; -&amp;gt; &amp;quot;Assignments&amp;quot; from the top-left menu item&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT1.png|200px]]&lt;br /&gt;
&lt;br /&gt;
3. Create a new assignment by clicking the &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
4. Filling the necessary information in &amp;lt;b&amp;gt;&amp;quot;General&amp;quot;&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;&amp;quot;Rubrics&amp;quot;&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;&amp;quot;Due Dates&amp;quot;&amp;lt;/b&amp;gt; sections indicated in the following screenshots. Then click &amp;lt;b&amp;gt;Create&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT3.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT5.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Edit &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;add new..&amp;lt;/b&amp;gt; under &amp;lt;b&amp;gt;Tag prompt&amp;lt;/b&amp;gt; dropdown list&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT6.png|600px]]&lt;br /&gt;
&lt;br /&gt;
6. Click the green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; on the top-right of the popup window. Enter the value for &amp;lt;b&amp;gt;prompt&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;desc&amp;lt;/b&amp;gt; as shown in the screenshot below. Click green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button at the right most column.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT7.png|600px]]&lt;br /&gt;
&lt;br /&gt;
7. Select &amp;lt;b&amp;gt;Criterion&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;apply to question type&amp;lt;/b&amp;gt;. Click &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT8.png|600px]]&lt;br /&gt;
&lt;br /&gt;
8. Click the &amp;lt;b&amp;gt;Add Participants&amp;lt;/b&amp;gt; button, then add &amp;lt;b&amp;gt;student7339&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;student7430&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT9.png|600px]]&lt;br /&gt;
&lt;br /&gt;
9. Logged in as student7339 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and make a submission from &amp;lt;b&amp;gt;Your work&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT10.png|600px]]&lt;br /&gt;
&lt;br /&gt;
10. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Submission&amp;lt;/b&amp;gt; to be two days before today.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
11. Logged in as student7430 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and submit review from &amp;lt;b&amp;gt;Others' work&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT12_5.png|600px]]&lt;br /&gt;
[[File:E2082_MT12.png|400px]]&lt;br /&gt;
&lt;br /&gt;
12. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Review&amp;lt;/b&amp;gt; to be one day before today.&lt;br /&gt;
[[File:E2082_MT13.png|400px]]&lt;br /&gt;
&lt;br /&gt;
13. Logged in as student7339 and tag the review from &amp;lt;Your scores&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT14.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT15.png|600px]]&lt;br /&gt;
&lt;br /&gt;
14. Logged in as instructor6. Go to &amp;lt;b&amp;gt;manage...-&amp;gt;Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View Reports&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT16.png|600px]]&lt;br /&gt;
&lt;br /&gt;
15. Select &amp;lt;b&amp;gt;Answer Tagging Report&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View&amp;lt;/b&amp;gt; button. &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT17.png|600px]]&lt;br /&gt;
&lt;br /&gt;
16. The highlighted column in blue rectangle is the new feature we added&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unit Tests ===&lt;br /&gt;
&lt;br /&gt;
Tests were added to test the accuracy of calculating the statistics of the timings we have tracked in this project.&lt;br /&gt;
The comprehensive test can test all the math logic involved in our design.&lt;br /&gt;
&lt;br /&gt;
[[File:Test_cases2.png]]&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Main_logic.png&amp;diff=137432</id>
		<title>File:Main logic.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Main_logic.png&amp;diff=137432"/>
		<updated>2020-11-17T23:01:54Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137431</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137431"/>
		<updated>2020-11-17T23:01:40Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main Logic is shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;br /&gt;
&lt;br /&gt;
1. Manually impersonate the process of tagging reviews for a dummy assignment&lt;br /&gt;
&lt;br /&gt;
2. Test that the tag times are recorded and displayed properly&lt;br /&gt;
&lt;br /&gt;
3. Compare it with previous logic to check that values/logic is consistent&lt;br /&gt;
&lt;br /&gt;
4. Regression test just to see that the existing charts aren't broken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
1. Logged in as Instructor 6 with username = &amp;lt;b&amp;gt;instructor6&amp;lt;/b&amp;gt; and password = &amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Click &amp;quot;Manage...&amp;quot; -&amp;gt; &amp;quot;Assignments&amp;quot; from the top-left menu item&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT1.png|200px]]&lt;br /&gt;
&lt;br /&gt;
3. Create a new assignment by clicking the &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
4. Filling the necessary information in &amp;lt;b&amp;gt;&amp;quot;General&amp;quot;&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;&amp;quot;Rubrics&amp;quot;&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;&amp;quot;Due Dates&amp;quot;&amp;lt;/b&amp;gt; sections indicated in the following screenshots. Then click &amp;lt;b&amp;gt;Create&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT3.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT5.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Edit &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;add new..&amp;lt;/b&amp;gt; under &amp;lt;b&amp;gt;Tag prompt&amp;lt;/b&amp;gt; dropdown list&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT6.png|600px]]&lt;br /&gt;
&lt;br /&gt;
6. Click the green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; on the top-right of the popup window. Enter the value for &amp;lt;b&amp;gt;prompt&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;desc&amp;lt;/b&amp;gt; as shown in the screenshot below. Click green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button at the right most column.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT7.png|600px]]&lt;br /&gt;
&lt;br /&gt;
7. Select &amp;lt;b&amp;gt;Criterion&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;apply to question type&amp;lt;/b&amp;gt;. Click &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT8.png|600px]]&lt;br /&gt;
&lt;br /&gt;
8. Click the &amp;lt;b&amp;gt;Add Participants&amp;lt;/b&amp;gt; button, then add &amp;lt;b&amp;gt;student7339&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;student7430&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT9.png|600px]]&lt;br /&gt;
&lt;br /&gt;
9. Logged in as student7339 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and make a submission from &amp;lt;b&amp;gt;Your work&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT10.png|600px]]&lt;br /&gt;
&lt;br /&gt;
10. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Submission&amp;lt;/b&amp;gt; to be two days before today.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
11. Logged in as student7430 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and submit review from &amp;lt;b&amp;gt;Others' work&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT12_5.png|600px]]&lt;br /&gt;
[[File:E2082_MT12.png|400px]]&lt;br /&gt;
&lt;br /&gt;
12. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Review&amp;lt;/b&amp;gt; to be one day before today.&lt;br /&gt;
[[File:E2082_MT13.png|400px]]&lt;br /&gt;
&lt;br /&gt;
13. Logged in as student7339 and tag the review from &amp;lt;Your scores&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT14.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT15.png|600px]]&lt;br /&gt;
&lt;br /&gt;
14. Logged in as instructor6. Go to &amp;lt;b&amp;gt;manage...-&amp;gt;Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View Reports&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT16.png|600px]]&lt;br /&gt;
&lt;br /&gt;
15. Select &amp;lt;b&amp;gt;Answer Tagging Report&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View&amp;lt;/b&amp;gt; button. &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT17.png|600px]]&lt;br /&gt;
&lt;br /&gt;
16. The highlighted column in blue rectangle is the new feature we added&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unit Tests ===&lt;br /&gt;
&lt;br /&gt;
Tests were added to test the accuracy of calculating the statistics of the timings we have tracked in this project.&lt;br /&gt;
The comprehensive test can test all the math logic involved in our design.&lt;br /&gt;
&lt;br /&gt;
[[File:Test_cases2.png]]&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137430</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137430"/>
		<updated>2020-11-17T23:00:30Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Unit Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
'''[PLAN]''': We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;br /&gt;
&lt;br /&gt;
1. Manually impersonate the process of tagging reviews for a dummy assignment&lt;br /&gt;
&lt;br /&gt;
2. Test that the tag times are recorded and displayed properly&lt;br /&gt;
&lt;br /&gt;
3. Compare it with previous logic to check that values/logic is consistent&lt;br /&gt;
&lt;br /&gt;
4. Regression test just to see that the existing charts aren't broken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
1. Logged in as Instructor 6 with username = &amp;lt;b&amp;gt;instructor6&amp;lt;/b&amp;gt; and password = &amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Click &amp;quot;Manage...&amp;quot; -&amp;gt; &amp;quot;Assignments&amp;quot; from the top-left menu item&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT1.png|200px]]&lt;br /&gt;
&lt;br /&gt;
3. Create a new assignment by clicking the &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
4. Filling the necessary information in &amp;lt;b&amp;gt;&amp;quot;General&amp;quot;&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;&amp;quot;Rubrics&amp;quot;&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;&amp;quot;Due Dates&amp;quot;&amp;lt;/b&amp;gt; sections indicated in the following screenshots. Then click &amp;lt;b&amp;gt;Create&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT3.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT5.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Edit &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;add new..&amp;lt;/b&amp;gt; under &amp;lt;b&amp;gt;Tag prompt&amp;lt;/b&amp;gt; dropdown list&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT6.png|600px]]&lt;br /&gt;
&lt;br /&gt;
6. Click the green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; on the top-right of the popup window. Enter the value for &amp;lt;b&amp;gt;prompt&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;desc&amp;lt;/b&amp;gt; as shown in the screenshot below. Click green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button at the right most column.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT7.png|600px]]&lt;br /&gt;
&lt;br /&gt;
7. Select &amp;lt;b&amp;gt;Criterion&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;apply to question type&amp;lt;/b&amp;gt;. Click &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT8.png|600px]]&lt;br /&gt;
&lt;br /&gt;
8. Click the &amp;lt;b&amp;gt;Add Participants&amp;lt;/b&amp;gt; button, then add &amp;lt;b&amp;gt;student7339&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;student7430&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT9.png|600px]]&lt;br /&gt;
&lt;br /&gt;
9. Logged in as student7339 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and make a submission from &amp;lt;b&amp;gt;Your work&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT10.png|600px]]&lt;br /&gt;
&lt;br /&gt;
10. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Submission&amp;lt;/b&amp;gt; to be two days before today.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
11. Logged in as student7430 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and submit review from &amp;lt;b&amp;gt;Others' work&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT12_5.png|600px]]&lt;br /&gt;
[[File:E2082_MT12.png|400px]]&lt;br /&gt;
&lt;br /&gt;
12. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Review&amp;lt;/b&amp;gt; to be one day before today.&lt;br /&gt;
[[File:E2082_MT13.png|400px]]&lt;br /&gt;
&lt;br /&gt;
13. Logged in as student7339 and tag the review from &amp;lt;Your scores&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT14.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT15.png|600px]]&lt;br /&gt;
&lt;br /&gt;
14. Logged in as instructor6. Go to &amp;lt;b&amp;gt;manage...-&amp;gt;Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View Reports&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT16.png|600px]]&lt;br /&gt;
&lt;br /&gt;
15. Select &amp;lt;b&amp;gt;Answer Tagging Report&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View&amp;lt;/b&amp;gt; button. &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT17.png|600px]]&lt;br /&gt;
&lt;br /&gt;
16. The highlighted column in blue rectangle is the new feature we added&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unit Tests ===&lt;br /&gt;
&lt;br /&gt;
Tests were added to test the accuracy of calculating the statistics of the timings we have tracked in this project.&lt;br /&gt;
The comprehensive test can test all the math logic involved in our design.&lt;br /&gt;
&lt;br /&gt;
[[File:Test_cases2.png]]&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Test_cases2.png&amp;diff=137429</id>
		<title>File:Test cases2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Test_cases2.png&amp;diff=137429"/>
		<updated>2020-11-17T22:59:29Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137427</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137427"/>
		<updated>2020-11-17T22:58:32Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
'''[PLAN]''': We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;br /&gt;
&lt;br /&gt;
1. Manually impersonate the process of tagging reviews for a dummy assignment&lt;br /&gt;
&lt;br /&gt;
2. Test that the tag times are recorded and displayed properly&lt;br /&gt;
&lt;br /&gt;
3. Compare it with previous logic to check that values/logic is consistent&lt;br /&gt;
&lt;br /&gt;
4. Regression test just to see that the existing charts aren't broken&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
1. Logged in as Instructor 6 with username = &amp;lt;b&amp;gt;instructor6&amp;lt;/b&amp;gt; and password = &amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Click &amp;quot;Manage...&amp;quot; -&amp;gt; &amp;quot;Assignments&amp;quot; from the top-left menu item&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT1.png|200px]]&lt;br /&gt;
&lt;br /&gt;
3. Create a new assignment by clicking the &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
4. Filling the necessary information in &amp;lt;b&amp;gt;&amp;quot;General&amp;quot;&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;&amp;quot;Rubrics&amp;quot;&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;&amp;quot;Due Dates&amp;quot;&amp;lt;/b&amp;gt; sections indicated in the following screenshots. Then click &amp;lt;b&amp;gt;Create&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT3.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT5.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Edit &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;add new..&amp;lt;/b&amp;gt; under &amp;lt;b&amp;gt;Tag prompt&amp;lt;/b&amp;gt; dropdown list&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT6.png|600px]]&lt;br /&gt;
&lt;br /&gt;
6. Click the green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; on the top-right of the popup window. Enter the value for &amp;lt;b&amp;gt;prompt&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;desc&amp;lt;/b&amp;gt; as shown in the screenshot below. Click green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button at the right most column.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT7.png|600px]]&lt;br /&gt;
&lt;br /&gt;
7. Select &amp;lt;b&amp;gt;Criterion&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;apply to question type&amp;lt;/b&amp;gt;. Click &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT8.png|600px]]&lt;br /&gt;
&lt;br /&gt;
8. Click the &amp;lt;b&amp;gt;Add Participants&amp;lt;/b&amp;gt; button, then add &amp;lt;b&amp;gt;student7339&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;student7430&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT9.png|600px]]&lt;br /&gt;
&lt;br /&gt;
9. Logged in as student7339 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and make a submission from &amp;lt;b&amp;gt;Your work&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT10.png|600px]]&lt;br /&gt;
&lt;br /&gt;
10. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Submission&amp;lt;/b&amp;gt; to be two days before today.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
11. Logged in as student7430 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and submit review from &amp;lt;b&amp;gt;Others' work&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT12_5.png|600px]]&lt;br /&gt;
[[File:E2082_MT12.png|400px]]&lt;br /&gt;
&lt;br /&gt;
12. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Review&amp;lt;/b&amp;gt; to be one day before today.&lt;br /&gt;
[[File:E2082_MT13.png|400px]]&lt;br /&gt;
&lt;br /&gt;
13. Logged in as student7339 and tag the review from &amp;lt;Your scores&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT14.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT15.png|600px]]&lt;br /&gt;
&lt;br /&gt;
14. Logged in as instructor6. Go to &amp;lt;b&amp;gt;manage...-&amp;gt;Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View Reports&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT16.png|600px]]&lt;br /&gt;
&lt;br /&gt;
15. Select &amp;lt;b&amp;gt;Answer Tagging Report&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View&amp;lt;/b&amp;gt; button. &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT17.png|600px]]&lt;br /&gt;
&lt;br /&gt;
16. The highlighted column in blue rectangle is the new feature we added&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unit Tests ===&lt;br /&gt;
&lt;br /&gt;
Tests were added to test the accuracy of calculating the statistics of the timings we have tracked in this project.&lt;br /&gt;
A single comprehensive test can test all the math logic involved in our design.&lt;br /&gt;
&lt;br /&gt;
[[File:Example.jpg]]&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137426</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=137426"/>
		<updated>2020-11-17T22:56:49Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
'''[PLAN]''': We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
'''[PLAN]''': To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;br /&gt;
&lt;br /&gt;
1. Manually impersonate the process of tagging reviews for a dummy assignment&lt;br /&gt;
&lt;br /&gt;
2. Test that the tag times are recorded and displayed properly&lt;br /&gt;
&lt;br /&gt;
3. Compare it with previous logic to check that values/logic is consistent&lt;br /&gt;
&lt;br /&gt;
4. Regression test just to see that the existing charts aren't broken&lt;br /&gt;
&lt;br /&gt;
'''NOTE: TESTING CODE WILL BE PASTED HERE AS WE REACH THE FINAL CODE SUBMISSION DEADLINE'''&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
1. Logged in as Instructor 6 with username = &amp;lt;b&amp;gt;instructor6&amp;lt;/b&amp;gt; and password = &amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Click &amp;quot;Manage...&amp;quot; -&amp;gt; &amp;quot;Assignments&amp;quot; from the top-left menu item&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT1.png|200px]]&lt;br /&gt;
&lt;br /&gt;
3. Create a new assignment by clicking the &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
4. Filling the necessary information in &amp;lt;b&amp;gt;&amp;quot;General&amp;quot;&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;&amp;quot;Rubrics&amp;quot;&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;&amp;quot;Due Dates&amp;quot;&amp;lt;/b&amp;gt; sections indicated in the following screenshots. Then click &amp;lt;b&amp;gt;Create&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT3.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT4.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT5.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Edit &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;add new..&amp;lt;/b&amp;gt; under &amp;lt;b&amp;gt;Tag prompt&amp;lt;/b&amp;gt; dropdown list&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT6.png|600px]]&lt;br /&gt;
&lt;br /&gt;
6. Click the green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; on the top-right of the popup window. Enter the value for &amp;lt;b&amp;gt;prompt&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;desc&amp;lt;/b&amp;gt; as shown in the screenshot below. Click green &amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt; button at the right most column.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT7.png|600px]]&lt;br /&gt;
&lt;br /&gt;
7. Select &amp;lt;b&amp;gt;Criterion&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;apply to question type&amp;lt;/b&amp;gt;. Click &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT8.png|600px]]&lt;br /&gt;
&lt;br /&gt;
8. Click the &amp;lt;b&amp;gt;Add Participants&amp;lt;/b&amp;gt; button, then add &amp;lt;b&amp;gt;student7339&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;student7430&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT9.png|600px]]&lt;br /&gt;
&lt;br /&gt;
9. Logged in as student7339 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and make a submission from &amp;lt;b&amp;gt;Your work&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT10.png|600px]]&lt;br /&gt;
&lt;br /&gt;
10. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Submission&amp;lt;/b&amp;gt; to be two days before today.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT11.png|400px]]&lt;br /&gt;
&lt;br /&gt;
11. Logged in as student7430 with password=&amp;lt;b&amp;gt;password&amp;lt;/b&amp;gt; and submit review from &amp;lt;b&amp;gt;Others' work&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT12_5.png|600px]]&lt;br /&gt;
[[File:E2082_MT12.png|400px]]&lt;br /&gt;
&lt;br /&gt;
12. Logged in as instructor6 and modify &amp;lt;b&amp;gt;Tagging Assignment&amp;lt;/b&amp;gt; due date for &amp;lt;b&amp;gt;Round 1: Review&amp;lt;/b&amp;gt; to be one day before today.&lt;br /&gt;
[[File:E2082_MT13.png|400px]]&lt;br /&gt;
&lt;br /&gt;
13. Logged in as student7339 and tag the review from &amp;lt;Your scores&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT14.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT15.png|600px]]&lt;br /&gt;
&lt;br /&gt;
14. Logged in as instructor6. Go to &amp;lt;b&amp;gt;manage...-&amp;gt;Assignment&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View Reports&amp;lt;/b&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT16.png|600px]]&lt;br /&gt;
&lt;br /&gt;
15. Select &amp;lt;b&amp;gt;Answer Tagging Report&amp;lt;/b&amp;gt; and click &amp;lt;b&amp;gt;View&amp;lt;/b&amp;gt; button. &lt;br /&gt;
&lt;br /&gt;
[[File:E2082_MT17.png|600px]]&lt;br /&gt;
&lt;br /&gt;
16. The highlighted column in blue rectangle is the new feature we added&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136598</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136598"/>
		<updated>2020-10-29T18:45:59Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
'''[PLAN]''': We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
'''[PLAN]''': We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
'''NOTE: CODE REVIEW WILL BE PASTED HERE AS WE REACH THE FINAL CODE SUBMISSION DEADLINE'''&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
'''[PLAN]''': To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;br /&gt;
&lt;br /&gt;
1. Manually impersonate the process of tagging reviews for a dummy assignment&lt;br /&gt;
&lt;br /&gt;
2. Test that the tag times are recorded and displayed properly&lt;br /&gt;
&lt;br /&gt;
3. Compare it with previous logic to check that values/logic is consistent&lt;br /&gt;
&lt;br /&gt;
4. Regression test just to see that the existing charts aren't broken&lt;br /&gt;
&lt;br /&gt;
'''NOTE: TESTING CODE WILL BE PASTED HERE AS WE REACH THE FINAL CODE SUBMISSION DEADLINE'''&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136597</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136597"/>
		<updated>2020-10-29T18:45:53Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
'''[PLAN]''': We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
'''[PLAN]''': We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
'''NOTE: CODE REVIEW WILL BE PASTED HERE AS WE REACH THE FINAL CODE SUBMISSION DEADLINE'''&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
[PLAN]: To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;br /&gt;
&lt;br /&gt;
1. Manually impersonate the process of tagging reviews for a dummy assignment&lt;br /&gt;
&lt;br /&gt;
2. Test that the tag times are recorded and displayed properly&lt;br /&gt;
&lt;br /&gt;
3. Compare it with previous logic to check that values/logic is consistent&lt;br /&gt;
&lt;br /&gt;
4. Regression test just to see that the existing charts aren't broken&lt;br /&gt;
&lt;br /&gt;
'''NOTE: TESTING CODE WILL BE PASTED HERE AS WE REACH THE FINAL CODE SUBMISSION DEADLINE'''&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136596</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136596"/>
		<updated>2020-10-29T18:45:46Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
'''[PLAN]''': We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
'''NOTE: CODE REVIEW WILL BE PASTED HERE AS WE REACH THE FINAL CODE SUBMISSION DEADLINE'''&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
[PLAN]: To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;br /&gt;
&lt;br /&gt;
1. Manually impersonate the process of tagging reviews for a dummy assignment&lt;br /&gt;
&lt;br /&gt;
2. Test that the tag times are recorded and displayed properly&lt;br /&gt;
&lt;br /&gt;
3. Compare it with previous logic to check that values/logic is consistent&lt;br /&gt;
&lt;br /&gt;
4. Regression test just to see that the existing charts aren't broken&lt;br /&gt;
&lt;br /&gt;
'''NOTE: TESTING CODE WILL BE PASTED HERE AS WE REACH THE FINAL CODE SUBMISSION DEADLINE'''&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136595</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136595"/>
		<updated>2020-10-29T18:45:33Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
'''NOTE: CODE REVIEW WILL BE PASTED HERE AS WE REACH THE FINAL CODE SUBMISSION DEADLINE'''&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
[PLAN]: To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;br /&gt;
&lt;br /&gt;
1. Manually impersonate the process of tagging reviews for a dummy assignment&lt;br /&gt;
&lt;br /&gt;
2. Test that the tag times are recorded and displayed properly&lt;br /&gt;
&lt;br /&gt;
3. Compare it with previous logic to check that values/logic is consistent&lt;br /&gt;
&lt;br /&gt;
4. Regression test just to see that the existing charts aren't broken&lt;br /&gt;
&lt;br /&gt;
'''NOTE: TESTING CODE WILL BE PASTED HERE AS WE REACH THE FINAL CODE SUBMISSION DEADLINE'''&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136594</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136594"/>
		<updated>2020-10-29T18:45:24Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
'''NOTE: CODE REVIEW WILL BE PASTED HERE AS WE REACH THE FINAL CODE SUBMISSION DEADLINE'''&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
[PLAN]: To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;br /&gt;
&lt;br /&gt;
1. Manually impersonate the process of tagging reviews for a dummy assignment&lt;br /&gt;
2. Test that the tag times are recorded and displayed properly&lt;br /&gt;
3. Compare it with previous logic to check that values/logic is consistent&lt;br /&gt;
4. Regression test just to see that the existing charts aren't broken&lt;br /&gt;
&lt;br /&gt;
'''NOTE: TESTING CODE WILL BE PASTED HERE AS WE REACH THE FINAL CODE SUBMISSION DEADLINE'''&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136593</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136593"/>
		<updated>2020-10-29T18:43:45Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
'''NOTE: CODE REVIEW WILL BE PASTED HERE AS WE REACH THE FINAL CODE SUBMISSION DEADLINE'''&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
[PLAN]: To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136592</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136592"/>
		<updated>2020-10-29T18:43:30Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CODE REVIEW WILL BE PASTED HERE AS WE REACH THE FINAL CODE SUBMISSION DEADLINE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
[PLAN]: To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136591</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136591"/>
		<updated>2020-10-29T18:42:46Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose a method that aims to perform:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
[PLAN]: To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136590</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136590"/>
		<updated>2020-10-29T18:42:34Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose a method that aims to perform:&lt;br /&gt;
1. Query the database for details on reviews and their tags&lt;br /&gt;
2. Update the existing chart logic to process these numbers&lt;br /&gt;
3. Update the report format to include these times&lt;br /&gt;
4. Add tests for internal logic and manual UI-testing too&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
[PLAN]: To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136124</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136124"/>
		<updated>2020-10-23T00:49:16Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose to query the values from the existing data for these charts and present processed, formatted results.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
[PLAN]: To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136123</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136123"/>
		<updated>2020-10-23T00:49:10Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[PLAN]: We propose to query the values from the existing data for these charts and present processed, formatted results.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
[TENTATIVE]: We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
[PLAN]: To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136122</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136122"/>
		<updated>2020-10-23T00:49:02Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[TENTATIVE]: We propose to query the values from the existing data for these charts and present processed, formatted results.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
[TENTATIVE]: We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
[PLAN]: To manually reproduce the scenario on the UI and test the results on our new/modified time reports&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136119</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136119"/>
		<updated>2020-10-23T00:47:51Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[TENTATIVE]: We propose to query the values from the existing data for these charts and present processed, formatted results.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
[TENTATIVE]: We propose to create an independent method for our logic and append it to the existing logic without necessarily modifying it (unless the goal is to refactor old code)&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136117</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136117"/>
		<updated>2020-10-23T00:46:55Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[TENTATIVE]: We propose to query the values from the existing data for these charts and present processed, formatted results.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
== Test Plan ==&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136113</id>
		<title>CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2082._Track_time_between_successive_tag_assignments&amp;diff=136113"/>
		<updated>2020-10-23T00:44:48Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Overview ==&lt;br /&gt;
=== Background ===&lt;br /&gt;
The Expertiza project takes advantage of peer review among students to allow them to learn from each other. Tracking the time that a student spends on each submitted resource is meaningful for instructors to study and improve the teaching experience, and also in evaluating the quality/sincerity of the reviews.&lt;br /&gt;
&lt;br /&gt;
'''Previous work done in Fall 2019 enables tracking time between successive time tag assignment.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Tagging1993.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
However, there are several problems with their solution:&lt;br /&gt;
* There is no automated tests using mocked data to test their implementation.&lt;br /&gt;
* The previous team added a tagging interval chart to each row (representing each participant) in the Answer Tagging report. However, the chart will be hard to read if there hundreds of tagging interval.&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
* Display the tagging interval information as a number alongside the graph in order to make it more intuitive to read&lt;br /&gt;
* Add test cases regarding new changes&lt;br /&gt;
&lt;br /&gt;
'''Example Mockup of Added Column'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 Mockup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible changes to be made ===&lt;br /&gt;
* Refactor code from the previous implementation&lt;br /&gt;
* Display intervals using a different type of graph (bar graph, line graph, etc)&lt;br /&gt;
'''For loops that could be implemented into a separate method'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ECE517Project4 ForLoops.png]]&lt;br /&gt;
&lt;br /&gt;
=== File Involved ===&lt;br /&gt;
* helpers/report_formatter_helper.rb&lt;br /&gt;
* helpers/review_mapping_helper.rb &lt;br /&gt;
* models/tag_prompt_deployment.rb&lt;br /&gt;
* models/vm_user_answer_tagging.rb&lt;br /&gt;
* views/reports/_answer_tagging_report.html.erb&lt;br /&gt;
&lt;br /&gt;
=== Previous Work ===&lt;br /&gt;
The following links are the deliverables from the original implementation in Fall 2019.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2019_-_E1993_Track_Time_Between_Successive_Tag_Assignments CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]&lt;br /&gt;
* [https://www.youtube.com/watch?v=YxR9sitpZcs&amp;amp;feature=youtu.be&amp;amp;ab_channel=HackOverFlow Youtube Explanation]&lt;br /&gt;
* [https://github.com/Galactis/expertiza Git Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza/pull/1642 Git Pull Request]&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
Joshua Aaron Horwitz (jahorwit)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Varun Varadarajan (vvarada2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nicholas Viado (ndviado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tsu-Hsin Yeh (tyeh3)&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
'''Mentor:''' Kai Xiao (yxiao28)&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
== Implementation ==&lt;br /&gt;
== Test Plan ==&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135743</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135743"/>
		<updated>2020-10-20T04:44:24Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* How to Check */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the '''AssignmentTeam''' class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move portion of the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Approve_2.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from '''suggestion_controller''' having to do with a sign up topic to its own new method in '''sign_up_topic.rb''' now called '''new_topic_from_suggestion'''. In doing so, we also delete the entire '''approve method''' from '''suggestion_controller''', since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve 1.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of '''approve_suggestion''' to '''approve_suggestion_and_notify''', since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need ('''@user_id, @team_id, and @topic_id''') as well as calling our newly created '''new_topic_from_suggestion''' method in '''SignUpTopic''' with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide '''@current_role_name''' and '''render show''' template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from '''student_view.html.erb''' to '''show.html.erb''' and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the '''student_view.html.erb''' file since all of it's contents are contained within the '''show.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since only the code style/process was changed, the expected functionality before and after, will be the same. Student should be able to create a suggestion for an assignment, just like before.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|600px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|600px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page (information previously provided by student_view.html.erb).&lt;br /&gt;
&lt;br /&gt;
[[File:Student_view.png|600px]]&lt;br /&gt;
&lt;br /&gt;
*The corresponding page for an instructor would appear as such.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_view.png|600px]]&lt;br /&gt;
&lt;br /&gt;
'''Please refer to our short [[[https://drive.google.com/file/d/1YUyoIQT32WmiTSd_SZzLpWXSdqjkaiWz/view?usp=sharing video]]] to get more context on what was done'''&lt;br /&gt;
&lt;br /&gt;
NOTE TO TA: Our Travis CI build failed because of an error in Travis's config settings (bundle exec danger --verbose). Hence, we have included this video as a proof of our working logic and testing.&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the mailer method for approved suggestions&lt;br /&gt;
&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the team creation method&lt;br /&gt;
&lt;br /&gt;
[[File:spec2.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135742</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135742"/>
		<updated>2020-10-20T04:41:42Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* How to Check */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the '''AssignmentTeam''' class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move portion of the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Approve_2.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from '''suggestion_controller''' having to do with a sign up topic to its own new method in '''sign_up_topic.rb''' now called '''new_topic_from_suggestion'''. In doing so, we also delete the entire '''approve method''' from '''suggestion_controller''', since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve 1.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of '''approve_suggestion''' to '''approve_suggestion_and_notify''', since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need ('''@user_id, @team_id, and @topic_id''') as well as calling our newly created '''new_topic_from_suggestion''' method in '''SignUpTopic''' with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide '''@current_role_name''' and '''render show''' template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from '''student_view.html.erb''' to '''show.html.erb''' and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the '''student_view.html.erb''' file since all of it's contents are contained within the '''show.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since only the code style/process was changed, the expected functionality before and after, will be the same. Student should be able to create a suggestion for an assignment, just like before.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|600px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|600px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page (information previously provided by student_view.html.erb).&lt;br /&gt;
&lt;br /&gt;
[[File:Student_view.png|600px]]&lt;br /&gt;
&lt;br /&gt;
*The corresponding page for an instructor would appear as such.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_view.png|600px]]&lt;br /&gt;
&lt;br /&gt;
'''Please refer to our short [[[https://drive.google.com/file/d/1YUyoIQT32WmiTSd_SZzLpWXSdqjkaiWz/view?usp=sharing video]]] to get more context on what was done'''&lt;br /&gt;
NOTE TO TA: Our Travis CI build failed because of an error in Travis's config settings (bundle exec danger --verbose). Hence, we have included this video as a proof of our working logic and tests.&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the mailer method for approved suggestions&lt;br /&gt;
&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the team creation method&lt;br /&gt;
&lt;br /&gt;
[[File:spec2.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135741</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135741"/>
		<updated>2020-10-20T04:31:52Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Code Review */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the '''AssignmentTeam''' class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move portion of the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Approve_2.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from '''suggestion_controller''' having to do with a sign up topic to its own new method in '''sign_up_topic.rb''' now called '''new_topic_from_suggestion'''. In doing so, we also delete the entire '''approve method''' from '''suggestion_controller''', since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve 1.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of '''approve_suggestion''' to '''approve_suggestion_and_notify''', since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need ('''@user_id, @team_id, and @topic_id''') as well as calling our newly created '''new_topic_from_suggestion''' method in '''SignUpTopic''' with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide '''@current_role_name''' and '''render show''' template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from '''student_view.html.erb''' to '''show.html.erb''' and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the '''student_view.html.erb''' file since all of it's contents are contained within the '''show.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since only the code style/process was changed, the expected functionality before and after, will be the same. Student should be able to create a suggestion for an assignment, just like before.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|600px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|600px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page (information previously provided by student_view.html.erb).&lt;br /&gt;
&lt;br /&gt;
[[File:Student_view.png|600px]]&lt;br /&gt;
&lt;br /&gt;
*The corresponding page for an instructor would appear as such.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_view.png|600px]]&lt;br /&gt;
&lt;br /&gt;
'''Please refer to our short [[[https://drive.google.com/file/d/1YUyoIQT32WmiTSd_SZzLpWXSdqjkaiWz/view?usp=sharing video]]] to get more context on what was done'''&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the mailer method for approved suggestions&lt;br /&gt;
&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the team creation method&lt;br /&gt;
&lt;br /&gt;
[[File:spec2.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Approve_2.png&amp;diff=135740</id>
		<title>File:Approve 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Approve_2.png&amp;diff=135740"/>
		<updated>2020-10-20T04:31:45Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Approve_1.png&amp;diff=135739</id>
		<title>File:Approve 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Approve_1.png&amp;diff=135739"/>
		<updated>2020-10-20T04:29:22Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135700</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135700"/>
		<updated>2020-10-20T03:05:56Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* How to Check */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the '''AssignmentTeam''' class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SignUpTopic_approve_method_refactor.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from '''suggestion_controller''' having to do with a sign up topic to its own new method in '''sign_up_topic.rb''' now called '''new_topic_from_suggestion'''. In doing so, we also delete the entire '''approve method''' from '''suggestion_controller''', since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve suggestion method refactor.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of '''approve_suggestion''' to '''approve_suggestion_and_notify''', since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need ('''@user_id, @team_id, and @topic_id''') as well as calling our newly created '''new_topic_from_suggestion''' method in '''SignUpTopic''' with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide '''@current_role_name''' and '''render show''' template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from '''student_view.html.erb''' to '''show.html.erb''' and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the '''student_view.html.erb''' file since all of it's contents are contained within the '''show.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since only the code style/process was changed, the expected functionality before and after, will be the same. Student should be able to create a suggestion for an assignment, just like before.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page that &lt;br /&gt;
&lt;br /&gt;
8. Check that suggestion is shown after creation (like above picture)&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the mailer method for approved suggestions&lt;br /&gt;
&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the team creation method&lt;br /&gt;
&lt;br /&gt;
[[File:spec2.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135697</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135697"/>
		<updated>2020-10-20T03:03:20Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Test Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the '''AssignmentTeam''' class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SignUpTopic_approve_method_refactor.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from '''suggestion_controller''' having to do with a sign up topic to its own new method in '''sign_up_topic.rb''' now called '''new_topic_from_suggestion'''. In doing so, we also delete the entire '''approve method''' from '''suggestion_controller''', since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve suggestion method refactor.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of '''approve_suggestion''' to '''approve_suggestion_and_notify''', since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need ('''@user_id, @team_id, and @topic_id''') as well as calling our newly created '''new_topic_from_suggestion''' method in '''SignUpTopic''' with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide '''@current_role_name''' and '''render show''' template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from '''student_view.html.erb''' to '''show.html.erb''' and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the '''student_view.html.erb''' file since all of it's contents are contained within the '''show.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since this is a refactor project i.e. only the code was changed, the expected functionality before and after, represent the same functionality.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page that &lt;br /&gt;
&lt;br /&gt;
8. Check that suggestion is shown after creation (like above picture)&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the mailer method for approved suggestions&lt;br /&gt;
&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the team creation method&lt;br /&gt;
&lt;br /&gt;
[[File:spec2.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135695</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135695"/>
		<updated>2020-10-20T03:03:07Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Test Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the '''AssignmentTeam''' class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SignUpTopic_approve_method_refactor.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from '''suggestion_controller''' having to do with a sign up topic to its own new method in '''sign_up_topic.rb''' now called '''new_topic_from_suggestion'''. In doing so, we also delete the entire '''approve method''' from '''suggestion_controller''', since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve suggestion method refactor.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of '''approve_suggestion''' to '''approve_suggestion_and_notify''', since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need ('''@user_id, @team_id, and @topic_id''') as well as calling our newly created '''new_topic_from_suggestion''' method in '''SignUpTopic''' with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide '''@current_role_name''' and '''render show''' template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from '''student_view.html.erb''' to '''show.html.erb''' and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the '''student_view.html.erb''' file since all of it's contents are contained within the '''show.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since this is a refactor project i.e. only the code was changed, the expected functionality before and after, represent the same functionality.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page that &lt;br /&gt;
&lt;br /&gt;
8. Check that suggestion is shown after creation (like above picture)&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These test ensures the working of the mailer method for approved suggestions&lt;br /&gt;
&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the team creation method&lt;br /&gt;
&lt;br /&gt;
[[File:spec2.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Snip4.PNG&amp;diff=135692</id>
		<title>File:Snip4.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Snip4.PNG&amp;diff=135692"/>
		<updated>2020-10-20T03:00:33Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: Vvarada2 uploaded a new version of File:Snip4.PNG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135689</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135689"/>
		<updated>2020-10-20T02:59:02Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* How to Check */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the '''AssignmentTeam''' class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SignUpTopic_approve_method_refactor.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from '''suggestion_controller''' having to do with a sign up topic to its own new method in '''sign_up_topic.rb''' now called '''new_topic_from_suggestion'''. In doing so, we also delete the entire '''approve method''' from '''suggestion_controller''', since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve suggestion method refactor.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of '''approve_suggestion''' to '''approve_suggestion_and_notify''', since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need ('''@user_id, @team_id, and @topic_id''') as well as calling our newly created '''new_topic_from_suggestion''' method in '''SignUpTopic''' with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide '''@current_role_name''' and '''render show''' template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from '''student_view.html.erb''' to '''show.html.erb''' and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the '''student_view.html.erb''' file since all of it's contents are contained within the '''show.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since this is a refactor project i.e. only the code was changed, the expected functionality before and after, represent the same functionality.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page that &lt;br /&gt;
&lt;br /&gt;
8. Check that suggestion is shown after creation (like above picture)&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These test ensures the working of the mailer &amp;amp; approve_suggestion methods&lt;br /&gt;
&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the team creation method&lt;br /&gt;
&lt;br /&gt;
[[File:spec2.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135688</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135688"/>
		<updated>2020-10-20T02:58:19Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* How to Check */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the '''AssignmentTeam''' class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SignUpTopic_approve_method_refactor.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from '''suggestion_controller''' having to do with a sign up topic to its own new method in '''sign_up_topic.rb''' now called '''new_topic_from_suggestion'''. In doing so, we also delete the entire '''approve method''' from '''suggestion_controller''', since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve suggestion method refactor.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of '''approve_suggestion''' to '''approve_suggestion_and_notify''', since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need ('''@user_id, @team_id, and @topic_id''') as well as calling our newly created '''new_topic_from_suggestion''' method in '''SignUpTopic''' with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide '''@current_role_name''' and '''render show''' template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from '''student_view.html.erb''' to '''show.html.erb''' and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the '''student_view.html.erb''' file since all of it's contents are contained within the '''show.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since this is a refactor project i.e. only the code was changed, the expected functionality before and after, represent the same functionality.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page that &lt;br /&gt;
&lt;br /&gt;
8. Student has an option to make a suggestion&lt;br /&gt;
&lt;br /&gt;
9. Check that suggestion is shown after creation&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These test ensures the working of the mailer &amp;amp; approve_suggestion methods&lt;br /&gt;
&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the team creation method&lt;br /&gt;
&lt;br /&gt;
[[File:spec2.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135686</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135686"/>
		<updated>2020-10-20T02:57:10Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Code Review */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the '''AssignmentTeam''' class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SignUpTopic_approve_method_refactor.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from '''suggestion_controller''' having to do with a sign up topic to its own new method in '''sign_up_topic.rb''' now called '''new_topic_from_suggestion'''. In doing so, we also delete the entire '''approve method''' from '''suggestion_controller''', since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve suggestion method refactor.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of '''approve_suggestion''' to '''approve_suggestion_and_notify''', since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need ('''@user_id, @team_id, and @topic_id''') as well as calling our newly created '''new_topic_from_suggestion''' method in '''SignUpTopic''' with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide '''@current_role_name''' and '''render show''' template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from '''student_view.html.erb''' to '''show.html.erb''' and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the '''student_view.html.erb''' file since all of it's contents are contained within the '''show.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since this is a refactor project i.e. only the code was changed, the expected functionality before and after, represent the same functionality.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page that &lt;br /&gt;
&lt;br /&gt;
8. Student has an option to make a suggestion&lt;br /&gt;
&lt;br /&gt;
10. Check that suggestion is shown after creation&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These test ensures the working of the mailer &amp;amp; approve_suggestion methods&lt;br /&gt;
&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the team creation method&lt;br /&gt;
&lt;br /&gt;
[[File:spec2.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135685</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135685"/>
		<updated>2020-10-20T02:54:07Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Test Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the AssignmentTeam class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SignUpTopic_approve_method_refactor.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from suggestion_controller having to do with a sign up topic to its own new method in sign_up_topic.rb now called new_topic_from_assignment. In doing so, we also delete the entire approve method from suggestion_controller, since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve suggestion method refactor.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of &amp;quot;approve_suggestion&amp;quot; to &amp;quot;approve_suggestion_and_notify&amp;quot;, since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need (@user_id, @team_id, and @topic_id) as well as calling our newly created new_topic_from_suggestion method in SignUpTopic with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide @current_role_name and render show template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from student_view.html.erb to show.html.erb and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the student_view.html.erb file since all of it's contents are contained within the show.html.erb file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since this is a refactor project i.e. only the code was changed, the expected functionality before and after, represent the same functionality.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page that &lt;br /&gt;
&lt;br /&gt;
8. Student has an option to make a suggestion&lt;br /&gt;
&lt;br /&gt;
10. Check that suggestion is shown after creation&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These test ensures the working of the mailer &amp;amp; approve_suggestion methods&lt;br /&gt;
&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the team creation method&lt;br /&gt;
&lt;br /&gt;
[[File:spec2.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135683</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135683"/>
		<updated>2020-10-20T02:53:44Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Test Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the AssignmentTeam class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SignUpTopic_approve_method_refactor.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from suggestion_controller having to do with a sign up topic to its own new method in sign_up_topic.rb now called new_topic_from_assignment. In doing so, we also delete the entire approve method from suggestion_controller, since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve suggestion method refactor.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of &amp;quot;approve_suggestion&amp;quot; to &amp;quot;approve_suggestion_and_notify&amp;quot;, since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need (@user_id, @team_id, and @topic_id) as well as calling our newly created new_topic_from_suggestion method in SignUpTopic with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide @current_role_name and render show template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from student_view.html.erb to show.html.erb and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the student_view.html.erb file since all of it's contents are contained within the show.html.erb file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since this is a refactor project i.e. only the code was changed, the expected functionality before and after, represent the same functionality.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page that &lt;br /&gt;
&lt;br /&gt;
8. Student has an option to make a suggestion&lt;br /&gt;
&lt;br /&gt;
10. Check that suggestion is shown after creation&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the mailer &amp;amp; approve_suggestion methods&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the team creation methods&lt;br /&gt;
[[File:spec2.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135682</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135682"/>
		<updated>2020-10-20T02:53:16Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Test Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the AssignmentTeam class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SignUpTopic_approve_method_refactor.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from suggestion_controller having to do with a sign up topic to its own new method in sign_up_topic.rb now called new_topic_from_assignment. In doing so, we also delete the entire approve method from suggestion_controller, since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve suggestion method refactor.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of &amp;quot;approve_suggestion&amp;quot; to &amp;quot;approve_suggestion_and_notify&amp;quot;, since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need (@user_id, @team_id, and @topic_id) as well as calling our newly created new_topic_from_suggestion method in SignUpTopic with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide @current_role_name and render show template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from student_view.html.erb to show.html.erb and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the student_view.html.erb file since all of it's contents are contained within the show.html.erb file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since this is a refactor project i.e. only the code was changed, the expected functionality before and after, represent the same functionality.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page that &lt;br /&gt;
&lt;br /&gt;
8. Student has an option to make a suggestion&lt;br /&gt;
&lt;br /&gt;
10. Check that suggestion is shown after creation&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the mailer &amp;amp; approve_suggestion methods&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the team creation methods&lt;br /&gt;
[[File:spec21.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Spec2.png&amp;diff=135681</id>
		<title>File:Spec2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Spec2.png&amp;diff=135681"/>
		<updated>2020-10-20T02:52:48Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135677</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135677"/>
		<updated>2020-10-20T02:42:15Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Test Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the AssignmentTeam class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SignUpTopic_approve_method_refactor.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from suggestion_controller having to do with a sign up topic to its own new method in sign_up_topic.rb now called new_topic_from_assignment. In doing so, we also delete the entire approve method from suggestion_controller, since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve suggestion method refactor.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of &amp;quot;approve_suggestion&amp;quot; to &amp;quot;approve_suggestion_and_notify&amp;quot;, since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need (@user_id, @team_id, and @topic_id) as well as calling our newly created new_topic_from_suggestion method in SignUpTopic with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide @current_role_name and render show template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from student_view.html.erb to show.html.erb and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the student_view.html.erb file since all of it's contents are contained within the show.html.erb file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since this is a refactor project i.e. only the code was changed, the expected functionality before and after, represent the same functionality.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page that &lt;br /&gt;
&lt;br /&gt;
8. Student has an option to make a suggestion&lt;br /&gt;
&lt;br /&gt;
10. Check that suggestion is shown after creation&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the mailer &amp;amp; approve_suggestion methods&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the team creation methods&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135676</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135676"/>
		<updated>2020-10-20T02:41:35Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Test Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the AssignmentTeam class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SignUpTopic_approve_method_refactor.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from suggestion_controller having to do with a sign up topic to its own new method in sign_up_topic.rb now called new_topic_from_assignment. In doing so, we also delete the entire approve method from suggestion_controller, since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve suggestion method refactor.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of &amp;quot;approve_suggestion&amp;quot; to &amp;quot;approve_suggestion_and_notify&amp;quot;, since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need (@user_id, @team_id, and @topic_id) as well as calling our newly created new_topic_from_suggestion method in SignUpTopic with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide @current_role_name and render show template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from student_view.html.erb to show.html.erb and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the student_view.html.erb file since all of it's contents are contained within the show.html.erb file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since this is a refactor project i.e. only the code was changed, the expected functionality before and after, represent the same functionality.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page that &lt;br /&gt;
&lt;br /&gt;
8. Student has an option to make a suggestion&lt;br /&gt;
&lt;br /&gt;
10. Check that suggestion is shown after creation&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
This test ensures the working of the moved send_email method&lt;br /&gt;
[[File:Mailer test.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Mailer_test.png&amp;diff=135675</id>
		<title>File:Mailer test.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Mailer_test.png&amp;diff=135675"/>
		<updated>2020-10-20T02:40:46Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135674</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135674"/>
		<updated>2020-10-20T02:40:20Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Test Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the AssignmentTeam class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SignUpTopic_approve_method_refactor.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from suggestion_controller having to do with a sign up topic to its own new method in sign_up_topic.rb now called new_topic_from_assignment. In doing so, we also delete the entire approve method from suggestion_controller, since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve suggestion method refactor.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of &amp;quot;approve_suggestion&amp;quot; to &amp;quot;approve_suggestion_and_notify&amp;quot;, since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need (@user_id, @team_id, and @topic_id) as well as calling our newly created new_topic_from_suggestion method in SignUpTopic with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide @current_role_name and render show template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from student_view.html.erb to show.html.erb and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the student_view.html.erb file since all of it's contents are contained within the show.html.erb file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since this is a refactor project i.e. only the code was changed, the expected functionality before and after, represent the same functionality.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page that &lt;br /&gt;
&lt;br /&gt;
8. Student has an option to make a suggestion&lt;br /&gt;
&lt;br /&gt;
10. Check that suggestion is shown after creation&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
The demonstration shown in the above section is how we tested the functionality and behavior of our changes.&lt;br /&gt;
The spec tests below will test that the moved methods work independently.&lt;br /&gt;
&lt;br /&gt;
[[File:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ADD TEST CASE LOGIC&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135673</id>
		<title>CSC/ECE 517 Fall 2020 - E2069. refactor suggestions controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2069._refactor_suggestions_controller&amp;diff=135673"/>
		<updated>2020-10-20T02:37:09Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: /* Code Review */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The '''suggestions_controller.rb''' of Expertiza is involved in creating/editing suggestions topic suggestions for a project and involved approvals. Students can submit suggestions and work on them if approved. &lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
We intend to improve the readability and code quality of the suggestions_controller.rb. Since this controller has methods that must actually be done by other classes (owing to Single Responsibility feature of the SOLID principles), we have realized the need to move these methods to their respective classes.&lt;br /&gt;
&lt;br /&gt;
== Issues to Fix ==&lt;br /&gt;
1. Move the method '''create_new_team''' (on line 94) to a more appropriate class.&lt;br /&gt;
(Ex: '''Team.rb''' or '''AssignmentTeam.rb''')&lt;br /&gt;
&lt;br /&gt;
2. Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.&lt;br /&gt;
&lt;br /&gt;
3. There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.&lt;br /&gt;
&lt;br /&gt;
4. Move the '''send_email''' method to the '''Mailer''' class in '''app/mailers/mailer.rb'''.&lt;br /&gt;
&lt;br /&gt;
5. In '''views/suggestion/show.html.erb''' and '''views/suggestion/student_view.html.erb''', there seems to be a DRY violation which needs to be fixed. Merge both files into a single view file in order to fix the DRY problem.&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
*app/controllers/teams_controllers.rb&lt;br /&gt;
*app/models/sign_up_topic.rb&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
*views/suggestion/show.html.erb&lt;br /&gt;
&lt;br /&gt;
== Code Review ==&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''create_new_team''' to a more appropriate class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to '''assignment_team.rb''' since it is appropriate.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip2.PNG]]&lt;br /&gt;
&lt;br /&gt;
We pass the required variables inside the scope of this function as method parameters.&lt;br /&gt;
Then we call the new method as a method of the AssignmentTeam class.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the method '''approve''' to '''SignupTopic.rb''', since it is modifying fields belonging to '''SignupTopic''' directly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SignUpTopic_approve_method_refactor.png]]&lt;br /&gt;
&lt;br /&gt;
First, we moved everything in the approve method from suggestion_controller having to do with a sign up topic to its own new method in sign_up_topic.rb now called new_topic_from_assignment. In doing so, we also delete the entire approve method from suggestion_controller, since refactoring for that method happens concurrently as a result of another issue in this project. &lt;br /&gt;
&lt;br /&gt;
'''''Issue''':There are two methods named similarly: '''approve''' and '''approve_suggestion'''. Their functionality is not clear at first glance. Rename them so that they more accurately reflect their purpose. Add appropriate comments.''&lt;br /&gt;
&lt;br /&gt;
[[File:Approve suggestion method refactor.png]]&lt;br /&gt;
&lt;br /&gt;
Here, we changed the name of &amp;quot;approve_suggestion&amp;quot; to &amp;quot;approve_suggestion_and_notify&amp;quot;, since it really seems like this method is both to handle approving a suggestion as well as calling the notification method from elsewhere in the controller class. We also add in the first part of the original &amp;quot;approve&amp;quot; method here, so that we can set the instance variables that suggestion_controller might need (@user_id, @team_id, and @topic_id) as well as calling our newly created new_topic_from_suggestion method in SignUpTopic with the proper suggestion passed as a parameter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Move the '''send_email''' method to the '''Mailer''' class.''&lt;br /&gt;
&lt;br /&gt;
This method was moved to the '''Mailer.rb''' file which seems to have many built-in functionalities for mail services.&lt;br /&gt;
&lt;br /&gt;
[[File:Snip1.PNG]]&lt;br /&gt;
&lt;br /&gt;
Next, the required variables for this method were passed as parameters from '''suggestion_controller''' and is called as a method of Mailer class&lt;br /&gt;
&lt;br /&gt;
[[File:Snip4.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Issue''': Merge '''app/views/suggestion/show.html.erb''' and '''app/views/suggestion/student_view.html.erb''' into one view.&lt;br /&gt;
&lt;br /&gt;
Modify student_view method in suggestion controller to provide @current_role_name and render show template.&lt;br /&gt;
&lt;br /&gt;
[[File:modified show student.png]]&lt;br /&gt;
&lt;br /&gt;
Migrate code from student_view.html.erb to show.html.erb and wrap in an if statement that will display view only if user role is a student.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Move the rest of the remaining code from the original show template to the else block.&lt;br /&gt;
&lt;br /&gt;
[[File:Show_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
Delete the student_view.html.erb file since all of it's contents are contained within the show.html.erb file.&lt;br /&gt;
&lt;br /&gt;
[[File:Deleted Student_View.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== How to Check ==&lt;br /&gt;
&lt;br /&gt;
Since this is a refactor project i.e. only the code was changed, the expected functionality before and after, represent the same functionality.&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor. &lt;br /&gt;
&lt;br /&gt;
*Login with username '''instructor6''' and password '''password'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Login.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
2. Create a new assignment.&lt;br /&gt;
&lt;br /&gt;
*Click the '''Assignments''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_assignments.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Click the '''+''' icon.&lt;br /&gt;
&lt;br /&gt;
[[File:Click_plus_icon.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
3. Fill in the following fields in the ''''General'''' tab.&lt;br /&gt;
&lt;br /&gt;
*Provide '''Assignment name'''.&lt;br /&gt;
*Check the '''Has Teams''' checkbox and set maximum number of members to greater than or equal to 1.&lt;br /&gt;
*Click the '''Create''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:General_tab.png]]&lt;br /&gt;
&lt;br /&gt;
*Page will reload and have an additional checkbox, '''Has topics?'''. Check it off and click the '''Save''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Has_topics.png]]&lt;br /&gt;
&lt;br /&gt;
4. Make the following selections in the '''Topics''' tab.&lt;br /&gt;
&lt;br /&gt;
[[File:Topics_tab.png|600px]]&lt;br /&gt;
&lt;br /&gt;
5. Assign this assignment to a student belonging to this instructor&lt;br /&gt;
&lt;br /&gt;
*Select '''Add participant''' link within the '''Other stuff''' tab. This will bring you to a new page. &lt;br /&gt;
&lt;br /&gt;
[[File:Other_stuff.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*Find student of interest (we recommend using '''student1876'''). Select '''Add''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Find_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*You should receive confirmation of successfully adding the student to the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Add_student_confirmation.png|800px]]&lt;br /&gt;
&lt;br /&gt;
6. Impersonate the assigned student.&lt;br /&gt;
&lt;br /&gt;
*Select from the Manage dropdown menu '''Impersonate User'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Fill in field with student username and select '''Impersonate''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Impersonate_student_fill_in.png|800px]]&lt;br /&gt;
&lt;br /&gt;
7. Let the student view this assignment (may need to register too)&lt;br /&gt;
&lt;br /&gt;
*Select the created assignment from the table seen at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[File:Select_new_assignment.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''Suggest a topic''' link.&lt;br /&gt;
&lt;br /&gt;
[[File:Suggest_topic.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Create new suggestion, provide a title, description, and click the '''Submit''' button.&lt;br /&gt;
&lt;br /&gt;
[[File:Student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*Select '''View''' link for the suggestion created.&lt;br /&gt;
&lt;br /&gt;
[[File:View student_suggestion.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*This will bring the following page that &lt;br /&gt;
&lt;br /&gt;
8. Student has an option to make a suggestion&lt;br /&gt;
&lt;br /&gt;
10. Check that suggestion is shown after creation&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
&lt;br /&gt;
Below test cases were added/updated to ensure the correctness of our work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ADD TEST CASE LOGIC&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://152.7.99.171:8080/ Our Deployed Expertiza]&lt;br /&gt;
*[https://github.com/GitHubSanti/expertiza/tree/beta Expertiza on GitHub]&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
*Varun Varadarajan (vvarada2)&lt;br /&gt;
*Dylan Jordan (dtjordan)&lt;br /&gt;
*Santiago Sepulveda (sasepulv)&lt;br /&gt;
*'''Mentor:''' Sanket Pai (sgpai2)&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Snip4.PNG&amp;diff=135672</id>
		<title>File:Snip4.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Snip4.PNG&amp;diff=135672"/>
		<updated>2020-10-20T02:37:06Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Snip3.PNG&amp;diff=135671</id>
		<title>File:Snip3.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Snip3.PNG&amp;diff=135671"/>
		<updated>2020-10-20T02:36:35Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: Vvarada2 uploaded a new version of File:Snip3.PNG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Snip3.PNG&amp;diff=135670</id>
		<title>File:Snip3.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Snip3.PNG&amp;diff=135670"/>
		<updated>2020-10-20T02:35:58Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Snip2.PNG&amp;diff=135669</id>
		<title>File:Snip2.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Snip2.PNG&amp;diff=135669"/>
		<updated>2020-10-20T02:35:37Z</updated>

		<summary type="html">&lt;p&gt;Vvarada2: Vvarada2 uploaded a new version of File:Snip2.PNG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvarada2</name></author>
	</entry>
</feed>