<?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=Snadend2</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=Snadend2"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Snadend2"/>
	<updated>2026-05-13T01:16:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers&amp;diff=140638</id>
		<title>CSC/ECE 517 Fall 2021 - E2160. Implementing and testing import export controllers</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers&amp;diff=140638"/>
		<updated>2021-11-03T20:57:30Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Team ===&lt;br /&gt;
*Akash Sarda, aksarda&lt;br /&gt;
*Sairam Sakhamuri, svsakham&lt;br /&gt;
*Sidhant Arora, sarora22&lt;br /&gt;
*Sai Harsha Nadendla, snadend2&lt;br /&gt;
&lt;br /&gt;
== Import and Export Functionality ==&lt;br /&gt;
In Expertiza, many kinds of files can be imported or exported: lists of users for whom accounts are to be created, lists of teams that have been created or need to be created, lists of topics that users are to be able to sign up for, or instructor or peer scores that have been given for a particular assignment.  Historically, all of these import and export methods were written individually, using similar code patterns.&lt;br /&gt;
The instructor might end up adding those in excel or having that data in excel - this functionality allows the expertiza to accept that csv file and tabulate it infront of the user. The user can then select to assign columns to that data and then import it into the database.&lt;br /&gt;
Eg. list of topics or feedback comments from the students can be tabular if it is say a MCQ questionnaire. The instructor will then have to either enter each entry manually through the UI or can upload this file to automate it.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
Initially the different classes (Topics, Assignments, Course Participants) had different implementations of taking in the csv file which was tightly coupled with the feature / model class. However, it was discovered that instead of defining the new method again and again, this process can be automated, by pushing common code of reading the headers and writing to the database into a single generic function. This would basically make it really easy to add this functionality to other model classes and to the new features yet to come to Expertiza.&lt;br /&gt;
&lt;br /&gt;
== Existing Import Functionality ==&lt;br /&gt;
&lt;br /&gt;
The current import functionality is done through the ImportFileController and there are different import class methods implemented in different models that are performing import function.&lt;br /&gt;
&lt;br /&gt;
In the SignUpTopic and User models use helper classes and the attributes are taken from a hash and new ActiveRecord object is created.&lt;br /&gt;
&lt;br /&gt;
=== Controllers ===&lt;br /&gt;
&lt;br /&gt;
*'''import_file_controller''', methods:&lt;br /&gt;
** Methods used to process files:&lt;br /&gt;
*** #get_delimiter - Sets delimiter for filetype&lt;br /&gt;
*** #parse_line - Processes line of the file&lt;br /&gt;
*** #parse_to_grid - parses the file into 2D array&lt;br /&gt;
*** #parse_to_hash - parses file into hash where 'header' stores header row and 'body' stores all contents.&lt;br /&gt;
*** #hash_rows_with_headers - Creates hash for each row of file. Keys are headers, values are row values.&lt;br /&gt;
** Import methods:&lt;br /&gt;
*** #import_from_hash - Primary import functionality. Creates objects for hashed rows (from #hash_rows_with_headers).&lt;br /&gt;
*** #import - Larger controller of import, sets error messages and displays.&lt;br /&gt;
&lt;br /&gt;
=== Helpers ===&lt;br /&gt;
*'''import_file_helper''', the list of methods in the file are the following: &lt;br /&gt;
** ::define_attributes - Sets and returns attributes for User object from hash.&lt;br /&gt;
** ::create_new_user - Makes a user object in the database.&lt;br /&gt;
&lt;br /&gt;
*'''import_topics_helper''', the list of methods in the file are the following: &lt;br /&gt;
** ::define_attributes - Sets and returns attributes for a SignUpTopic from hash.&lt;br /&gt;
** ::create_new_sign_up_topic - Makes SignUpTopic objects in the database.&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
We have found that the below mentioned models are using the import functionality defined in ImportFileController. SignUpTopic and User are dependent on the helper methods to use import functionality.&lt;br /&gt;
&lt;br /&gt;
*'''assignment_participant'''&lt;br /&gt;
*'''assignment_team'''&lt;br /&gt;
*'''course_participant'''&lt;br /&gt;
*'''course_team'''&lt;br /&gt;
*'''team'''&lt;br /&gt;
*'''metareview_response_map'''&lt;br /&gt;
*'''question'''&lt;br /&gt;
*'''review_response_map'''&lt;br /&gt;
*'''sign_up_sheet'''&lt;br /&gt;
*'''sign_up_topic'''&lt;br /&gt;
*'''user'''&lt;br /&gt;
&lt;br /&gt;
== Design Plan ==&lt;br /&gt;
&lt;br /&gt;
The design plan is to use Strategy patter to implement import functionality, so that all the import requests present in different models are routed through the ImportFileController. Right now since the import functionality is implemented in various model methods this leads to many if and else statements to check the type of model. So, we intent to generalize the import functionality by placing common code in the ImportFileController. But each model will still have its own import method. With this approach the redundancy is reduced by moving common code to ImportFileController and code will become DRY.&lt;br /&gt;
&lt;br /&gt;
Other helper methods such as ImportFileHelper and ImportTopicHelper that are used to perform import functionality will also be removed, which keeps import functionality consistent. We will be using method overloading and overriding for the methods in ImportFileController to eliminate unnecessary if and else blocks.&lt;br /&gt;
&lt;br /&gt;
To summarize our plan of changes:&lt;br /&gt;
&lt;br /&gt;
* Redirect all import calls through ImportFileController&lt;br /&gt;
* Refactor ImportFileController by removing the redundant code and making code generic.&lt;br /&gt;
* Insert object creation conditions into all relevant ::import functions and into the ImportFileController form.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image: DesignImport.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
The import method has been implemented in a bunch of models which have been listed above. After preliminary analysis, we assume that the import functionality in a few of the models might have to be amended. These models are:&lt;br /&gt;
*'''assignment_participant'''&lt;br /&gt;
*'''assignment_team'''&lt;br /&gt;
*'''course_participant'''&lt;br /&gt;
*'''course_team'''&lt;br /&gt;
*'''team'''&lt;br /&gt;
*'''metareview_response_map'''&lt;br /&gt;
*'''review_response_map'''&lt;br /&gt;
*'''sign_up_topic'''&lt;br /&gt;
*'''user'''&lt;br /&gt;
We will update the test plan for those models in which the import code is amended to fit into the new framework. If we amend the import code in any other model, we will also update the tests in their respective .spec files to ensure 100% coverage. We also plan to create a spec file for the '''import_file_controller'''.&lt;br /&gt;
&lt;br /&gt;
Similarly for the export functionality, the tests in the respective .spec files will be updated as and when the code in that model is changed.&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers&amp;diff=140637</id>
		<title>CSC/ECE 517 Fall 2021 - E2160. Implementing and testing import export controllers</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers&amp;diff=140637"/>
		<updated>2021-11-03T20:54:07Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Team ===&lt;br /&gt;
