<?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=Rtgalla2</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=Rtgalla2"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Rtgalla2"/>
	<updated>2026-08-26T20:33:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164585</id>
		<title>CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164585"/>
		<updated>2025-04-22T14:09:54Z</updated>

		<summary type="html">&lt;p&gt;Rtgalla2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
*Anish Toorpu&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
*Dennis Christman &amp;lt;dchrist2@ncsu.edu&amp;gt;&lt;br /&gt;
*Eleanor Maye &amp;lt;edmaye@ncsu.edu&amp;gt;&lt;br /&gt;
*Ryan Gallagher &amp;lt;rtgalla2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The ResponseMap concept in Expertiza exists as a hierarchy of several different Rails models, that utilize Singe Table Inheritance to allow for the use of polymorphism across the different types of Assignments that different ResponseMaps may map to. While part of the ResponseMap hierarchy has been reimplemented in the the new Expertiza backend, most of it has not. Our team has been tasked with the reimplementation of several of these. Below is the full ResponseMap hierarchy. Class names in bold are ones we are tasked with reimplementing, those in italics are for future projects, and those in neither have already been reimplemented:&lt;br /&gt;
&lt;br /&gt;
*ResponseMap&lt;br /&gt;
**'''SurveyResponseMap'''&lt;br /&gt;
***'''AssignmentSurveyResponseMap'''&lt;br /&gt;
***'''CourseSurveyResponseMap'''&lt;br /&gt;
***'''GlobalSurveyResponseMap'''&lt;br /&gt;
**ReviewResponseMap&lt;br /&gt;
***'''BookmarkRatingResponseMap'''&lt;br /&gt;
**'''FeedbackResponseMap'''&lt;br /&gt;
**''MetareviewResponseMap''&lt;br /&gt;
**'''QuizResponseMap'''&lt;br /&gt;
**''SelfReviewResponseMap''&lt;br /&gt;
**'''TeammateReviewResponseMap'''&lt;br /&gt;
&lt;br /&gt;
The current implementation lacks a clear hierarchical structure for models, encapsulation of business logic, flexibility due to hardcoded values, and comprehensive testing. This results in maintainability issues, scalability problems, and poor integration with existing components. Additionally, while the current implementation is functional, it is poorly documented, making it difficult for someone new to the project to understand what the purpose of each subclass is.&lt;br /&gt;
&lt;br /&gt;
==Design Goal==&lt;br /&gt;
We have several goals for this project:&lt;br /&gt;
*Utilize the existing hierarchy and ensure proper inheritance between models.&lt;br /&gt;
*Ensure that all business logic and validations are in the proper model. This includes both making sure that code is not unnecessarily repeated in a class and its subclasses and making sure that a class does not contain logic based on its subclasses.&lt;br /&gt;
*Move hardcoded values to an environment variables file, and replace instance of that value in the repo with the new environment variable.&lt;br /&gt;
*Develop extensive test coverage for each new model.&lt;br /&gt;
*Document each new model with clear comments on its use and methods.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
===Implementation Plan===&lt;br /&gt;
Our plan will be to start at the top of the hierarchy and find code that is repeated in different places and consolidate to the highest point of the hierarchy where it makes sense, looking at associations, validations and methods. An example of this are the lines:&lt;br /&gt;
 belongs_to :reviewee, class_name: 'Participant', foreign_key: 'reviewee_id'&lt;br /&gt;
 belongs_to :assignment, class_name: 'Assignment', foreign_key: 'reviewed_object_id'&lt;br /&gt;
which appear in several different models, including the ResponseMap class itself. We will also identify methods such as the '''email''' method that appear in different subclasses that share much of the implementation and refactor the shared parts into a shared method.&lt;br /&gt;
&lt;br /&gt;
==Files Added/Modified==&lt;br /&gt;
* survey_response_map.rb&lt;br /&gt;
* assignment_survey_response_map.rb&lt;br /&gt;
* course_survey_response_map.rb&lt;br /&gt;
* global_survey_response_map.rb&lt;br /&gt;
* review_response_map.rb&lt;br /&gt;
* bookmark_rating_response_map.rb&lt;br /&gt;
* feedback_response_map.rb&lt;br /&gt;
* meta_review_response_map.rb&lt;br /&gt;
* quiz_response_map.rb&lt;br /&gt;
* self_review_response_map.rb&lt;br /&gt;
* teammate_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
==Subclasses and Testing==&lt;br /&gt;
&lt;br /&gt;
===FeedbackResponseMap===&lt;br /&gt;
[[File:FeedbackResponseMap.png]]&lt;br /&gt;
&lt;br /&gt;
The FeedbackResponseMap class is a subclass of ResponseMap and represents feedback provided in response to a review. It establishes a belongs_to association with a Response object, referenced as review, using reviewed_object_id as the foreign key. The assignment method returns the assignment associated with the original review by accessing it through the review's map. The questionnaire method retrieves a questionnaire record that matches the reviewed_object_id. Lastly, the get_title method returns a predefined constant, FEEDBACK_RESPONSE_MAP_TITLE, that denotes a title for feedback response maps.&lt;br /&gt;
&lt;br /&gt;
[[File:FeedbackResponseMap Tests.png]]&lt;br /&gt;
&lt;br /&gt;
This RSpec test suite verifies the functionality of FeedbackResponseMap model by including tests for the three main methods. The assignment test ensures that the model correctly returns the assignment linked to the feedback through the associated review. The questionnaire test checks that it retrieves the appropriate questionnaire, specifically one of type AuthorFeedbackQuestionnaire, based on the reviewed_object_id. Lastly, the get_title test confirms that the method returns the expected title constant defined for feedback response maps. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
Foremost, for Unit Testing, we will write tests to ensure that all validations are functioning as anticipated for each model. Furthermore, we will verify that all belongs_to and has_many associations are configured properly and ensure that no dangling records remain after creating or destroying records involved. Moreover, various testing measures will ensure that business logic operates correctly in the model, paying special attention will be given to methods shared across multiple subclasses. Lastly, any refactored code that incorporates environmental variables will be thoroughly tested to ensure that correct values appear in place of hardcoded ones.&lt;br /&gt;
&lt;br /&gt;
For integration testing, we will write tests to simulate real-world interactions between models. Furthermore, special attention will be provided to edge cases (i.e. missing data, interactions between multiple subclasses of ResponseMap, etc.) to ensure proper error handling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, to ease the workflow process for further groups in later iterations, we will thoroughly document all test cases through comments, providing clear explanations of each test’s purpose and anticipated results.&lt;/div&gt;</summary>
		<author><name>Rtgalla2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164583</id>
		<title>CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164583"/>
		<updated>2025-04-22T14:08:27Z</updated>

		<summary type="html">&lt;p&gt;Rtgalla2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
