Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Task 1 – Backend: MongoDB, Model Update, and Manual API Test
✅ Extended the Goal model in C# to include a new Icon field.
✅ Seeded the local MongoDB instance with test data.
✅ Used Postman to manually test the updated GET and POST endpoints.
✅ Verified icon data is correctly stored and retrieved in the API response.
✅ Exported a .json sample of the API response to validate backend correctness.
Task 2 – Frontend: React/Redux Integration & Icon Support
✅ Cloned and set up the rWEB repo.
✅ Updated the TypeScript Goal model to include the icon field.
✅ Integrated an emoji picker using emoji-mart package for user-friendly icon selection.
✅ Modified GoalManager.tsx component to:
Display the current icon (if any)
Allow icon selection via emoji picker
Update local state and Redux store accordingly
✅ Uploaded the updated GoalManager.tsx file as requested.
Task 3 – Networking: Backend ↔ Frontend Wiring for Icon Persistence
✅ Implemented a PUT request handler (updateGoal) in the backend API using Axios.
✅ Called this PUT request in the emoji pick event handler to persist the selected icon.
✅ Confirmed that icon changes now persist across page reloads and server restarts.
✅ Uploaded the lib.ts file containing the new PUT request implementation.
Task 4 – Testing: Unit Tests with xUnit for Icon Support
✅ Added unit test GetForUser in GoalControllerTests.cs using xUnit.
✅ Mocked IGoalsService and IUsersService using fake implementations.
✅ Asserted that:
API returns goals correctly for a given user
Each returned object is a Goal with the expected UserId
✅ All test cases pass locally.
✅ Uploaded the updated GoalControllerTests.cs for review.