*Akash Sarda, aksarda&lt;br /&gt;
*Sairam Sakhamuri, svsakham&lt;br /&gt;
*Sidhant Arora, sarora22&lt;br /&gt;
*Sai Harsha Nadendla, snadend2&lt;br /&gt;
&lt;br /&gt;
== Import and Export Functionality ==&lt;br /&gt;
In Expertiza, many kinds of files can be imported or exported: lists of users for whom accounts are to be created, lists of teams that have been created or need to be created, lists of topics that users are to be able to sign up for, or instructor or peer scores that have been given for a particular assignment.  Historically, all of these import and export methods were written individually, using similar code patterns.&lt;br /&gt;
The instructor might end up adding those in excel or having that data in excel - this functionality allows the expertiza to accept that csv file and tabulate it infront of the user. The user can then select to assign columns to that data and then import it into the database.&lt;br /&gt;
Eg. list of topics or feedback comments from the students can be tabular if it is say a MCQ questionnaire. The instructor will then have to either enter each entry manually through the UI or can upload this file to automate it.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
Initially the different classes (Topics, Assignments, Course Participants) had different implementations of taking in the csv file which was tightly coupled with the feature / model class. However, it was discovered that instead of defining the new method again and again, this process can be automated, by pushing common code of reading the headers and writing to the database into a single generic function. This would basically make it really easy to add this functionality to other model classes and to the new features yet to come to Expertiza.&lt;br /&gt;
&lt;br /&gt;
== Existing Import Functionality ==&lt;br /&gt;
&lt;br /&gt;
The current import functionality is done through the ImportFileController and there are different import class methods implemented in different models that are performing import function.&lt;br /&gt;
&lt;br /&gt;
In the SignUpTopic and User models use helper classes and the attributes are taken from a hash and new ActiveRecord object is created.&lt;br /&gt;
&lt;br /&gt;
=== Controllers ===&lt;br /&gt;
&lt;br /&gt;
*'''import_file_controller''', methods:&lt;br /&gt;
** Methods used to process files:&lt;br /&gt;
*** #get_delimiter - Sets delimiter for filetype&lt;br /&gt;
*** #parse_line - Processes line of the file&lt;br /&gt;
*** #parse_to_grid - parses the file into 2D array&lt;br /&gt;
*** #parse_to_hash - parses file into hash where 'header' stores header row and 'body' stores all contents.&lt;br /&gt;
*** #hash_rows_with_headers - Creates hash for each row of file. Keys are headers, values are row values.&lt;br /&gt;
** Import methods:&lt;br /&gt;
*** #import_from_hash - Primary import functionality. Creates objects for hashed rows (from #hash_rows_with_headers).&lt;br /&gt;
*** #import - Larger controller of import, sets error messages and displays.&lt;br /&gt;
&lt;br /&gt;
=== Helpers ===&lt;br /&gt;
*'''import_file_helper''', the list of methods in the file are the following: &lt;br /&gt;
** ::define_attributes - Sets and returns attributes for User object from hash.&lt;br /&gt;
** ::create_new_user - Makes a user object in the database.&lt;br /&gt;
&lt;br /&gt;
*'''import_topics_helper''', the list of methods in the file are the following: &lt;br /&gt;
** ::define_attributes - Sets and returns attributes for a SignUpTopic from hash.&lt;br /&gt;
** ::create_new_sign_up_topic - Makes SignUpTopic objects in the database.&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
We have found that the below mentioned models are using the import functionality defined in ImportFileController. SignUpTopic and User are dependent on the helper methods to use import functionality.&lt;br /&gt;
&lt;br /&gt;
*'''assignment_participant'''&lt;br /&gt;
*'''assignment_team'''&lt;br /&gt;
*'''course_participant'''&lt;br /&gt;
*'''course_team'''&lt;br /&gt;
*'''team'''&lt;br /&gt;
*'''metareview_response_map'''&lt;br /&gt;
*'''question'''&lt;br /&gt;
*'''review_response_map'''&lt;br /&gt;
*'''sign_up_sheet'''&lt;br /&gt;
*'''sign_up_topic'''&lt;br /&gt;
*'''user'''&lt;br /&gt;
&lt;br /&gt;
== Design Plan ==&lt;br /&gt;
&lt;br /&gt;
The design plan is to use Strategy patter to implement import functionality, so that all the import requests present in different models are routed through the ImportFileController. Right now since the import functionality is implemented in various model methods this leads to many if and else statements to check the type of model. So, we intent to generalize the import functionality by placing common code in the ImportFileController. But each model will still have its own import method. With this approach the redundancy is reduced by moving common code to ImportFileController and code will become DRY.&lt;br /&gt;
&lt;br /&gt;
Other helper methods such as ImportFileHelper and ImportTopicHelper that are used to perform import functionality will also be removed, which keeps import functionality consistent. We will be using method overloading and overriding for the methods in ImportFileController to eliminate unnecessary if and else blocks.&lt;br /&gt;
&lt;br /&gt;
To summarize our plan of changes:&lt;br /&gt;
&lt;br /&gt;
* Redirect all import calls through ImportFileController&lt;br /&gt;
* Refactor ImportFileController by removing the redundant code and making code generic.&lt;br /&gt;
* Insert object creation conditions into all relevant ::import functions and into the ImportFileController form.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image: DesignImport.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
As we have seen before, the import method has been implemented in a bunch of models which have been listed above. After preliminary analysis, we assume that the import functionality in a few of the models might have to be amended. These models are:&lt;br /&gt;
*'''assignment_participant'''&lt;br /&gt;
*'''assignment_team'''&lt;br /&gt;
*'''course_participant'''&lt;br /&gt;
*'''course_team'''&lt;br /&gt;
*'''team'''&lt;br /&gt;
*'''metareview_response_map'''&lt;br /&gt;
*'''review_response_map'''&lt;br /&gt;
*'''sign_up_topic'''&lt;br /&gt;
*'''user'''&lt;br /&gt;
We will update the test plan for those models in which the import code is amended to fit into the new framework. If we amend the import code in any other model, we will also update the tests in their respective .spec files to ensure 100% coverage. We also plan to create a spec file for the '''import_file_controller'''.&lt;br /&gt;
&lt;br /&gt;
Similarly for the export functionality, the tests in the respective .spec files will be updated as and when the code in that model is changed.&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers&amp;diff=140636</id>
		<title>CSC/ECE 517 Fall 2021 - E2160. Implementing and testing import export controllers</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers&amp;diff=140636"/>
		<updated>2021-11-03T20:53:54Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Team ===&lt;br /&gt;