*Anish Toorpu&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
*Dennis Christman &amp;lt;dchrist2@ncsu.edu&amp;gt;&lt;br /&gt;
*Eleanor Maye &amp;lt;edmaye@ncsu.edu&amp;gt;&lt;br /&gt;
*Ryan Gallagher &amp;lt;rtgalla2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The ResponseMap concept in Expertiza exists as a hierarchy of several different Rails models, that utilize Singe Table Inheritance to allow for the use of polymorphism across the different types of Assignments that different ResponseMaps may map to. While part of the ResponseMap hierarchy has been reimplemented in the the new Expertiza backend, most of it has not. Our team has been tasked with the reimplementation of several of these. Below is the full ResponseMap hierarchy. Class names in bold are ones we are tasked with reimplementing, those in italics are for future projects, and those in neither have already been reimplemented:&lt;br /&gt;
&lt;br /&gt;
*ResponseMap&lt;br /&gt;
**'''SurveyResponseMap'''&lt;br /&gt;
***'''AssignmentSurveyResponseMap'''&lt;br /&gt;
***'''CourseSurveyResponseMap'''&lt;br /&gt;
***'''GlobalSurveyResponseMap'''&lt;br /&gt;
**ReviewResponseMap&lt;br /&gt;
***'''BookmarkRatingResponseMap'''&lt;br /&gt;
**'''FeedbackResponseMap'''&lt;br /&gt;
**''MetareviewResponseMap''&lt;br /&gt;
**'''QuizResponseMap'''&lt;br /&gt;
**''SelfReviewResponseMap''&lt;br /&gt;
**'''TeammateReviewResponseMap'''&lt;br /&gt;
&lt;br /&gt;
The current implementation lacks a clear hierarchical structure for models, encapsulation of business logic, flexibility due to hardcoded values, and comprehensive testing. This results in maintainability issues, scalability problems, and poor integration with existing components. Additionally, while the current implementation is functional, it is poorly documented, making it difficult for someone new to the project to understand what the purpose of each subclass is.&lt;br /&gt;
&lt;br /&gt;
==Design Goal==&lt;br /&gt;
We have several goals for this project:&lt;br /&gt;
*Utilize the existing hierarchy and ensure proper inheritance between models.&lt;br /&gt;
*Ensure that all business logic and validations are in the proper model. This includes both making sure that code is not unnecessarily repeated in a class and its subclasses and making sure that a class does not contain logic based on its subclasses.&lt;br /&gt;
*Move hardcoded values to an environment variables file, and replace instance of that value in the repo with the new environment variable.&lt;br /&gt;
*Develop extensive test coverage for each new model.&lt;br /&gt;
*Document each new model with clear comments on its use and methods.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
===Implementation Plan===&lt;br /&gt;
Our plan will be to start at the top of the hierarchy and find code that is repeated in different places and consolidate to the highest point of the hierarchy where it makes sense, looking at associations, validations and methods. An example of this are the lines:&lt;br /&gt;
 belongs_to :reviewee, class_name: 'Participant', foreign_key: 'reviewee_id'&lt;br /&gt;
 belongs_to :assignment, class_name: 'Assignment', foreign_key: 'reviewed_object_id'&lt;br /&gt;