*Akash Sarda, aksarda&lt;br /&gt;
*Sairam Sakhamuri, svsakham&lt;br /&gt;
*Sidhant Arora, sarora22&lt;br /&gt;
*Sai Harsha Nadendla, snadend2&lt;br /&gt;
&lt;br /&gt;
== Import and Export Functionality ==&lt;br /&gt;
In Expertiza, many kinds of files can be imported or exported: lists of users for whom accounts are to be created, lists of teams that have been created or need to be created, lists of topics that users are to be able to sign up for, or instructor or peer scores that have been given for a particular assignment.  Historically, all of these import and export methods were written individually, using similar code patterns.&lt;br /&gt;
The instructor might end up adding those in excel or having that data in excel - this functionality allows the expertiza to accept that csv file and tabulate it infront of the user. The user can then select to assign columns to that data and then import it into the database.&lt;br /&gt;
Eg. list of topics or feedback comments from the students can be tabular if it is say a MCQ questionnaire. The instructor will then have to either enter each entry manually through the UI or can upload this file to automate it.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
Initially the different classes (Topics, Assignments, Course Participants) had different implementations of taking in the csv file which was tightly coupled with the feature / model class. However, it was discovered that instead of defining the new method again and again, this process can be automated, by pushing common code of reading the headers and writing to the database into a single generic function. This would basically make it really easy to add this functionality to other model classes and to the new features yet to come to Expertiza.&lt;br /&gt;
&lt;br /&gt;
== Existing Import Functionality ==&lt;br /&gt;
&lt;br /&gt;
The current import functionality is done through the ImportFileController and there are different import class methods implemented in different models that are performing import function.&lt;br /&gt;
&lt;br /&gt;
In the SignUpTopic and User models use helper classes and the attributes are taken from a hash and new ActiveRecord object is created.&lt;br /&gt;
&lt;br /&gt;
=== Controllers ===&lt;br /&gt;
&lt;br /&gt;
*'''import_file_controller''', methods:&lt;br /&gt;
** Methods used to process files:&lt;br /&gt;
*** #get_delimiter - Sets delimiter for filetype&lt;br /&gt;
*** #parse_line - Processes line of the file&lt;br /&gt;
*** #parse_to_grid - parses the file into 2D array&lt;br /&gt;
*** #parse_to_hash - parses file into hash where 'header' stores header row and 'body' stores all contents.&lt;br /&gt;
*** #hash_rows_with_headers - Creates hash for each row of file. Keys are headers, values are row values.&lt;br /&gt;
** Import methods:&lt;br /&gt;
*** #import_from_hash - Primary import functionality. Creates objects for hashed rows (from #hash_rows_with_headers).&lt;br /&gt;
*** #import - Larger controller of import, sets error messages and displays.&lt;br /&gt;
&lt;br /&gt;
=== Helpers ===&lt;br /&gt;
*'''import_file_helper''', the list of methods in the file are the following: &lt;br /&gt;
** ::define_attributes - Sets and returns attributes for User object from hash.&lt;br /&gt;
** ::create_new_user - Makes a user object in the database.&lt;br /&gt;
&lt;br /&gt;
*'''import_topics_helper''', the list of methods in the file are the following: &lt;br /&gt;
** ::define_attributes - Sets and returns attributes for a SignUpTopic from hash.&lt;br /&gt;
** ::create_new_sign_up_topic - Makes SignUpTopic objects in the database.&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
We have found that the below mentioned models are using the import functionality defined in ImportFileController. SignUpTopic and User are dependent on the helper methods to use import functionality.&lt;br /&gt;
&lt;br /&gt;
*'''assignment_participant'''&lt;br /&gt;
*'''assignment_team'''&lt;br /&gt;
*'''course_participant'''&lt;br /&gt;
*'''course_team'''&lt;br /&gt;
*'''team'''&lt;br /&gt;
*'''metareview_response_map'''&lt;br /&gt;
*'''question'''&lt;br /&gt;
*'''review_response_map'''&lt;br /&gt;
*'''sign_up_sheet'''&lt;br /&gt;
*'''sign_up_topic'''&lt;br /&gt;
*'''user'''&lt;br /&gt;
&lt;br /&gt;
== Design Plan ==&lt;br /&gt;
&lt;br /&gt;
The design plan is to use Strategy patter to implement import functionality, so that all the import requests present in different models are routed through the ImportFileController. Right now since the import functionality is implemented in various model methods this leads to many if and else statements to check the type of model. So, we intent to generalize the import functionality by placing common code in the ImportFileController. But each model will still have its own import method. With this approach the redundancy is reduced by moving common code to ImportFileController and code will become DRY.&lt;br /&gt;
&lt;br /&gt;
Other helper methods such as ImportFileHelper and ImportTopicHelper that are used to perform import functionality will also be removed, which keeps import functionality consistent. We will be using method overloading and overriding for the methods in ImportFileController to eliminate unnecessary if and else blocks.&lt;br /&gt;
&lt;br /&gt;
To summarize our plan of changes:&lt;br /&gt;
&lt;br /&gt;
* Redirect all import calls through ImportFileController&lt;br /&gt;
* Refactor ImportFileController by removing the redundant code and making code generic.&lt;br /&gt;
* Insert object creation conditions into all relevant ::import functions and into the ImportFileController form.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image: DesignImport.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
As we have seen before, the import method has been implemented in a bunch of models which have been listed above. After preliminary analysis, we assume that the import functionality in a few of the models might have to be amended. These models are:&lt;br /&gt;
*'''assignment_participant'''&lt;br /&gt;
*'''assignment_team'''&lt;br /&gt;
*'''course_participant'''&lt;br /&gt;
*'''course_team'''&lt;br /&gt;
*'''team'''&lt;br /&gt;
*'''metareview_response_map'''&lt;br /&gt;
*'''review_response_map'''&lt;br /&gt;
*'''sign_up_topic'''&lt;br /&gt;
*'''user'''&lt;br /&gt;
We will update the test plan for those models in which the import code is amended to fit into the new framework. If we amend the import code in any other model, we will also update the tests in their respective .spec files to ensure 100% coverage. We also plan to create a spec file for the import_file_controller.&lt;br /&gt;
&lt;br /&gt;
Similarly for the export functionality, the tests in the respective .spec files will be updated as and when the code in that model is changed.&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers&amp;diff=140635</id>
		<title>CSC/ECE 517 Fall 2021 - E2160. Implementing and testing import export controllers</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers&amp;diff=140635"/>
		<updated>2021-11-03T20:50:02Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Team ===&lt;br /&gt;
*Akash Sarda, aksarda&lt;br /&gt;
*Sairam Sakhamuri, svsakham&lt;br /&gt;
*Sidhant Arora, sarora22&lt;br /&gt;
*Sai Harsha Nadendla, snadend2&lt;br /&gt;
&lt;br /&gt;
== Import and Export Functionality ==&lt;br /&gt;
In Expertiza, many kinds of files can be imported or exported: lists of users for whom accounts are to be created, lists of teams that have been created or need to be created, lists of topics that users are to be able to sign up for, or instructor or peer scores that have been given for a particular assignment.  Historically, all of these import and export methods were written individually, using similar code patterns.&lt;br /&gt;
The instructor might end up adding those in excel or having that data in excel - this functionality allows the expertiza to accept that csv file and tabulate it infront of the user. The user can then select to assign columns to that data and then import it into the database.&lt;br /&gt;
Eg. list of topics or feedback comments from the students can be tabular if it is say a MCQ questionnaire. The instructor will then have to either enter each entry manually through the UI or can upload this file to automate it.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
Initially the different classes (Topics, Assignments, Course Participants) had different implementations of taking in the csv file which was tightly coupled with the feature / model class. However, it was discovered that instead of defining the new method again and again, this process can be automated, by pushing common code of reading the headers and writing to the database into a single generic function. This would basically make it really easy to add this functionality to other model classes and to the new features yet to come to Expertiza.&lt;br /&gt;
&lt;br /&gt;
== Existing Import Functionality ==&lt;br /&gt;
&lt;br /&gt;
The current import functionality is done through the ImportFileController and there are different import class methods implemented in different models that are performing import function.&lt;br /&gt;
&lt;br /&gt;
In the SignUpTopic and User models use helper classes and the attributes are taken from a hash and new ActiveRecord object is created.&lt;br /&gt;
&lt;br /&gt;
=== Controllers ===&lt;br /&gt;
&lt;br /&gt;
*'''import_file_controller''', methods:&lt;br /&gt;
** Methods used to process files:&lt;br /&gt;
*** #get_delimiter - Sets delimiter for filetype&lt;br /&gt;
*** #parse_line - Processes line of the file&lt;br /&gt;
*** #parse_to_grid - parses the file into 2D array&lt;br /&gt;
*** #parse_to_hash - parses file into hash where 'header' stores header row and 'body' stores all contents.&lt;br /&gt;
*** #hash_rows_with_headers - Creates hash for each row of file. Keys are headers, values are row values.&lt;br /&gt;
** Import methods:&lt;br /&gt;
*** #import_from_hash - Primary import functionality. Creates objects for hashed rows (from #hash_rows_with_headers).&lt;br /&gt;
*** #import - Larger controller of import, sets error messages and displays.&lt;br /&gt;
&lt;br /&gt;
=== Helpers ===&lt;br /&gt;
*'''import_file_helper''', the list of methods in the file are the following: &lt;br /&gt;
** ::define_attributes - Sets and returns attributes for User object from hash.&lt;br /&gt;
** ::create_new_user - Makes a user object in the database.&lt;br /&gt;
&lt;br /&gt;
*'''import_topics_helper''', the list of methods in the file are the following: &lt;br /&gt;
** ::define_attributes - Sets and returns attributes for a SignUpTopic from hash.&lt;br /&gt;
** ::create_new_sign_up_topic - Makes SignUpTopic objects in the database.&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
We have found that the below mentioned models are using the import functionality defined in ImportFileController. SignUpTopic and User are dependent on the helper methods to use import functionality.&lt;br /&gt;
&lt;br /&gt;
*'''assignment_participant'''&lt;br /&gt;
*'''assignment_team'''&lt;br /&gt;
*'''course_participant'''&lt;br /&gt;
*'''course_team'''&lt;br /&gt;
*'''team'''&lt;br /&gt;
*'''metareview_response_map'''&lt;br /&gt;
*'''question'''&lt;br /&gt;
*'''review_response_map'''&lt;br /&gt;
*'''sign_up_sheet'''&lt;br /&gt;
*'''sign_up_topic'''&lt;br /&gt;
*'''user'''&lt;br /&gt;
&lt;br /&gt;
== Design Plan ==&lt;br /&gt;
&lt;br /&gt;
The design plan is to use Strategy patter to implement import functionality, so that all the import requests present in different models are routed through the ImportFileController. Right now since the import functionality is implemented in various model methods this leads to many if and else statements to check the type of model. So, we intent to generalize the import functionality by placing common code in the ImportFileController. But each model will still have its own import method. With this approach the redundancy is reduced by moving common code to ImportFileController and code will become DRY.&lt;br /&gt;
&lt;br /&gt;
Other helper methods such as ImportFileHelper and ImportTopicHelper that are used to perform import functionality will also be removed, which keeps import functionality consistent. We will be using method overloading and overriding for the methods in ImportFileController to eliminate unnecessary if and else blocks.&lt;br /&gt;
&lt;br /&gt;
To summarize our plan of changes:&lt;br /&gt;
&lt;br /&gt;
* Redirect all import calls through ImportFileController&lt;br /&gt;
* Refactor ImportFileController by removing the redundant code and making code generic.&lt;br /&gt;
* Insert object creation conditions into all relevant ::import functions and into the ImportFileController form.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image: DesignImport.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
As we have seen before, the import method has been implemented in a bunch of models which have been listed above. After preliminary analysis, we assume that the import functionality in a few of the models might have to be amended. These models are:&lt;br /&gt;
*'''assignment_participant'''&lt;br /&gt;
*'''assignment_team'''&lt;br /&gt;
*'''course_participant'''&lt;br /&gt;
*'''course_team'''&lt;br /&gt;
*'''team'''&lt;br /&gt;
*'''metareview_response_map'''&lt;br /&gt;
*'''review_response_map'''&lt;br /&gt;
*'''sign_up_topic'''&lt;br /&gt;
*'''user'''&lt;br /&gt;
We will update the test plan for those models in which the import code is amended to fit into the new framework. If we amend the import code in any other model, we will also update the tests in their respective .spec files to ensure 100% coverage.&lt;br /&gt;
&lt;br /&gt;
Similarly for the export functionality, the tests in the respective .spec files will be updated as and when the code in that model is changed.&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers&amp;diff=140634</id>
		<title>CSC/ECE 517 Fall 2021 - E2160. Implementing and testing import export controllers</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers&amp;diff=140634"/>
		<updated>2021-11-03T20:48:38Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Team ===&lt;br /&gt;
*Akash Sarda, aksarda&lt;br /&gt;
*Sairam Sakhamuri, svsakham&lt;br /&gt;
*Sidhant Arora, sarora22&lt;br /&gt;
*Sai Harsha Nadendla, snadend2&lt;br /&gt;
&lt;br /&gt;
== Import and Export Functionality ==&lt;br /&gt;
In Expertiza, many kinds of files can be imported or exported: lists of users for whom accounts are to be created, lists of teams that have been created or need to be created, lists of topics that users are to be able to sign up for, or instructor or peer scores that have been given for a particular assignment.  Historically, all of these import and export methods were written individually, using similar code patterns.&lt;br /&gt;
The instructor might end up adding those in excel or having that data in excel - this functionality allows the expertiza to accept that csv file and tabulate it infront of the user. The user can then select to assign columns to that data and then import it into the database.&lt;br /&gt;
Eg. list of topics or feedback comments from the students can be tabular if it is say a MCQ questionnaire. The instructor will then have to either enter each entry manually through the UI or can upload this file to automate it.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
Initially the different classes (Topics, Assignments, Course Participants) had different implementations of taking in the csv file which was tightly coupled with the feature / model class. However, it was discovered that instead of defining the new method again and again, this process can be automated, by pushing common code of reading the headers and writing to the database into a single generic function. This would basically make it really easy to add this functionality to other model classes and to the new features yet to come to Expertiza.&lt;br /&gt;
&lt;br /&gt;
== Existing Import Functionality ==&lt;br /&gt;
&lt;br /&gt;
The current import functionality is done through the ImportFileController and there are different import class methods implemented in different models that are performing import function.&lt;br /&gt;
&lt;br /&gt;
In the SignUpTopic and User models use helper classes and the attributes are taken from a hash and new ActiveRecord object is created.&lt;br /&gt;
&lt;br /&gt;
=== Controllers ===&lt;br /&gt;
&lt;br /&gt;
*'''import_file_controller''', methods:&lt;br /&gt;
** Methods used to process files:&lt;br /&gt;
*** #get_delimiter - Sets delimiter for filetype&lt;br /&gt;
*** #parse_line - Processes line of the file&lt;br /&gt;
*** #parse_to_grid - parses the file into 2D array&lt;br /&gt;
*** #parse_to_hash - parses file into hash where 'header' stores header row and 'body' stores all contents.&lt;br /&gt;
*** #hash_rows_with_headers - Creates hash for each row of file. Keys are headers, values are row values.&lt;br /&gt;
** Import methods:&lt;br /&gt;
*** #import_from_hash - Primary import functionality. Creates objects for hashed rows (from #hash_rows_with_headers).&lt;br /&gt;
*** #import - Larger controller of import, sets error messages and displays.&lt;br /&gt;
&lt;br /&gt;
=== Helpers ===&lt;br /&gt;
*'''import_file_helper''', the list of methods in the file are the following: &lt;br /&gt;
** ::define_attributes - Sets and returns attributes for User object from hash.&lt;br /&gt;
** ::create_new_user - Makes a user object in the database.&lt;br /&gt;
&lt;br /&gt;
*'''import_topics_helper''', the list of methods in the file are the following: &lt;br /&gt;
** ::define_attributes - Sets and returns attributes for a SignUpTopic from hash.&lt;br /&gt;
** ::create_new_sign_up_topic - Makes SignUpTopic objects in the database.&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
We have found that the below mentioned models are using the import functionality defined in ImportFileController. SignUpTopic and User are dependent on the helper methods to use import functionality.&lt;br /&gt;
&lt;br /&gt;
*'''assignment_participant'''&lt;br /&gt;
*'''assignment_team'''&lt;br /&gt;
*'''course_participant'''&lt;br /&gt;
*'''course_team'''&lt;br /&gt;
*'''team'''&lt;br /&gt;
*'''metareview_response_map'''&lt;br /&gt;
*'''question'''&lt;br /&gt;
*'''review_response_map'''&lt;br /&gt;
*'''sign_up_sheet'''&lt;br /&gt;
*'''sign_up_topic'''&lt;br /&gt;
*'''user'''&lt;br /&gt;
&lt;br /&gt;
== Design Plan ==&lt;br /&gt;
&lt;br /&gt;
The design plan is to use Strategy patter to implement import functionality, so that all the import requests present in different models are routed through the ImportFileController. Right now since the import functionality is implemented in various model methods this leads to many if and else statements to check the type of model. So, we intent to generalize the import functionality by placing common code in the ImportFileController. But each model will still have its own import method. With this approach the redundancy is reduced by moving common code to ImportFileController and code will become DRY.&lt;br /&gt;
&lt;br /&gt;
Other helper methods such as ImportFileHelper and ImportTopicHelper that are used to perform import functionality will also be removed, which keeps import functionality consistent. We will be using method overloading and overriding for the methods in ImportFileController to eliminate unnecessary if and else blocks.&lt;br /&gt;
&lt;br /&gt;
To summarize our plan of changes:&lt;br /&gt;
&lt;br /&gt;
* Redirect all import calls through ImportFileController&lt;br /&gt;
* Refactor ImportFileController by removing the redundant code and making code generic.&lt;br /&gt;
* Insert object creation conditions into all relevant ::import functions and into the ImportFileController form.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image: DesignImport.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
As we have seen before, the import method has been implemented in a bunch of models which have been listed above. After preliminary analysis, we assume that the import functionality in a few of the models might have to be amended. These models are:&lt;br /&gt;
*'''assignment_participant'''&lt;br /&gt;
*'''assignment_team'''&lt;br /&gt;
*'''course_participant'''&lt;br /&gt;
*'''course_team'''&lt;br /&gt;
*'''team'''&lt;br /&gt;
*'''metareview_response_map'''&lt;br /&gt;
*'''review_response_map'''&lt;br /&gt;
*'''sign_up_topic'''&lt;br /&gt;
*'''user'''&lt;br /&gt;
We will update the test plan for those models in which the import code is amended to fit into the new framework. If we amend the import code in any other model, we will also update the tests in their respective .spec files.&lt;br /&gt;
Similarly for the export functionality, the tests in the respective .spec files will be updated as and when the code in that model is changed.&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers&amp;diff=140633</id>
		<title>CSC/ECE 517 Fall 2021 - E2160. Implementing and testing import export controllers</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers&amp;diff=140633"/>
		<updated>2021-11-03T20:43:54Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Team ===&lt;br /&gt;