which appear in several different models, including the ResponseMap class itself. We will also identify methods such as the '''email''' method that appear in different subclasses that share much of the implementation and refactor the shared parts into a shared method.&lt;br /&gt;
&lt;br /&gt;
==Files Added/Modified==&lt;br /&gt;
* survey_response_map.rb&lt;br /&gt;
* assignment_survey_response_map.rb&lt;br /&gt;
* course_survey_response_map.rb&lt;br /&gt;
* global_survey_response_map.rb&lt;br /&gt;
* review_response_map.rb&lt;br /&gt;
* bookmark_rating_response_map.rb&lt;br /&gt;
* feedback_response_map.rb&lt;br /&gt;
* meta_review_response_map.rb&lt;br /&gt;
* quiz_response_map.rb&lt;br /&gt;
* self_review_response_map.rb&lt;br /&gt;
* teammate_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
==Subclasses and Testing==&lt;br /&gt;
&lt;br /&gt;
===FeedbackResponseMap===&lt;br /&gt;
[[File:FeedbackResponseMap.png]]&lt;br /&gt;
&lt;br /&gt;
The FeedbackResponseMap class is a subclass of ResponseMap and represents feedback provided in response to a review. It establishes a belongs_to association with a Response object, referenced as review, using reviewed_object_id as the foreign key. The assignment method returns the assignment associated with the original review by accessing it through the review's map. The questionnaire method retrieves a questionnaire record that matches the reviewed_object_id. Lastly, the get_title method returns a predefined constant, FEEDBACK_RESPONSE_MAP_TITLE, that denotes a title for feedback response maps.&lt;br /&gt;
&lt;br /&gt;
[[File:FeedbackResponseMap Tests.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
Foremost, for Unit Testing, we will write tests to ensure that all validations are functioning as anticipated for each model. Furthermore, we will verify that all belongs_to and has_many associations are configured properly and ensure that no dangling records remain after creating or destroying records involved. Moreover, various testing measures will ensure that business logic operates correctly in the model, paying special attention will be given to methods shared across multiple subclasses. Lastly, any refactored code that incorporates environmental variables will be thoroughly tested to ensure that correct values appear in place of hardcoded ones.&lt;br /&gt;
&lt;br /&gt;
For integration testing, we will write tests to simulate real-world interactions between models. Furthermore, special attention will be provided to edge cases (i.e. missing data, interactions between multiple subclasses of ResponseMap, etc.) to ensure proper error handling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, to ease the workflow process for further groups in later iterations, we will thoroughly document all test cases through comments, providing clear explanations of each test’s purpose and anticipated results.&lt;/div&gt;</summary>
		<author><name>Rtgalla2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FeedbackResponseMap_Tests.png&amp;diff=164582</id>
		<title>File:FeedbackResponseMap Tests.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FeedbackResponseMap_Tests.png&amp;diff=164582"/>
		<updated>2025-04-22T14:07:51Z</updated>

		<summary type="html">&lt;p&gt;Rtgalla2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rtgalla2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164580</id>
		<title>CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164580"/>
		<updated>2025-04-22T14:05:47Z</updated>

		<summary type="html">&lt;p&gt;Rtgalla2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
*Anish Toorpu&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
*Dennis Christman &amp;lt;dchrist2@ncsu.edu&amp;gt;&lt;br /&gt;
*Eleanor Maye &amp;lt;edmaye@ncsu.edu&amp;gt;&lt;br /&gt;
*Ryan Gallagher &amp;lt;rtgalla2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The ResponseMap concept in Expertiza exists as a hierarchy of several different Rails models, that utilize Singe Table Inheritance to allow for the use of polymorphism across the different types of Assignments that different ResponseMaps may map to. While part of the ResponseMap hierarchy has been reimplemented in the the new Expertiza backend, most of it has not. Our team has been tasked with the reimplementation of several of these. Below is the full ResponseMap hierarchy. Class names in bold are ones we are tasked with reimplementing, those in italics are for future projects, and those in neither have already been reimplemented:&lt;br /&gt;
&lt;br /&gt;
*ResponseMap&lt;br /&gt;
**'''SurveyResponseMap'''&lt;br /&gt;
***'''AssignmentSurveyResponseMap'''&lt;br /&gt;
***'''CourseSurveyResponseMap'''&lt;br /&gt;
***'''GlobalSurveyResponseMap'''&lt;br /&gt;
**ReviewResponseMap&lt;br /&gt;
***'''BookmarkRatingResponseMap'''&lt;br /&gt;
**'''FeedbackResponseMap'''&lt;br /&gt;
**''MetareviewResponseMap''&lt;br /&gt;
**'''QuizResponseMap'''&lt;br /&gt;
**''SelfReviewResponseMap''&lt;br /&gt;
**'''TeammateReviewResponseMap'''&lt;br /&gt;
&lt;br /&gt;
The current implementation lacks a clear hierarchical structure for models, encapsulation of business logic, flexibility due to hardcoded values, and comprehensive testing. This results in maintainability issues, scalability problems, and poor integration with existing components. Additionally, while the current implementation is functional, it is poorly documented, making it difficult for someone new to the project to understand what the purpose of each subclass is.&lt;br /&gt;
&lt;br /&gt;
==Design Goal==&lt;br /&gt;
We have several goals for this project:&lt;br /&gt;
*Utilize the existing hierarchy and ensure proper inheritance between models.&lt;br /&gt;
*Ensure that all business logic and validations are in the proper model. This includes both making sure that code is not unnecessarily repeated in a class and its subclasses and making sure that a class does not contain logic based on its subclasses.&lt;br /&gt;
*Move hardcoded values to an environment variables file, and replace instance of that value in the repo with the new environment variable.&lt;br /&gt;
*Develop extensive test coverage for each new model.&lt;br /&gt;
*Document each new model with clear comments on its use and methods.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
===Implementation Plan===&lt;br /&gt;
Our plan will be to start at the top of the hierarchy and find code that is repeated in different places and consolidate to the highest point of the hierarchy where it makes sense, looking at associations, validations and methods. An example of this are the lines:&lt;br /&gt;
 belongs_to :reviewee, class_name: 'Participant', foreign_key: 'reviewee_id'&lt;br /&gt;
 belongs_to :assignment, class_name: 'Assignment', foreign_key: 'reviewed_object_id'&lt;br /&gt;
which appear in several different models, including the ResponseMap class itself. We will also identify methods such as the '''email''' method that appear in different subclasses that share much of the implementation and refactor the shared parts into a shared method.&lt;br /&gt;
&lt;br /&gt;
==Files Added/Modified==&lt;br /&gt;
* survey_response_map.rb&lt;br /&gt;
* assignment_survey_response_map.rb&lt;br /&gt;
* course_survey_response_map.rb&lt;br /&gt;
* global_survey_response_map.rb&lt;br /&gt;
* review_response_map.rb&lt;br /&gt;
* bookmark_rating_response_map.rb&lt;br /&gt;
* feedback_response_map.rb&lt;br /&gt;
* meta_review_response_map.rb&lt;br /&gt;
* quiz_response_map.rb&lt;br /&gt;
* self_review_response_map.rb&lt;br /&gt;
* teammate_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
==Subclasses and Testing==&lt;br /&gt;
&lt;br /&gt;
===FeedbackResponseMap===&lt;br /&gt;
[[File:FeedbackResponseMap.png]]&lt;br /&gt;
&lt;br /&gt;
The FeedbackResponseMap class is a subclass of ResponseMap and represents feedback provided in response to a review. It establishes a belongs_to association with a Response object, referenced as review, using reviewed_object_id as the foreign key. The assignment method returns the assignment associated with the original review by accessing it through the review's map. The questionnaire method retrieves a questionnaire record that matches the reviewed_object_id. Lastly, the get_title method returns a predefined constant, FEEDBACK_RESPONSE_MAP_TITLE, that denotes a title for feedback response maps.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
Foremost, for Unit Testing, we will write tests to ensure that all validations are functioning as anticipated for each model. Furthermore, we will verify that all belongs_to and has_many associations are configured properly and ensure that no dangling records remain after creating or destroying records involved. Moreover, various testing measures will ensure that business logic operates correctly in the model, paying special attention will be given to methods shared across multiple subclasses. Lastly, any refactored code that incorporates environmental variables will be thoroughly tested to ensure that correct values appear in place of hardcoded ones.&lt;br /&gt;
&lt;br /&gt;
For integration testing, we will write tests to simulate real-world interactions between models. Furthermore, special attention will be provided to edge cases (i.e. missing data, interactions between multiple subclasses of ResponseMap, etc.) to ensure proper error handling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, to ease the workflow process for further groups in later iterations, we will thoroughly document all test cases through comments, providing clear explanations of each test’s purpose and anticipated results.&lt;/div&gt;</summary>
		<author><name>Rtgalla2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164579</id>
		<title>CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164579"/>
		<updated>2025-04-22T14:01:30Z</updated>

		<summary type="html">&lt;p&gt;Rtgalla2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
*Anish Toorpu&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
*Dennis Christman &amp;lt;dchrist2@ncsu.edu&amp;gt;&lt;br /&gt;
*Eleanor Maye &amp;lt;edmaye@ncsu.edu&amp;gt;&lt;br /&gt;
*Ryan Gallagher &amp;lt;rtgalla2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The ResponseMap concept in Expertiza exists as a hierarchy of several different Rails models, that utilize Singe Table Inheritance to allow for the use of polymorphism across the different types of Assignments that different ResponseMaps may map to. While part of the ResponseMap hierarchy has been reimplemented in the the new Expertiza backend, most of it has not. Our team has been tasked with the reimplementation of several of these. Below is the full ResponseMap hierarchy. Class names in bold are ones we are tasked with reimplementing, those in italics are for future projects, and those in neither have already been reimplemented:&lt;br /&gt;
&lt;br /&gt;
*ResponseMap&lt;br /&gt;
**'''SurveyResponseMap'''&lt;br /&gt;
***'''AssignmentSurveyResponseMap'''&lt;br /&gt;
***'''CourseSurveyResponseMap'''&lt;br /&gt;
***'''GlobalSurveyResponseMap'''&lt;br /&gt;
**ReviewResponseMap&lt;br /&gt;
***'''BookmarkRatingResponseMap'''&lt;br /&gt;
**'''FeedbackResponseMap'''&lt;br /&gt;
**''MetareviewResponseMap''&lt;br /&gt;
**'''QuizResponseMap'''&lt;br /&gt;
**''SelfReviewResponseMap''&lt;br /&gt;
**'''TeammateReviewResponseMap'''&lt;br /&gt;
&lt;br /&gt;
The current implementation lacks a clear hierarchical structure for models, encapsulation of business logic, flexibility due to hardcoded values, and comprehensive testing. This results in maintainability issues, scalability problems, and poor integration with existing components. Additionally, while the current implementation is functional, it is poorly documented, making it difficult for someone new to the project to understand what the purpose of each subclass is.&lt;br /&gt;
&lt;br /&gt;
==Design Goal==&lt;br /&gt;
We have several goals for this project:&lt;br /&gt;
*Utilize the existing hierarchy and ensure proper inheritance between models.&lt;br /&gt;
*Ensure that all business logic and validations are in the proper model. This includes both making sure that code is not unnecessarily repeated in a class and its subclasses and making sure that a class does not contain logic based on its subclasses.&lt;br /&gt;
*Move hardcoded values to an environment variables file, and replace instance of that value in the repo with the new environment variable.&lt;br /&gt;
*Develop extensive test coverage for each new model.&lt;br /&gt;
*Document each new model with clear comments on its use and methods.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
===Implementation Plan===&lt;br /&gt;
Our plan will be to start at the top of the hierarchy and find code that is repeated in different places and consolidate to the highest point of the hierarchy where it makes sense, looking at associations, validations and methods. An example of this are the lines:&lt;br /&gt;
 belongs_to :reviewee, class_name: 'Participant', foreign_key: 'reviewee_id'&lt;br /&gt;
 belongs_to :assignment, class_name: 'Assignment', foreign_key: 'reviewed_object_id'&lt;br /&gt;
which appear in several different models, including the ResponseMap class itself. We will also identify methods such as the '''email''' method that appear in different subclasses that share much of the implementation and refactor the shared parts into a shared method.&lt;br /&gt;
&lt;br /&gt;
==Files Added/Modified==&lt;br /&gt;
* survey_response_map.rb&lt;br /&gt;
* assignment_survey_response_map.rb&lt;br /&gt;
* course_survey_response_map.rb&lt;br /&gt;
* global_survey_response_map.rb&lt;br /&gt;
* review_response_map.rb&lt;br /&gt;
* bookmark_rating_response_map.rb&lt;br /&gt;
* feedback_response_map.rb&lt;br /&gt;
* meta_review_response_map.rb&lt;br /&gt;
* quiz_response_map.rb&lt;br /&gt;
* self_review_response_map.rb&lt;br /&gt;
* teammate_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
==Subclasses and Testing==&lt;br /&gt;
&lt;br /&gt;
===FeedbackResponseMap===&lt;br /&gt;
[[File:FeedbackResponseMap.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
Foremost, for Unit Testing, we will write tests to ensure that all validations are functioning as anticipated for each model. Furthermore, we will verify that all belongs_to and has_many associations are configured properly and ensure that no dangling records remain after creating or destroying records involved. Moreover, various testing measures will ensure that business logic operates correctly in the model, paying special attention will be given to methods shared across multiple subclasses. Lastly, any refactored code that incorporates environmental variables will be thoroughly tested to ensure that correct values appear in place of hardcoded ones.&lt;br /&gt;
&lt;br /&gt;
For integration testing, we will write tests to simulate real-world interactions between models. Furthermore, special attention will be provided to edge cases (i.e. missing data, interactions between multiple subclasses of ResponseMap, etc.) to ensure proper error handling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, to ease the workflow process for further groups in later iterations, we will thoroughly document all test cases through comments, providing clear explanations of each test’s purpose and anticipated results.&lt;/div&gt;</summary>
		<author><name>Rtgalla2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164578</id>
		<title>CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164578"/>
		<updated>2025-04-22T14:01:13Z</updated>

		<summary type="html">&lt;p&gt;Rtgalla2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
*Anish Toorpu&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
*Dennis Christman &amp;lt;dchrist2@ncsu.edu&amp;gt;&lt;br /&gt;
*Eleanor Maye &amp;lt;edmaye@ncsu.edu&amp;gt;&lt;br /&gt;
*Ryan Gallagher &amp;lt;rtgalla2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The ResponseMap concept in Expertiza exists as a hierarchy of several different Rails models, that utilize Singe Table Inheritance to allow for the use of polymorphism across the different types of Assignments that different ResponseMaps may map to. While part of the ResponseMap hierarchy has been reimplemented in the the new Expertiza backend, most of it has not. Our team has been tasked with the reimplementation of several of these. Below is the full ResponseMap hierarchy. Class names in bold are ones we are tasked with reimplementing, those in italics are for future projects, and those in neither have already been reimplemented:&lt;br /&gt;
&lt;br /&gt;
*ResponseMap&lt;br /&gt;
**'''SurveyResponseMap'''&lt;br /&gt;
***'''AssignmentSurveyResponseMap'''&lt;br /&gt;
***'''CourseSurveyResponseMap'''&lt;br /&gt;
***'''GlobalSurveyResponseMap'''&lt;br /&gt;
**ReviewResponseMap&lt;br /&gt;
***'''BookmarkRatingResponseMap'''&lt;br /&gt;
**'''FeedbackResponseMap'''&lt;br /&gt;
**''MetareviewResponseMap''&lt;br /&gt;
**'''QuizResponseMap'''&lt;br /&gt;
**''SelfReviewResponseMap''&lt;br /&gt;
**'''TeammateReviewResponseMap'''&lt;br /&gt;
&lt;br /&gt;
The current implementation lacks a clear hierarchical structure for models, encapsulation of business logic, flexibility due to hardcoded values, and comprehensive testing. This results in maintainability issues, scalability problems, and poor integration with existing components. Additionally, while the current implementation is functional, it is poorly documented, making it difficult for someone new to the project to understand what the purpose of each subclass is.&lt;br /&gt;
&lt;br /&gt;
==Design Goal==&lt;br /&gt;
We have several goals for this project:&lt;br /&gt;
*Utilize the existing hierarchy and ensure proper inheritance between models.&lt;br /&gt;
*Ensure that all business logic and validations are in the proper model. This includes both making sure that code is not unnecessarily repeated in a class and its subclasses and making sure that a class does not contain logic based on its subclasses.&lt;br /&gt;
*Move hardcoded values to an environment variables file, and replace instance of that value in the repo with the new environment variable.&lt;br /&gt;
*Develop extensive test coverage for each new model.&lt;br /&gt;
*Document each new model with clear comments on its use and methods.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
===Implementation Plan===&lt;br /&gt;
Our plan will be to start at the top of the hierarchy and find code that is repeated in different places and consolidate to the highest point of the hierarchy where it makes sense, looking at associations, validations and methods. An example of this are the lines:&lt;br /&gt;
 belongs_to :reviewee, class_name: 'Participant', foreign_key: 'reviewee_id'&lt;br /&gt;
 belongs_to :assignment, class_name: 'Assignment', foreign_key: 'reviewed_object_id'&lt;br /&gt;
which appear in several different models, including the ResponseMap class itself. We will also identify methods such as the '''email''' method that appear in different subclasses that share much of the implementation and refactor the shared parts into a shared method.&lt;br /&gt;
&lt;br /&gt;
==Files Added/Modified==&lt;br /&gt;
* survey_response_map.rb&lt;br /&gt;
* assignment_survey_response_map.rb&lt;br /&gt;
* course_survey_response_map.rb&lt;br /&gt;
* global_survey_response_map.rb&lt;br /&gt;
* review_response_map.rb&lt;br /&gt;
* bookmark_rating_response_map.rb&lt;br /&gt;
* feedback_response_map.rb&lt;br /&gt;
* meta_review_response_map.rb&lt;br /&gt;
* quiz_response_map.rb&lt;br /&gt;
* self_review_response_map.rb&lt;br /&gt;
* teammate_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
==Subclasses and Testing==&lt;br /&gt;
&lt;br /&gt;
===FeedbackResponseMap===&lt;br /&gt;
[[File:FeedbackResponseMap.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
Foremost, for Unit Testing, we will write tests to ensure that all validations are functioning as anticipated for each model. Furthermore, we will verify that all belongs_to and has_many associations are configured properly and ensure that no dangling records remain after creating or destroying records involved. Moreover, various testing measures will ensure that business logic operates correctly in the model, paying special attention will be given to methods shared across multiple subclasses. Lastly, any refactored code that incorporates environmental variables will be thoroughly tested to ensure that correct values appear in place of hardcoded ones.&lt;br /&gt;
&lt;br /&gt;
For integration testing, we will write tests to simulate real-world interactions between models. Furthermore, special attention will be provided to edge cases (i.e. missing data, interactions between multiple subclasses of ResponseMap, etc.) to ensure proper error handling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, to ease the workflow process for further groups in later iterations, we will thoroughly document all test cases through comments, providing clear explanations of each test’s purpose and anticipated results.&lt;/div&gt;</summary>
		<author><name>Rtgalla2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164576</id>
		<title>CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164576"/>
		<updated>2025-04-22T13:59:56Z</updated>

		<summary type="html">&lt;p&gt;Rtgalla2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
*Anish Toorpu&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
*Dennis Christman &amp;lt;dchrist2@ncsu.edu&amp;gt;&lt;br /&gt;
*Eleanor Maye &amp;lt;edmaye@ncsu.edu&amp;gt;&lt;br /&gt;
*Ryan Gallagher &amp;lt;rtgalla2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The ResponseMap concept in Expertiza exists as a hierarchy of several different Rails models, that utilize Singe Table Inheritance to allow for the use of polymorphism across the different types of Assignments that different ResponseMaps may map to. While part of the ResponseMap hierarchy has been reimplemented in the the new Expertiza backend, most of it has not. Our team has been tasked with the reimplementation of several of these. Below is the full ResponseMap hierarchy. Class names in bold are ones we are tasked with reimplementing, those in italics are for future projects, and those in neither have already been reimplemented:&lt;br /&gt;
&lt;br /&gt;
*ResponseMap&lt;br /&gt;
**'''SurveyResponseMap'''&lt;br /&gt;
***'''AssignmentSurveyResponseMap'''&lt;br /&gt;
***'''CourseSurveyResponseMap'''&lt;br /&gt;
***'''GlobalSurveyResponseMap'''&lt;br /&gt;
**ReviewResponseMap&lt;br /&gt;
***'''BookmarkRatingResponseMap'''&lt;br /&gt;
**'''FeedbackResponseMap'''&lt;br /&gt;
**''MetareviewResponseMap''&lt;br /&gt;
**'''QuizResponseMap'''&lt;br /&gt;
**''SelfReviewResponseMap''&lt;br /&gt;
**'''TeammateReviewResponseMap'''&lt;br /&gt;
&lt;br /&gt;
The current implementation lacks a clear hierarchical structure for models, encapsulation of business logic, flexibility due to hardcoded values, and comprehensive testing. This results in maintainability issues, scalability problems, and poor integration with existing components. Additionally, while the current implementation is functional, it is poorly documented, making it difficult for someone new to the project to understand what the purpose of each subclass is.&lt;br /&gt;
&lt;br /&gt;
==Design Goal==&lt;br /&gt;
We have several goals for this project:&lt;br /&gt;
*Utilize the existing hierarchy and ensure proper inheritance between models.&lt;br /&gt;
*Ensure that all business logic and validations are in the proper model. This includes both making sure that code is not unnecessarily repeated in a class and its subclasses and making sure that a class does not contain logic based on its subclasses.&lt;br /&gt;
*Move hardcoded values to an environment variables file, and replace instance of that value in the repo with the new environment variable.&lt;br /&gt;
*Develop extensive test coverage for each new model.&lt;br /&gt;
*Document each new model with clear comments on its use and methods.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
===Implementation Plan===&lt;br /&gt;
Our plan will be to start at the top of the hierarchy and find code that is repeated in different places and consolidate to the highest point of the hierarchy where it makes sense, looking at associations, validations and methods. An example of this are the lines:&lt;br /&gt;
 belongs_to :reviewee, class_name: 'Participant', foreign_key: 'reviewee_id'&lt;br /&gt;
 belongs_to :assignment, class_name: 'Assignment', foreign_key: 'reviewed_object_id'&lt;br /&gt;
which appear in several different models, including the ResponseMap class itself. We will also identify methods such as the '''email''' method that appear in different subclasses that share much of the implementation and refactor the shared parts into a shared method.&lt;br /&gt;
&lt;br /&gt;
==Files Added/Modified==&lt;br /&gt;
* survey_response_map.rb&lt;br /&gt;
* assignment_survey_response_map.rb&lt;br /&gt;
* course_survey_response_map.rb&lt;br /&gt;
* global_survey_response_map.rb&lt;br /&gt;
* review_response_map.rb&lt;br /&gt;
* bookmark_rating_response_map.rb&lt;br /&gt;
* feedback_response_map.rb&lt;br /&gt;
* meta_review_response_map.rb&lt;br /&gt;
* quiz_response_map.rb&lt;br /&gt;
* self_review_response_map.rb&lt;br /&gt;
* teammate_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
==Subclasses and Testing==&lt;br /&gt;
&lt;br /&gt;
===FeedbackResponseMap===&lt;br /&gt;
[[File:FeedbackResponseMap.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
Foremost, for Unit Testing, we will write tests to ensure that all validations are functioning as anticipated for each model. Furthermore, we will verify that all belongs_to and has_many associations are configured properly and ensure that no dangling records remain after creating or destroying records involved. Moreover, various testing measures will ensure that business logic operates correctly in the model, paying special attention will be given to methods shared across multiple subclasses. Lastly, any refactored code that incorporates environmental variables will be thoroughly tested to ensure that correct values appear in place of hardcoded ones.&lt;br /&gt;
&lt;br /&gt;
For integration testing, we will write tests to simulate real-world interactions between models. Furthermore, special attention will be provided to edge cases (i.e. missing data, interactions between multiple subclasses of ResponseMap, etc.) to ensure proper error handling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, to ease the workflow process for further groups in later iterations, we will thoroughly document all test cases through comments, providing clear explanations of each test’s purpose and anticipated results.&lt;/div&gt;</summary>
		<author><name>Rtgalla2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164575</id>
		<title>CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164575"/>
		<updated>2025-04-22T13:59:14Z</updated>

		<summary type="html">&lt;p&gt;Rtgalla2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
*Anish Toorpu&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
*Dennis Christman &amp;lt;dchrist2@ncsu.edu&amp;gt;&lt;br /&gt;
*Eleanor Maye &amp;lt;edmaye@ncsu.edu&amp;gt;&lt;br /&gt;
*Ryan Gallagher &amp;lt;rtgalla2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The ResponseMap concept in Expertiza exists as a hierarchy of several different Rails models, that utilize Singe Table Inheritance to allow for the use of polymorphism across the different types of Assignments that different ResponseMaps may map to. While part of the ResponseMap hierarchy has been reimplemented in the the new Expertiza backend, most of it has not. Our team has been tasked with the reimplementation of several of these. Below is the full ResponseMap hierarchy. Class names in bold are ones we are tasked with reimplementing, those in italics are for future projects, and those in neither have already been reimplemented:&lt;br /&gt;
&lt;br /&gt;
*ResponseMap&lt;br /&gt;
**'''SurveyResponseMap'''&lt;br /&gt;
***'''AssignmentSurveyResponseMap'''&lt;br /&gt;
***'''CourseSurveyResponseMap'''&lt;br /&gt;
***'''GlobalSurveyResponseMap'''&lt;br /&gt;
**ReviewResponseMap&lt;br /&gt;
***'''BookmarkRatingResponseMap'''&lt;br /&gt;
**'''FeedbackResponseMap'''&lt;br /&gt;
**''MetareviewResponseMap''&lt;br /&gt;
**'''QuizResponseMap'''&lt;br /&gt;
**''SelfReviewResponseMap''&lt;br /&gt;
**'''TeammateReviewResponseMap'''&lt;br /&gt;
&lt;br /&gt;
The current implementation lacks a clear hierarchical structure for models, encapsulation of business logic, flexibility due to hardcoded values, and comprehensive testing. This results in maintainability issues, scalability problems, and poor integration with existing components. Additionally, while the current implementation is functional, it is poorly documented, making it difficult for someone new to the project to understand what the purpose of each subclass is.&lt;br /&gt;
&lt;br /&gt;
==Design Goal==&lt;br /&gt;
We have several goals for this project:&lt;br /&gt;
*Utilize the existing hierarchy and ensure proper inheritance between models.&lt;br /&gt;
*Ensure that all business logic and validations are in the proper model. This includes both making sure that code is not unnecessarily repeated in a class and its subclasses and making sure that a class does not contain logic based on its subclasses.&lt;br /&gt;
*Move hardcoded values to an environment variables file, and replace instance of that value in the repo with the new environment variable.&lt;br /&gt;
*Develop extensive test coverage for each new model.&lt;br /&gt;
*Document each new model with clear comments on its use and methods.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
===Implementation Plan===&lt;br /&gt;
Our plan will be to start at the top of the hierarchy and find code that is repeated in different places and consolidate to the highest point of the hierarchy where it makes sense, looking at associations, validations and methods. An example of this are the lines:&lt;br /&gt;
 belongs_to :reviewee, class_name: 'Participant', foreign_key: 'reviewee_id'&lt;br /&gt;
 belongs_to :assignment, class_name: 'Assignment', foreign_key: 'reviewed_object_id'&lt;br /&gt;
which appear in several different models, including the ResponseMap class itself. We will also identify methods such as the '''email''' method that appear in different subclasses that share much of the implementation and refactor the shared parts into a shared method.&lt;br /&gt;
&lt;br /&gt;
==Files Added/Modified==&lt;br /&gt;
* survey_response_map.rb&lt;br /&gt;
* assignment_survey_response_map.rb&lt;br /&gt;
* course_survey_response_map.rb&lt;br /&gt;
* global_survey_response_map.rb&lt;br /&gt;
* review_response_map.rb&lt;br /&gt;
* bookmark_rating_response_map.rb&lt;br /&gt;
* feedback_response_map.rb&lt;br /&gt;
* meta_review_response_map.rb&lt;br /&gt;
* quiz_response_map.rb&lt;br /&gt;
* self_review_response_map.rb&lt;br /&gt;
* teammate_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
==Subclasses and Testing==&lt;br /&gt;
&lt;br /&gt;
===FeedbackResponseMap===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
Foremost, for Unit Testing, we will write tests to ensure that all validations are functioning as anticipated for each model. Furthermore, we will verify that all belongs_to and has_many associations are configured properly and ensure that no dangling records remain after creating or destroying records involved. Moreover, various testing measures will ensure that business logic operates correctly in the model, paying special attention will be given to methods shared across multiple subclasses. Lastly, any refactored code that incorporates environmental variables will be thoroughly tested to ensure that correct values appear in place of hardcoded ones.&lt;br /&gt;
&lt;br /&gt;
For integration testing, we will write tests to simulate real-world interactions between models. Furthermore, special attention will be provided to edge cases (i.e. missing data, interactions between multiple subclasses of ResponseMap, etc.) to ensure proper error handling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, to ease the workflow process for further groups in later iterations, we will thoroughly document all test cases through comments, providing clear explanations of each test’s purpose and anticipated results.&lt;/div&gt;</summary>
		<author><name>Rtgalla2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164573</id>
		<title>CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164573"/>
		<updated>2025-04-22T13:58:21Z</updated>

		<summary type="html">&lt;p&gt;Rtgalla2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
*Anish Toorpu&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
*Dennis Christman &amp;lt;dchrist2@ncsu.edu&amp;gt;&lt;br /&gt;
*Eleanor Maye &amp;lt;edmaye@ncsu.edu&amp;gt;&lt;br /&gt;
*Ryan Gallagher &amp;lt;rtgalla2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The ResponseMap concept in Expertiza exists as a hierarchy of several different Rails models, that utilize Singe Table Inheritance to allow for the use of polymorphism across the different types of Assignments that different ResponseMaps may map to. While part of the ResponseMap hierarchy has been reimplemented in the the new Expertiza backend, most of it has not. Our team has been tasked with the reimplementation of several of these. Below is the full ResponseMap hierarchy. Class names in bold are ones we are tasked with reimplementing, those in italics are for future projects, and those in neither have already been reimplemented:&lt;br /&gt;
&lt;br /&gt;
*ResponseMap&lt;br /&gt;
**'''SurveyResponseMap'''&lt;br /&gt;
***'''AssignmentSurveyResponseMap'''&lt;br /&gt;
***'''CourseSurveyResponseMap'''&lt;br /&gt;
***'''GlobalSurveyResponseMap'''&lt;br /&gt;
**ReviewResponseMap&lt;br /&gt;
***'''BookmarkRatingResponseMap'''&lt;br /&gt;
**'''FeedbackResponseMap'''&lt;br /&gt;
**''MetareviewResponseMap''&lt;br /&gt;
**'''QuizResponseMap'''&lt;br /&gt;
**''SelfReviewResponseMap''&lt;br /&gt;
**'''TeammateReviewResponseMap'''&lt;br /&gt;
&lt;br /&gt;
The current implementation lacks a clear hierarchical structure for models, encapsulation of business logic, flexibility due to hardcoded values, and comprehensive testing. This results in maintainability issues, scalability problems, and poor integration with existing components. Additionally, while the current implementation is functional, it is poorly documented, making it difficult for someone new to the project to understand what the purpose of each subclass is.&lt;br /&gt;
&lt;br /&gt;
==Design Goal==&lt;br /&gt;
We have several goals for this project:&lt;br /&gt;
*Utilize the existing hierarchy and ensure proper inheritance between models.&lt;br /&gt;
*Ensure that all business logic and validations are in the proper model. This includes both making sure that code is not unnecessarily repeated in a class and its subclasses and making sure that a class does not contain logic based on its subclasses.&lt;br /&gt;
*Move hardcoded values to an environment variables file, and replace instance of that value in the repo with the new environment variable.&lt;br /&gt;
*Develop extensive test coverage for each new model.&lt;br /&gt;
*Document each new model with clear comments on its use and methods.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
===Implementation Plan===&lt;br /&gt;
Our plan will be to start at the top of the hierarchy and find code that is repeated in different places and consolidate to the highest point of the hierarchy where it makes sense, looking at associations, validations and methods. An example of this are the lines:&lt;br /&gt;
 belongs_to :reviewee, class_name: 'Participant', foreign_key: 'reviewee_id'&lt;br /&gt;
 belongs_to :assignment, class_name: 'Assignment', foreign_key: 'reviewed_object_id'&lt;br /&gt;
which appear in several different models, including the ResponseMap class itself. We will also identify methods such as the '''email''' method that appear in different subclasses that share much of the implementation and refactor the shared parts into a shared method.&lt;br /&gt;
&lt;br /&gt;
==Files Added/Modified==&lt;br /&gt;
* survey_response_map.rb&lt;br /&gt;
* assignment_survey_response_map.rb&lt;br /&gt;
* course_survey_response_map.rb&lt;br /&gt;
* global_survey_response_map.rb&lt;br /&gt;
* review_response_map.rb&lt;br /&gt;
* bookmark_rating_response_map.rb&lt;br /&gt;
* feedback_response_map.rb&lt;br /&gt;
* meta_review_response_map.rb&lt;br /&gt;
* quiz_response_map.rb&lt;br /&gt;
* self_review_response_map.rb&lt;br /&gt;
* teammate_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
==Subclasses and Testing==&lt;br /&gt;
&lt;br /&gt;
===FeedbackResponseMap===&lt;br /&gt;
[[File:FeedbackResponseMap.png|thumb|This is the feedback response map]]&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
Foremost, for Unit Testing, we will write tests to ensure that all validations are functioning as anticipated for each model. Furthermore, we will verify that all belongs_to and has_many associations are configured properly and ensure that no dangling records remain after creating or destroying records involved. Moreover, various testing measures will ensure that business logic operates correctly in the model, paying special attention will be given to methods shared across multiple subclasses. Lastly, any refactored code that incorporates environmental variables will be thoroughly tested to ensure that correct values appear in place of hardcoded ones.&lt;br /&gt;
&lt;br /&gt;
For integration testing, we will write tests to simulate real-world interactions between models. Furthermore, special attention will be provided to edge cases (i.e. missing data, interactions between multiple subclasses of ResponseMap, etc.) to ensure proper error handling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, to ease the workflow process for further groups in later iterations, we will thoroughly document all test cases through comments, providing clear explanations of each test’s purpose and anticipated results.&lt;/div&gt;</summary>
		<author><name>Rtgalla2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FeedbackResponseMap.png&amp;diff=164571</id>
		<title>File:FeedbackResponseMap.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FeedbackResponseMap.png&amp;diff=164571"/>
		<updated>2025-04-22T13:56:58Z</updated>

		<summary type="html">&lt;p&gt;Rtgalla2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rtgalla2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164569</id>
		<title>CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164569"/>
		<updated>2025-04-22T13:51:10Z</updated>

		<summary type="html">&lt;p&gt;Rtgalla2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
*Anish Toorpu&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
*Dennis Christman &amp;lt;dchrist2@ncsu.edu&amp;gt;&lt;br /&gt;
*Eleanor Maye &amp;lt;edmaye@ncsu.edu&amp;gt;&lt;br /&gt;
*Ryan Gallagher &amp;lt;rtgalla2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The ResponseMap concept in Expertiza exists as a hierarchy of several different Rails models, that utilize Singe Table Inheritance to allow for the use of polymorphism across the different types of Assignments that different ResponseMaps may map to. While part of the ResponseMap hierarchy has been reimplemented in the the new Expertiza backend, most of it has not. Our team has been tasked with the reimplementation of several of these. Below is the full ResponseMap hierarchy. Class names in bold are ones we are tasked with reimplementing, those in italics are for future projects, and those in neither have already been reimplemented:&lt;br /&gt;
&lt;br /&gt;
*ResponseMap&lt;br /&gt;
**'''SurveyResponseMap'''&lt;br /&gt;
***'''AssignmentSurveyResponseMap'''&lt;br /&gt;
***'''CourseSurveyResponseMap'''&lt;br /&gt;
***'''GlobalSurveyResponseMap'''&lt;br /&gt;
**ReviewResponseMap&lt;br /&gt;
***'''BookmarkRatingResponseMap'''&lt;br /&gt;
**'''FeedbackResponseMap'''&lt;br /&gt;
**''MetareviewResponseMap''&lt;br /&gt;
**'''QuizResponseMap'''&lt;br /&gt;
**''SelfReviewResponseMap''&lt;br /&gt;
**'''TeammateReviewResponseMap'''&lt;br /&gt;
&lt;br /&gt;
The current implementation lacks a clear hierarchical structure for models, encapsulation of business logic, flexibility due to hardcoded values, and comprehensive testing. This results in maintainability issues, scalability problems, and poor integration with existing components. Additionally, while the current implementation is functional, it is poorly documented, making it difficult for someone new to the project to understand what the purpose of each subclass is.&lt;br /&gt;
&lt;br /&gt;
==Design Goal==&lt;br /&gt;
We have several goals for this project:&lt;br /&gt;
*Utilize the existing hierarchy and ensure proper inheritance between models.&lt;br /&gt;
*Ensure that all business logic and validations are in the proper model. This includes both making sure that code is not unnecessarily repeated in a class and its subclasses and making sure that a class does not contain logic based on its subclasses.&lt;br /&gt;
*Move hardcoded values to an environment variables file, and replace instance of that value in the repo with the new environment variable.&lt;br /&gt;
*Develop extensive test coverage for each new model.&lt;br /&gt;
*Document each new model with clear comments on its use and methods.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
===Implementation Plan===&lt;br /&gt;
Our plan will be to start at the top of the hierarchy and find code that is repeated in different places and consolidate to the highest point of the hierarchy where it makes sense, looking at associations, validations and methods. An example of this are the lines:&lt;br /&gt;
 belongs_to :reviewee, class_name: 'Participant', foreign_key: 'reviewee_id'&lt;br /&gt;
 belongs_to :assignment, class_name: 'Assignment', foreign_key: 'reviewed_object_id'&lt;br /&gt;
which appear in several different models, including the ResponseMap class itself. We will also identify methods such as the '''email''' method that appear in different subclasses that share much of the implementation and refactor the shared parts into a shared method.&lt;br /&gt;
&lt;br /&gt;
==Files Added/Modified==&lt;br /&gt;
* survey_response_map.rb&lt;br /&gt;
* assignment_survey_response_map.rb&lt;br /&gt;
* course_survey_response_map.rb&lt;br /&gt;
* global_survey_response_map.rb&lt;br /&gt;
* review_response_map.rb&lt;br /&gt;
* bookmark_rating_response_map.rb&lt;br /&gt;
* feedback_response_map.rb&lt;br /&gt;
* meta_review_response_map.rb&lt;br /&gt;
* quiz_response_map.rb&lt;br /&gt;
* self_review_response_map.rb&lt;br /&gt;
* teammate_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
==Subclasses and Testing==&lt;br /&gt;
&lt;br /&gt;
===FeedbackResponseMap===&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
Foremost, for Unit Testing, we will write tests to ensure that all validations are functioning as anticipated for each model. Furthermore, we will verify that all belongs_to and has_many associations are configured properly and ensure that no dangling records remain after creating or destroying records involved. Moreover, various testing measures will ensure that business logic operates correctly in the model, paying special attention will be given to methods shared across multiple subclasses. Lastly, any refactored code that incorporates environmental variables will be thoroughly tested to ensure that correct values appear in place of hardcoded ones.&lt;br /&gt;
&lt;br /&gt;
For integration testing, we will write tests to simulate real-world interactions between models. Furthermore, special attention will be provided to edge cases (i.e. missing data, interactions between multiple subclasses of ResponseMap, etc.) to ensure proper error handling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, to ease the workflow process for further groups in later iterations, we will thoroughly document all test cases through comments, providing clear explanations of each test’s purpose and anticipated results.&lt;/div&gt;</summary>
		<author><name>Rtgalla2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164568</id>
		<title>CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164568"/>
		<updated>2025-04-22T13:50:45Z</updated>

		<summary type="html">&lt;p&gt;Rtgalla2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
*Anish Toorpu&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
*Dennis Christman &amp;lt;dchrist2@ncsu.edu&amp;gt;&lt;br /&gt;
*Eleanor Maye &amp;lt;edmaye@ncsu.edu&amp;gt;&lt;br /&gt;
*Ryan Gallagher &amp;lt;rtgalla2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The ResponseMap concept in Expertiza exists as a hierarchy of several different Rails models, that utilize Singe Table Inheritance to allow for the use of polymorphism across the different types of Assignments that different ResponseMaps may map to. While part of the ResponseMap hierarchy has been reimplemented in the the new Expertiza backend, most of it has not. Our team has been tasked with the reimplementation of several of these. Below is the full ResponseMap hierarchy. Class names in bold are ones we are tasked with reimplementing, those in italics are for future projects, and those in neither have already been reimplemented:&lt;br /&gt;
&lt;br /&gt;
*ResponseMap&lt;br /&gt;
**'''SurveyResponseMap'''&lt;br /&gt;
***'''AssignmentSurveyResponseMap'''&lt;br /&gt;
***'''CourseSurveyResponseMap'''&lt;br /&gt;
***'''GlobalSurveyResponseMap'''&lt;br /&gt;
**ReviewResponseMap&lt;br /&gt;
***'''BookmarkRatingResponseMap'''&lt;br /&gt;
**'''FeedbackResponseMap'''&lt;br /&gt;
**''MetareviewResponseMap''&lt;br /&gt;
**'''QuizResponseMap'''&lt;br /&gt;
**''SelfReviewResponseMap''&lt;br /&gt;
**'''TeammateReviewResponseMap'''&lt;br /&gt;
&lt;br /&gt;
The current implementation lacks a clear hierarchical structure for models, encapsulation of business logic, flexibility due to hardcoded values, and comprehensive testing. This results in maintainability issues, scalability problems, and poor integration with existing components. Additionally, while the current implementation is functional, it is poorly documented, making it difficult for someone new to the project to understand what the purpose of each subclass is.&lt;br /&gt;
&lt;br /&gt;
==Design Goal==&lt;br /&gt;
We have several goals for this project:&lt;br /&gt;
*Utilize the existing hierarchy and ensure proper inheritance between models.&lt;br /&gt;
*Ensure that all business logic and validations are in the proper model. This includes both making sure that code is not unnecessarily repeated in a class and its subclasses and making sure that a class does not contain logic based on its subclasses.&lt;br /&gt;
*Move hardcoded values to an environment variables file, and replace instance of that value in the repo with the new environment variable.&lt;br /&gt;
*Develop extensive test coverage for each new model.&lt;br /&gt;
*Document each new model with clear comments on its use and methods.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
===Implementation Plan===&lt;br /&gt;
Our plan will be to start at the top of the hierarchy and find code that is repeated in different places and consolidate to the highest point of the hierarchy where it makes sense, looking at associations, validations and methods. An example of this are the lines:&lt;br /&gt;
 belongs_to :reviewee, class_name: 'Participant', foreign_key: 'reviewee_id'&lt;br /&gt;
 belongs_to :assignment, class_name: 'Assignment', foreign_key: 'reviewed_object_id'&lt;br /&gt;
which appear in several different models, including the ResponseMap class itself. We will also identify methods such as the '''email''' method that appear in different subclasses that share much of the implementation and refactor the shared parts into a shared method.&lt;br /&gt;
&lt;br /&gt;
==Files Added/Modified==&lt;br /&gt;
* survey_response_map.rb&lt;br /&gt;
* assignment_survey_response_map.rb&lt;br /&gt;
* course_survey_response_map.rb&lt;br /&gt;
* global_survey_response_map.rb&lt;br /&gt;
* review_response_map.rb&lt;br /&gt;
* bookmark_rating_response_map.rb&lt;br /&gt;
* feedback_response_map.rb&lt;br /&gt;
* meta_review_response_map.rb&lt;br /&gt;
* quiz_response_map.rb&lt;br /&gt;
* self_review_response_map.rb&lt;br /&gt;
* teammate_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
==Subclasses and Testing==&lt;br /&gt;
&lt;br /&gt;
==FeedbackResponseMap==&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
Foremost, for Unit Testing, we will write tests to ensure that all validations are functioning as anticipated for each model. Furthermore, we will verify that all belongs_to and has_many associations are configured properly and ensure that no dangling records remain after creating or destroying records involved. Moreover, various testing measures will ensure that business logic operates correctly in the model, paying special attention will be given to methods shared across multiple subclasses. Lastly, any refactored code that incorporates environmental variables will be thoroughly tested to ensure that correct values appear in place of hardcoded ones.&lt;br /&gt;
&lt;br /&gt;
For integration testing, we will write tests to simulate real-world interactions between models. Furthermore, special attention will be provided to edge cases (i.e. missing data, interactions between multiple subclasses of ResponseMap, etc.) to ensure proper error handling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, to ease the workflow process for further groups in later iterations, we will thoroughly document all test cases through comments, providing clear explanations of each test’s purpose and anticipated results.&lt;/div&gt;</summary>
		<author><name>Rtgalla2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164567</id>
		<title>CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=164567"/>
		<updated>2025-04-22T13:48:51Z</updated>

		<summary type="html">&lt;p&gt;Rtgalla2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
*Anish Toorpu&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
*Dennis Christman &amp;lt;dchrist2@ncsu.edu&amp;gt;&lt;br /&gt;
*Eleanor Maye &amp;lt;edmaye@ncsu.edu&amp;gt;&lt;br /&gt;
*Ryan Gallagher &amp;lt;rtgalla2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The ResponseMap concept in Expertiza exists as a hierarchy of several different Rails models, that utilize Singe Table Inheritance to allow for the use of polymorphism across the different types of Assignments that different ResponseMaps may map to. While part of the ResponseMap hierarchy has been reimplemented in the the new Expertiza backend, most of it has not. Our team has been tasked with the reimplementation of several of these. Below is the full ResponseMap hierarchy. Class names in bold are ones we are tasked with reimplementing, those in italics are for future projects, and those in neither have already been reimplemented:&lt;br /&gt;
&lt;br /&gt;
*ResponseMap&lt;br /&gt;
**'''SurveyResponseMap'''&lt;br /&gt;
***'''AssignmentSurveyResponseMap'''&lt;br /&gt;
***'''CourseSurveyResponseMap'''&lt;br /&gt;
***'''GlobalSurveyResponseMap'''&lt;br /&gt;
**ReviewResponseMap&lt;br /&gt;
***'''BookmarkRatingResponseMap'''&lt;br /&gt;
**'''FeedbackResponseMap'''&lt;br /&gt;
**''MetareviewResponseMap''&lt;br /&gt;
**'''QuizResponseMap'''&lt;br /&gt;
**''SelfReviewResponseMap''&lt;br /&gt;
**'''TeammateReviewResponseMap'''&lt;br /&gt;
&lt;br /&gt;
The current implementation lacks a clear hierarchical structure for models, encapsulation of business logic, flexibility due to hardcoded values, and comprehensive testing. This results in maintainability issues, scalability problems, and poor integration with existing components. Additionally, while the current implementation is functional, it is poorly documented, making it difficult for someone new to the project to understand what the purpose of each subclass is.&lt;br /&gt;
&lt;br /&gt;
==Design Goal==&lt;br /&gt;
We have several goals for this project:&lt;br /&gt;
*Utilize the existing hierarchy and ensure proper inheritance between models.&lt;br /&gt;
*Ensure that all business logic and validations are in the proper model. This includes both making sure that code is not unnecessarily repeated in a class and its subclasses and making sure that a class does not contain logic based on its subclasses.&lt;br /&gt;
*Move hardcoded values to an environment variables file, and replace instance of that value in the repo with the new environment variable.&lt;br /&gt;
*Develop extensive test coverage for each new model.&lt;br /&gt;
*Document each new model with clear comments on its use and methods.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
===Implementation Plan===&lt;br /&gt;
Our plan will be to start at the top of the hierarchy and find code that is repeated in different places and consolidate to the highest point of the hierarchy where it makes sense, looking at associations, validations and methods. An example of this are the lines:&lt;br /&gt;
 belongs_to :reviewee, class_name: 'Participant', foreign_key: 'reviewee_id'&lt;br /&gt;
 belongs_to :assignment, class_name: 'Assignment', foreign_key: 'reviewed_object_id'&lt;br /&gt;
which appear in several different models, including the ResponseMap class itself. We will also identify methods such as the '''email''' method that appear in different subclasses that share much of the implementation and refactor the shared parts into a shared method.&lt;br /&gt;
&lt;br /&gt;
==Files Added/Modified==&lt;br /&gt;
* survey_response_map.rb&lt;br /&gt;
* assignment_survey_response_map.rb&lt;br /&gt;
* course_survey_response_map.rb&lt;br /&gt;
* global_survey_response_map.rb&lt;br /&gt;
* review_response_map.rb&lt;br /&gt;
* bookmark_rating_response_map.rb&lt;br /&gt;
* feedback_response_map.rb&lt;br /&gt;
* meta_review_response_map.rb&lt;br /&gt;
* quiz_response_map.rb&lt;br /&gt;
* self_review_response_map.rb&lt;br /&gt;
* teammate_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
==Subclasses and Testing==&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
Foremost, for Unit Testing, we will write tests to ensure that all validations are functioning as anticipated for each model. Furthermore, we will verify that all belongs_to and has_many associations are configured properly and ensure that no dangling records remain after creating or destroying records involved. Moreover, various testing measures will ensure that business logic operates correctly in the model, paying special attention will be given to methods shared across multiple subclasses. Lastly, any refactored code that incorporates environmental variables will be thoroughly tested to ensure that correct values appear in place of hardcoded ones.&lt;br /&gt;
&lt;br /&gt;
For integration testing, we will write tests to simulate real-world interactions between models. Furthermore, special attention will be provided to edge cases (i.e. missing data, interactions between multiple subclasses of ResponseMap, etc.) to ensure proper error handling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, to ease the workflow process for further groups in later iterations, we will thoroughly document all test cases through comments, providing clear explanations of each test’s purpose and anticipated results.&lt;/div&gt;</summary>
		<author><name>Rtgalla2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=163224</id>
		<title>CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2532._Reimplement_Missing_ResponseMap_Subclasses&amp;diff=163224"/>
		<updated>2025-04-05T02:46:09Z</updated>

		<summary type="html">&lt;p&gt;Rtgalla2: /* Testing Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
*Anish Toorpu&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
*Dennis Christman &amp;lt;dchrist2@ncsu.edu&amp;gt;&lt;br /&gt;
*Eleanor Maye &amp;lt;edmaye@ncsu.edu&amp;gt;&lt;br /&gt;
*Ryan Gallagher &amp;lt;rtgalla2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The ResponseMap concept in Expertiza exists as a hierarchy of several different Rails models, that utilize Singe Table Inheritance to allow for the use of polymorphism across the different types of Assignments that different ResponseMaps may map to. While part of the ResponseMap hierarchy has been reimplemented in the the new Expertiza backend, most of it has not. Our team has been tasked with the reimplementation of several of these. Below is the full ResponseMap hierarchy. Class names in bold are ones we are tasked with reimplementing, those in italics are for future projects, and those in neither have already been reimplemented:&lt;br /&gt;
&lt;br /&gt;
*ResponseMap&lt;br /&gt;
**'''SurveyResponseMap'''&lt;br /&gt;
***'''AssignmentSurveyResponseMap'''&lt;br /&gt;
***'''CourseSurveyResponseMap'''&lt;br /&gt;
***'''GlobalSurveyResponseMap'''&lt;br /&gt;
**ReviewResponseMap&lt;br /&gt;
***'''BookmarkRatingResponseMap'''&lt;br /&gt;
**'''FeedbackResponseMap'''&lt;br /&gt;
**''MetareviewResponseMap''&lt;br /&gt;
**'''QuizResponseMap'''&lt;br /&gt;
**''SelfReviewResponseMap''&lt;br /&gt;
**'''TeammateReviewResponseMap'''&lt;br /&gt;
&lt;br /&gt;
The current implementation lacks a clear hierarchical structure for models, encapsulation of business logic, flexibility due to hardcoded values, and comprehensive testing. This results in maintainability issues, scalability problems, and poor integration with existing components. Additionally, while the current implementation is functional, it is poorly documented, making it difficult for someone new to the project to understand what the purpose of each subclass is.&lt;br /&gt;
&lt;br /&gt;
==Design Goal==&lt;br /&gt;
We have several goals for this project:&lt;br /&gt;
*Utilize the existing hierarchy and ensure proper inheritance between models.&lt;br /&gt;
*Ensure that all business logic and validations are in the proper model. This includes both making sure that code is not unnecessarily repeated in a class and its subclasses and making sure that a class does not contain logic based on its subclasses.&lt;br /&gt;
*Move hardcoded values to an environment variables file, and replace instance of that value in the repo with the new environment variable.&lt;br /&gt;
*Develop extensive test coverage for each new model.&lt;br /&gt;
*Document each new model with clear comments on its use and methods.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
===Implementation Plan===&lt;br /&gt;
Our plan will be to start at the top of the hierarchy and find code that is repeated in different places and consolidate to the highest point of the hierarchy where it makes sense, looking at associations, validations and methods. An example of this are the lines:&lt;br /&gt;
 belongs_to :reviewee, class_name: 'Participant', foreign_key: 'reviewee_id'&lt;br /&gt;
 belongs_to :assignment, class_name: 'Assignment', foreign_key: 'reviewed_object_id'&lt;br /&gt;
which appear in several different models, including the ResponseMap class itself. We will also identify methods such as the '''email''' method that appear in different subclasses that share much of the implementation and refactor the shared parts into a shared method.&lt;br /&gt;
&lt;br /&gt;
==Files Added/Modified==&lt;br /&gt;
&lt;br /&gt;
==Testing Plan==&lt;br /&gt;
Foremost, for Unit Testing, we will write tests to ensure that all validations are functioning as anticipated for each model. Furthermore, we will verify that all belongs_to and has_many associations are configured properly and ensure that no dangling records remain after creating or destroying records involved. Moreover, various testing measures will ensure that business logic operates correctly in the model, paying special attention will be given to methods shared across multiple subclasses. Lastly, any refactored code that incorporates environmental variables will be thoroughly tested to ensure that correct values appear in place of hardcoded ones.&lt;br /&gt;
&lt;br /&gt;
For integration testing, we will write tests to simulate real-world interactions between models. Furthermore, special attention will be provided to edge cases (i.e. missing data, interactions between multiple subclasses of ResponseMap, etc.) to ensure proper error handling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, to ease the workflow process for further groups in later iterations, we will thoroughly document all test cases through comments, providing clear explanations of each test’s purpose and anticipated results.&lt;/div&gt;</summary>
		<author><name>Rtgalla2</name></author>
	</entry>
</feed>