*Akash Sarda, aksarda&lt;br /&gt;
*Sairam Sakhamuri, svsakham&lt;br /&gt;
*Sidhant Arora, sarora22&lt;br /&gt;
*Sai Harsha Nadendla, snadend2&lt;br /&gt;
&lt;br /&gt;
== Import and Export Functionality ==&lt;br /&gt;
In Expertiza, many kinds of files can be imported or exported: lists of users for whom accounts are to be created, lists of teams that have been created or need to be created, lists of topics that users are to be able to sign up for, or instructor or peer scores that have been given for a particular assignment.  Historically, all of these import and export methods were written individually, using similar code patterns.&lt;br /&gt;
The instructor might end up adding those in excel or having that data in excel - this functionality allows the expertiza to accept that csv file and tabulate it infront of the user. The user can then select to assign columns to that data and then import it into the database.&lt;br /&gt;
Eg. list of topics or feedback comments from the students can be tabular if it is say a MCQ questionnaire. The instructor will then have to either enter each entry manually through the UI or can upload this file to automate it.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
Initially the different classes (Topics, Assignments, Course Participants) had different implementations of taking in the csv file which was tightly coupled with the feature / model class. However, it was discovered that instead of defining the new method again and again, this process can be automated, by pushing common code of reading the headers and writing to the database into a single generic function. This would basically make it really easy to add this functionality to other model classes and to the new features yet to come to Expertiza.&lt;br /&gt;
&lt;br /&gt;
== Existing Import Functionality ==&lt;br /&gt;
&lt;br /&gt;
The current import functionality is done through the ImportFileController and there are different import class methods implemented in different models that are performing import function.&lt;br /&gt;
&lt;br /&gt;
In the SignUpTopic and User models use helper classes and the attributes are taken from a hash and new ActiveRecord object is created.&lt;br /&gt;
&lt;br /&gt;
=== Controllers ===&lt;br /&gt;
&lt;br /&gt;
*'''import_file_controller''', methods:&lt;br /&gt;
** Methods used to process files:&lt;br /&gt;
*** #get_delimiter - Sets delimiter for filetype&lt;br /&gt;
*** #parse_line - Processes line of the file&lt;br /&gt;
*** #parse_to_grid - parses the file into 2D array&lt;br /&gt;
*** #parse_to_hash - parses file into hash where 'header' stores header row and 'body' stores all contents.&lt;br /&gt;
*** #hash_rows_with_headers - Creates hash for each row of file. Keys are headers, values are row values.&lt;br /&gt;
** Import methods:&lt;br /&gt;
*** #import_from_hash - Primary import functionality. Creates objects for hashed rows (from #hash_rows_with_headers).&lt;br /&gt;
*** #import - Larger controller of import, sets error messages and displays.&lt;br /&gt;
&lt;br /&gt;
=== Helpers ===&lt;br /&gt;
*'''import_file_helper''', the list of methods in the file are the following: &lt;br /&gt;
** ::define_attributes - Sets and returns attributes for User object from hash.&lt;br /&gt;
** ::create_new_user - Makes a user object in the database.&lt;br /&gt;
&lt;br /&gt;
*'''import_topics_helper''', the list of methods in the file are the following: &lt;br /&gt;
** ::define_attributes - Sets and returns attributes for a SignUpTopic from hash.&lt;br /&gt;
** ::create_new_sign_up_topic - Makes SignUpTopic objects in the database.&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
We have found that the below mentioned models are using the import functionality defined in ImportFileController. SignUpTopic and User are dependent on the helper methods to use import functionality.&lt;br /&gt;
&lt;br /&gt;
*'''assignment_participant'''&lt;br /&gt;
*'''assignment_team'''&lt;br /&gt;
*'''course_participant'''&lt;br /&gt;
*'''course_team'''&lt;br /&gt;
*'''team'''&lt;br /&gt;
*'''metareview_response_map'''&lt;br /&gt;
*'''question'''&lt;br /&gt;
*'''review_response_map'''&lt;br /&gt;
*'''sign_up_sheet'''&lt;br /&gt;
*'''sign_up_topic'''&lt;br /&gt;
*'''user'''&lt;br /&gt;
&lt;br /&gt;
== Design Plan ==&lt;br /&gt;
&lt;br /&gt;
The design plan is to use Strategy patter to implement import functionality, so that all the import requests present in different models are routed through the ImportFileController. Right now since the import functionality is implemented in various model methods this leads to many if and else statements to check the type of model. So, we intent to generalize the import functionality by placing common code in the ImportFileController. But each model will still have its own import method. With this approach the redundancy is reduced by moving common code to ImportFileController and code will become DRY.&lt;br /&gt;
&lt;br /&gt;
Other helper methods such as ImportFileHelper and ImportTopicHelper that are used to perform import functionality will also be removed, which keeps import functionality consistent. We will be using method overloading and overriding for the methods in ImportFileController to eliminate unnecessary if and else blocks.&lt;br /&gt;
&lt;br /&gt;
To summarize our plan of changes:&lt;br /&gt;
&lt;br /&gt;
* Redirect all import calls through ImportFileController&lt;br /&gt;
* Refactor ImportFileController by removing the redundant code and making code generic.&lt;br /&gt;
* Insert object creation conditions into all relevant ::import functions and into the ImportFileController form.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image: DesignImport.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
As we have seen before, the import method has been implemented in a bunch of models which have been listed above. After preliminary analysis, we noticed that we should change the models and implement them in the new framework. These models are:&lt;br /&gt;
*'''assignment_participant'''&lt;br /&gt;
*'''assignment_team'''&lt;br /&gt;
*'''course_participant'''&lt;br /&gt;
*'''course_team'''&lt;br /&gt;
*'''team'''&lt;br /&gt;
*'''metareview_response_map'''&lt;br /&gt;
*'''review_response_map'''&lt;br /&gt;
*'''sign_up_topic'''&lt;br /&gt;
*'''user'''&lt;br /&gt;
We will update the test plan for those models in which the import code is amended to fit into the new framework.&lt;br /&gt;
If we amend the import code in any other model, we will also update the tests in their respective .spec files.&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers&amp;diff=140632</id>
		<title>CSC/ECE 517 Fall 2021 - E2160. Implementing and testing import export controllers</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers&amp;diff=140632"/>
		<updated>2021-11-03T20:42:14Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Team ===&lt;br /&gt;
*Akash Sarda, aksarda&lt;br /&gt;
*Sairam Sakhamuri, svsakham&lt;br /&gt;
*Sidhant Arora, sarora22&lt;br /&gt;
*Sai Harsha Nadendla, snadend2&lt;br /&gt;
&lt;br /&gt;
== Import and Export Functionality ==&lt;br /&gt;
In Expertiza, many kinds of files can be imported or exported: lists of users for whom accounts are to be created, lists of teams that have been created or need to be created, lists of topics that users are to be able to sign up for, or instructor or peer scores that have been given for a particular assignment.  Historically, all of these import and export methods were written individually, using similar code patterns.&lt;br /&gt;
The instructor might end up adding those in excel or having that data in excel - this functionality allows the expertiza to accept that csv file and tabulate it infront of the user. The user can then select to assign columns to that data and then import it into the database.&lt;br /&gt;
Eg. list of topics or feedback comments from the students can be tabular if it is say a MCQ questionnaire. The instructor will then have to either enter each entry manually through the UI or can upload this file to automate it.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
Initially the different classes (Topics, Assignments, Course Participants) had different implementations of taking in the csv file which was tightly coupled with the feature / model class. However, it was discovered that instead of defining the new method again and again, this process can be automated, by pushing common code of reading the headers and writing to the database into a single generic function. This would basically make it really easy to add this functionality to other model classes and to the new features yet to come to Expertiza.&lt;br /&gt;
&lt;br /&gt;
== Existing Import Functionality ==&lt;br /&gt;
&lt;br /&gt;
The current import functionality is done through the ImportFileController and there are different import class methods implemented in different models that are performing import function.&lt;br /&gt;
&lt;br /&gt;
In the SignUpTopic and User models use helper classes and the attributes are taken from a hash and new ActiveRecord object is created.&lt;br /&gt;
&lt;br /&gt;
=== Controllers ===&lt;br /&gt;
&lt;br /&gt;
*'''import_file_controller''', methods:&lt;br /&gt;
** Methods used to process files:&lt;br /&gt;
*** #get_delimiter - Sets delimiter for filetype&lt;br /&gt;
*** #parse_line - Processes line of the file&lt;br /&gt;
*** #parse_to_grid - parses the file into 2D array&lt;br /&gt;
*** #parse_to_hash - parses file into hash where 'header' stores header row and 'body' stores all contents.&lt;br /&gt;
*** #hash_rows_with_headers - Creates hash for each row of file. Keys are headers, values are row values.&lt;br /&gt;
** Import methods:&lt;br /&gt;
*** #import_from_hash - Primary import functionality. Creates objects for hashed rows (from #hash_rows_with_headers).&lt;br /&gt;
*** #import - Larger controller of import, sets error messages and displays.&lt;br /&gt;
&lt;br /&gt;
=== Helpers ===&lt;br /&gt;
*'''import_file_helper''', the list of methods in the file are the following: &lt;br /&gt;
** ::define_attributes - Sets and returns attributes for User object from hash.&lt;br /&gt;
** ::create_new_user - Makes a user object in the database.&lt;br /&gt;
&lt;br /&gt;
*'''import_topics_helper''', the list of methods in the file are the following: &lt;br /&gt;
** ::define_attributes - Sets and returns attributes for a SignUpTopic from hash.&lt;br /&gt;
** ::create_new_sign_up_topic - Makes SignUpTopic objects in the database.&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
We have found that the below mentioned models are using the import functionality defined in ImportFileController. SignUpTopic and User are dependent on the helper methods to use import functionality.&lt;br /&gt;
&lt;br /&gt;
*'''assignment_participant'''&lt;br /&gt;
*'''assignment_team'''&lt;br /&gt;
*'''course_participant'''&lt;br /&gt;
*'''course_team'''&lt;br /&gt;
*'''team'''&lt;br /&gt;
*'''metareview_response_map'''&lt;br /&gt;
*'''question'''&lt;br /&gt;
*'''review_response_map'''&lt;br /&gt;
*'''sign_up_sheet'''&lt;br /&gt;
*'''sign_up_topic'''&lt;br /&gt;
*'''user'''&lt;br /&gt;
&lt;br /&gt;
== Design Plan ==&lt;br /&gt;
&lt;br /&gt;
The design plan is to use Strategy patter to implement import functionality, so that all the import requests present in different models are routed through the ImportFileController. Right now since the import functionality is implemented in various model methods this leads to many if and else statements to check the type of model. So, we intent to generalize the import functionality by placing common code in the ImportFileController. But each model will still have its own import method. With this approach the redundancy is reduced by moving common code to ImportFileController and code will become DRY.&lt;br /&gt;
&lt;br /&gt;
Other helper methods such as ImportFileHelper and ImportTopicHelper that are used to perform import functionality will also be removed, which keeps import functionality consistent. We will be using method overloading and overriding for the methods in ImportFileController to eliminate unnecessary if and else blocks.&lt;br /&gt;
&lt;br /&gt;
To summarize our plan of changes:&lt;br /&gt;
&lt;br /&gt;
* Redirect all import calls through ImportFileController&lt;br /&gt;
* Refactor ImportFileController by removing the redundant code and making code generic.&lt;br /&gt;
* Insert object creation conditions into all relevant ::import functions and into the ImportFileController form.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image: DesignImport.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
As we have seen before, the import method has been implemented in a bunch of models which have been listed above. After preliminary analysis, we noticed that we should change the models and implement them in the new framework. These models are:&lt;br /&gt;
*'''assignment_participant'''&lt;br /&gt;
*'''assignment_team'''&lt;br /&gt;
*'''course_participant'''&lt;br /&gt;
*'''course_team'''&lt;br /&gt;
*'''team'''&lt;br /&gt;
*'''metareview_response_map'''&lt;br /&gt;
*'''review_response_map'''&lt;br /&gt;
*'''sign_up_topic'''&lt;br /&gt;
*'''user'''&lt;br /&gt;
We will update the test plan for those models in which the import code is amended to fit into the new framework.&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2117._Refactor_questionaires_controller.rb&amp;diff=140238</id>
		<title>CSC/ECE 517 Fall 2021 - E2117. Refactor questionaires controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2117._Refactor_questionaires_controller.rb&amp;diff=140238"/>
		<updated>2021-10-27T04:06:25Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: /* Changes made */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using a [http://rubyonrails.org/ Ruby on Rails] framework. In Expertiza, an instructor can create, delete or edit new and existing assignments and also create topics for the students to sign up for or assign them to particular groups or individual students. A student can create teams to work on projects and assignments, and also peer review other's work. The website allows submission of various file type and also URL's.&lt;br /&gt;
&lt;br /&gt;
===About questionnaire_controller.rb===&lt;br /&gt;
Questionnaire is the superclass for all kinds of [https://expertiza.csc.ncsu.edu/index.php/Questionnaires] and rubrics—rubrics for evaluating submissions and teammate contributions, and taking quizzes and surveys.  All of these are subclasses of Questionnaire.  questionnaires_controller.rb is charged with creating, displaying, and managing Questionnaires.  Since it is used so widely, malfunctions could cause bugs in many parts of the system; hence it is especially important that the code be clear.&lt;br /&gt;
&lt;br /&gt;
==Issues to be addressed==&lt;br /&gt;
*Investigate the need and usage of the method create_questionnaire&lt;br /&gt;
*Refactor the create method into different methods with self-descriptive names for easier understanding&lt;br /&gt;
*The display_type attribute that was being set in the create method is never actually being used and is instead being overwritten by a post_initialization method on the types of objects being created.&lt;br /&gt;
*Investigate the usage of checks for whether a questionnaire is '''QuizQuestionnaire'''&lt;br /&gt;
*Replace hard-coded rubric criteria scoring&lt;br /&gt;
*Investigate usage of questionnaire_id parameter&lt;br /&gt;
*Bad if statements&lt;br /&gt;
*Refactor save_all_questions method - Cognitive Complexity and Assignment Branch Condition exceed allowed limit.&lt;br /&gt;
*Refactor copy method - Assignment Branch Condition is too high.&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*In none of the files was the create_questionaire method being called so it was deleted.&lt;br /&gt;
*Removed the display_type attribute and added a display_type method that pulls the correct display_type string from the subclass that is being utilized. &lt;br /&gt;
*Removed the Rubric class as it wasn't being used as far as I could tell. This will need to be verified by the running a query on the production database.&lt;br /&gt;
*'''All the other issues couldn't be addressed due to a problem of  bigger scope popping up under the notice of the instructor and we moved our focus onto solving that and didn't have enough time left to deal with the original issues.'''&lt;br /&gt;
&lt;br /&gt;
==Future Work==&lt;br /&gt;
*The Questionnaire table still has the display_type attribute and will need to be removed after an exploration of the data has been taken and verified that all display_types are represented by subclasses available.&lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
*Isha Gupta&lt;br /&gt;
*John Marsden&lt;br /&gt;
*Sai Harsha Nadendla&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2117._Refactor_questionaires_controller.rb&amp;diff=139788</id>
		<title>CSC/ECE 517 Fall 2021 - E2117. Refactor questionaires controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2117._Refactor_questionaires_controller.rb&amp;diff=139788"/>
		<updated>2021-10-21T02:55:28Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using a [http://rubyonrails.org/ Ruby on Rails] framework. In Expertiza, an instructor can create, delete or edit new and existing assignments and also create topics for the students to sign up for or assign them to particular groups or individual students. A student can create teams to work on projects and assignments, and also peer review other's work. The website allows submission of various file type and also URL's.&lt;br /&gt;
&lt;br /&gt;
===About questionnaire_controller.rb===&lt;br /&gt;
Questionnaire is the superclass for all kinds of [https://expertiza.csc.ncsu.edu/index.php/Questionnaires] and rubrics—rubrics for evaluating submissions and teammate contributions, and taking quizzes and surveys.  All of these are subclasses of Questionnaire.  questionnaires_controller.rb is charged with creating, displaying, and managing Questionnaires.  Since it is used so widely, malfunctions could cause bugs in many parts of the system; hence it is especially important that the code be clear.&lt;br /&gt;
&lt;br /&gt;
==Issues to be addressed==&lt;br /&gt;
*Investigate the need and usage of the method create_questionnaire&lt;br /&gt;
*Refactor the create method into different methods with self-descriptive names for easier understanding&lt;br /&gt;
*Investigate the usage of checks for whether a questionnaire is '''QuizQuestionnaire'''&lt;br /&gt;
*Replace hard-coded rubric criteria scoring&lt;br /&gt;
*Investigate usage of questionnaire_id parameter&lt;br /&gt;
*Bad if statements&lt;br /&gt;
*Refactor save_all_questions method - Cognitive Complexity and Assignment Branch Condition exceed allowed limit.&lt;br /&gt;
*Refactor copy method - Assignment Branch Condition is too high.&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*In none of the files was the create_questionaire method being called so it was deleted.&lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
*Isha Gupta&lt;br /&gt;
*John Marsden&lt;br /&gt;
*Sai Harsha Nadendla&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2117._Refactor_questionaires_controller.rb&amp;diff=139785</id>
		<title>CSC/ECE 517 Fall 2021 - E2117. Refactor questionaires controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2117._Refactor_questionaires_controller.rb&amp;diff=139785"/>
		<updated>2021-10-21T02:54:54Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: /* Changes made */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using a [http://rubyonrails.org/ Ruby on Rails] framework. In Expertiza, an instructor can create, delete or edit new and existing assignments and also create topics for the students to sign up for or assign them to particular groups or individual students. A student can create teams to work on projects and assignments, and also peer review other's work. The website allows submission of various file type and also URL's.&lt;br /&gt;
&lt;br /&gt;
===About questionnaire_controller.rb===&lt;br /&gt;
Questionnaire is the superclass for all kinds of [https://expertiza.csc.ncsu.edu/index.php/Questionnaires] and rubrics—rubrics for evaluating submissions and teammate contributions, and taking quizzes and surveys.  All of these are subclasses of Questionnaire.  questionnaires_controller.rb is charged with creating, displaying, and managing Questionnaires.  Since it is used so widely, malfunctions could cause bugs in many parts of the system; hence it is especially important that the code be clear.&lt;br /&gt;
&lt;br /&gt;
==Issues to be addressed==&lt;br /&gt;
1.Investigate the need and usage of the method create_questionnaire&lt;br /&gt;
2.Refactor the create method into different methods with self-descriptive names for easier understanding&lt;br /&gt;
3.Investigate the usage of checks for whether a questionnaire is '''QuizQuestionnaire'''&lt;br /&gt;
4.Replace hard-coded rubric criteria scoring&lt;br /&gt;
5.Investigate usage of questionnaire_id parameter&lt;br /&gt;
6.Bad if statements&lt;br /&gt;
7.Refactor save_all_questions method - Cognitive Complexity and Assignment Branch Condition exceed allowed limit.&lt;br /&gt;
8.Refactor copy method - Assignment Branch Condition is too high.&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
1. In none of the files was the create_questionaire method being called so it was deleted.&lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
*Isha Gupta&lt;br /&gt;
*John Marsden&lt;br /&gt;
*Sai Harsha Nadendla&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2117._Refactor_questionaires_controller.rb&amp;diff=139780</id>
		<title>CSC/ECE 517 Fall 2021 - E2117. Refactor questionaires controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2117._Refactor_questionaires_controller.rb&amp;diff=139780"/>
		<updated>2021-10-21T02:53:15Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using a [http://rubyonrails.org/ Ruby on Rails] framework. In Expertiza, an instructor can create, delete or edit new and existing assignments and also create topics for the students to sign up for or assign them to particular groups or individual students. A student can create teams to work on projects and assignments, and also peer review other's work. The website allows submission of various file type and also URL's.&lt;br /&gt;
&lt;br /&gt;
===About questionnaire_controller.rb===&lt;br /&gt;
Questionnaire is the superclass for all kinds of [https://expertiza.csc.ncsu.edu/index.php/Questionnaires] and rubrics—rubrics for evaluating submissions and teammate contributions, and taking quizzes and surveys.  All of these are subclasses of Questionnaire.  questionnaires_controller.rb is charged with creating, displaying, and managing Questionnaires.  Since it is used so widely, malfunctions could cause bugs in many parts of the system; hence it is especially important that the code be clear.&lt;br /&gt;
&lt;br /&gt;
==Issues to be addressed==&lt;br /&gt;
1.Investigate the need and usage of the method create_questionnaire&lt;br /&gt;
2.Refactor the create method into different methods with self-descriptive names for easier understanding&lt;br /&gt;
3.Investigate the usage of checks for whether a questionnaire is '''QuizQuestionnaire'''&lt;br /&gt;
4.Replace hard-coded rubric criteria scoring&lt;br /&gt;
5.Investigate usage of questionnaire_id parameter&lt;br /&gt;
6.Bad if statements&lt;br /&gt;
7.Refactor save_all_questions method - Cognitive Complexity and Assignment Branch Condition exceed allowed limit.&lt;br /&gt;
8.Refactor copy method - Assignment Branch Condition is too high.&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
1.In none of the files was the create_questionaire method being called so it was deleted.&lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
*Isha Gupta&lt;br /&gt;
*John Marsden&lt;br /&gt;
*Sai Harsha Nadendla&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2117._Refactor_questionaires_controller.rb&amp;diff=139775</id>
		<title>CSC/ECE 517 Fall 2021 - E2117. Refactor questionaires controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2117._Refactor_questionaires_controller.rb&amp;diff=139775"/>
		<updated>2021-10-21T02:49:39Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using a [http://rubyonrails.org/ Ruby on Rails] framework. In Expertiza, an instructor can create, delete or edit new and existing assignments and also create topics for the students to sign up for or assign them to particular groups or individual students. A student can create teams to work on projects and assignments, and also peer review other's work. The website allows submission of various file type and also URL's.&lt;br /&gt;
&lt;br /&gt;
===About questionnaire_controller.rb===&lt;br /&gt;
Questionnaire is the superclass for all kinds of [https://expertiza.csc.ncsu.edu/index.php/Questionnaires] and rubrics—rubrics for evaluating submissions and teammate contributions, and taking quizzes and surveys.  All of these are subclasses of Questionnaire.  questionnaires_controller.rb is charged with creating, displaying, and managing Questionnaires.  Since it is used so widely, malfunctions could cause bugs in many parts of the system; hence it is especially important that the code be clear.&lt;br /&gt;
&lt;br /&gt;
==Issues to be addressed==&lt;br /&gt;
*Investigate the need and usage of the method create_questionnaire&lt;br /&gt;
*Refactor the create method into different methods with self-descriptive names for easier understanding&lt;br /&gt;
*Investigate the usage of checks for whether a questionnaire is '''QuizQuestionnaire'''&lt;br /&gt;
*Replace hard-coded rubric criteria scoring&lt;br /&gt;
*Investigate usage of questionnaire_id parameter&lt;br /&gt;
*Bad if statements&lt;br /&gt;
*Refactor save_all_questions method - Cognitive Complexity and Assignment Branch Condition exceed allowed limit.&lt;br /&gt;
*Refactor copy method - Assignment Branch Condition is too high.&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*In none of the files was the create_questionaire method being called so it was removed&lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
*Isha Gupta&lt;br /&gt;
*John Marsden&lt;br /&gt;
*Sai Harsha Nadendla&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2117._Refactor_questionaires_controller.rb&amp;diff=139770</id>
		<title>CSC/ECE 517 Fall 2021 - E2117. Refactor questionaires controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2117._Refactor_questionaires_controller.rb&amp;diff=139770"/>
		<updated>2021-10-21T02:47:10Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: /* Changes made */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using a [http://rubyonrails.org/ Ruby on Rails] framework. In Expertiza, an instructor can create, delete or edit new and existing assignments and also create topics for the students to sign up for or assign them to particular groups or individual students. A student can create teams to work on projects and assignments, and also peer review other's work. The website allows submission of various file type and also URL's.&lt;br /&gt;
&lt;br /&gt;
===About questionnaire_controller.rb===&lt;br /&gt;
Questionnaire is the superclass for all kinds of [https://expertiza.csc.ncsu.edu/index.php/Questionnaires] and rubrics—rubrics for evaluating submissions and teammate contributions, and taking quizzes and surveys.  All of these are subclasses of Questionnaire.  questionnaires_controller.rb is charged with creating, displaying, and managing Questionnaires.  Since it is used so widely, malfunctions could cause bugs in many parts of the system; hence it is especially important that the code be clear.&lt;br /&gt;
&lt;br /&gt;
==Issues to be addressed==&lt;br /&gt;
*Investigate the need and usage of the method create_questionnaire&lt;br /&gt;
*Refactor the create method into different methods with self-descriptive names for easier understanding&lt;br /&gt;
*Investigate the usage of checks for whether a questionnaire is '''QuizQuestionnaire'''&lt;br /&gt;
*Replace hard-coded rubric criteria scoring&lt;br /&gt;
*Investigate usage of questionnaire_id parameter&lt;br /&gt;
*Bad if statements&lt;br /&gt;
*Refactor save_all_questions method - Cognitive Complexity and Assignment Branch Condition exceed allowed limit.&lt;br /&gt;
*Refactor copy method - Assignment Branch Condition is too high.&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;br /&gt;
*In none of the files was the create_questionaire method being called so it was removed&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2117._Refactor_questionaires_controller.rb&amp;diff=139763</id>
		<title>CSC/ECE 517 Fall 2021 - E2117. Refactor questionaires controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2117._Refactor_questionaires_controller.rb&amp;diff=139763"/>
		<updated>2021-10-21T02:43:38Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: Created page with &amp;quot;__TOC__  ==Introduction==  ===About Expertiza=== [http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using a [http://rubyonrails.org/ Ruby on Rails] fra...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using a [http://rubyonrails.org/ Ruby on Rails] framework. In Expertiza, an instructor can create, delete or edit new and existing assignments and also create topics for the students to sign up for or assign them to particular groups or individual students. A student can create teams to work on projects and assignments, and also peer review other's work. The website allows submission of various file type and also URL's.&lt;br /&gt;
&lt;br /&gt;
===About questionnaire_controller.rb===&lt;br /&gt;
Questionnaire is the superclass for all kinds of [https://expertiza.csc.ncsu.edu/index.php/Questionnaires] and rubrics—rubrics for evaluating submissions and teammate contributions, and taking quizzes and surveys.  All of these are subclasses of Questionnaire.  questionnaires_controller.rb is charged with creating, displaying, and managing Questionnaires.  Since it is used so widely, malfunctions could cause bugs in many parts of the system; hence it is especially important that the code be clear.&lt;br /&gt;
&lt;br /&gt;
==Issues to be addressed==&lt;br /&gt;
*Investigate the need and usage of the method create_questionnaire&lt;br /&gt;
*Refactor the create method into different methods with self-descriptive names for easier understanding&lt;br /&gt;
*Investigate the usage of checks for whether a questionnaire is '''QuizQuestionnaire'''&lt;br /&gt;
*Replace hard-coded rubric criteria scoring&lt;br /&gt;
*Investigate usage of questionnaire_id parameter&lt;br /&gt;
*Bad if statements&lt;br /&gt;
*Refactor save_all_questions method - Cognitive Complexity and Assignment Branch Condition exceed allowed limit.&lt;br /&gt;
*Refactor copy method - Assignment Branch Condition is too high.&lt;br /&gt;
&lt;br /&gt;
==Changes made==&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021&amp;diff=139590</id>
		<title>CSC/ECE 517 Fall 2021</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021&amp;diff=139590"/>
		<updated>2021-10-20T23:39:58Z</updated>

		<summary type="html">&lt;p&gt;Snadend2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OSS Projects ==&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - {$num}. {$desc.title}]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2117. Refactor questionaires_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2128. Refactor student_quizzes_controller.rb &amp;amp; late_policies_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2132. Add tests cases for review mapping helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2134. Write unit tests for admin_controller.rb and institution_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2138. Auto-generate submission directory names based on assignment]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2142. Improve e-mail notifications]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2133. Write tests for popup_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2120. Refactor reputation_web_service_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2139. Remove multiple topics at a time]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2131. Improve assessment360_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2121. Refactor suggestion_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2122. Refactor impersonate_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2126. Refactor account_request_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2124. Refactor review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2125. Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2127. Refactor teams_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2130. Refactor submitted_content_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2141. OSS project Finklestein: Instructors &amp;amp; Institutions]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2147. Role-based reviewing]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2145. OSS Project Beige]]&lt;/div&gt;</summary>
		<author><name>Snadend2</name></author>
	</entry>
</feed>