Skip to content

Commit

Permalink
Fix: CharitySelect settings user stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
AdrianBalunan committed Apr 14, 2026
1 parent e4c03d1 commit f447661
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import ntnu.systemutvikling.team6.models.Charity;
import ntnu.systemutvikling.team6.models.Feedback;
import ntnu.systemutvikling.team6.models.registry.CharityRegistry;
import ntnu.systemutvikling.team6.models.user.Language;
import ntnu.systemutvikling.team6.models.user.Settings;
import ntnu.systemutvikling.team6.models.user.User;

/**
Expand Down Expand Up @@ -58,12 +60,12 @@ public CharityRegistry getCharitiesFromDB() {
c.UUID_charities, c.org_number, c.pre_approved, c.status,
f.UUID_feedback, f.feedback_comment, f.feedback_date, f.isAnonymous, f.charity_id, f.user_id,
cv.charity_name, cv.charity_link, cv.description, cv.logoURL, cv.key_values, cv.logoBLOB,
u.UUID_user, u.user_name, u.user_email, u.user_password, u.role
u.UUID_user, u.user_name, u.user_email, u.user_password, u.role,
cat.category
FROM Charities c
LEFT JOIN Feedback f ON f.charity_id = c.UUID_charities
LEFT JOIN User u ON f.user_id = u.UUID_user
LEFT JOIN Charity_Categories cc ON cc.Charities_UUID_charities = c.UUID.charities
LEFT JOIN Charity_Categories cc ON cc.Charities_UUID_charities = c.UUID_charities
LEFT JOIN Cateegories cat ON cat.category_id = cc.Categories_category_id
INNER JOIN CharityVanity cv ON cv.UUID_charity = c.UUID_charities;
""";
Expand All @@ -90,7 +92,7 @@ public CharityRegistry getCharitiesFromDB() {
rs.getBoolean("pre_approved"),
rs.getString("description"),
rs.getString("logoURL"),
rs.getString("keyValues"),
rs.getString("key_values"),
rs.getBytes("logoBLOB"));
registry.addCharity(currentCharity);
lastCharity = currentId;
Expand All @@ -105,18 +107,19 @@ public CharityRegistry getCharitiesFromDB() {
String feedbackId = rs.getString("UUID_feedback");
if (feedbackId != null && !seenFeedbackIds.contains(feedbackId)) {
seenFeedbackIds.add(feedbackId);
User userWithNoSettingsAndInbox =
User userWithMinimalSettingsAndInbox =
new User(
rs.getString("UUID_User"),
rs.getString("user_name"),
rs.getString("user_email"),
rs.getString("user_password"),
rs.getString("role"));
userWithMinimalSettingsAndInbox.setSettings(new Settings(false, Language.ENGLISH, false));

Feedback feedback =
new Feedback(
rs.getString("UUID_feedback"),
userWithNoSettingsAndInbox,
userWithMinimalSettingsAndInbox,
rs.getString("feedback_comment"),
LocalDate.parse(rs.getString("feedback_date")));

Expand Down Expand Up @@ -165,17 +168,18 @@ public ArrayList<Feedback> getFeedbackforCharityUUID(String charity_uuid) {
ResultSet rs = stmt.executeQuery();

while (rs.next()) {
User userWithNoSettingsAndInbox =
User userWithSettingsAndNoInbox =
new User(
rs.getString("UUID_User"),
rs.getString("user_name"),
rs.getString("user_email"),
rs.getString("user_password"),
rs.getString("role"));
userWithSettingsAndNoInbox.setSettings(new Settings(false, Language.NORWEGIAN, false));
Feedback feedback =
new Feedback(
rs.getString("UUID_feedback"),
userWithNoSettingsAndInbox,
userWithSettingsAndNoInbox,
rs.getString("feedback_comment"),
LocalDate.parse(rs.getString("feedback_date")));
Feedbacks.add(feedback);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

import java.sql.*;
import java.util.ArrayList;
import java.util.UUID;

import ntnu.systemutvikling.team6.database.DatabaseConnection;
import ntnu.systemutvikling.team6.models.Charity;
import ntnu.systemutvikling.team6.models.Feedback;
Expand Down Expand Up @@ -68,12 +70,19 @@ void getCharitiesFromDB_singleCharityNoFeedback_addedOnce() throws Exception {

// One row, no feedback
when(mockResultSet.next()).thenReturn(true, false);
when(mockResultSet.getString("UUID_charities")).thenReturn("charity-uuid-1");
String charityId = UUID.randomUUID().toString();
when(mockResultSet.getString("UUID_charities")).thenReturn(charityId);
when(mockResultSet.getString("org_number")).thenReturn("123456789");
when(mockResultSet.getString("charity_link")).thenReturn("https://example.org");
when(mockResultSet.getString("charity_name")).thenReturn("Test Charity");
when(mockResultSet.getBoolean("pre_approved")).thenReturn(true);
when(mockResultSet.getString("status")).thenReturn("ACTIVE");
when(mockResultSet.getString("description")).thenReturn("Some description");
when(mockResultSet.getString("logoURL")).thenReturn("https://logo.png");
when(mockResultSet.getString("key_values")).thenReturn("80:10:90");
when(mockResultSet.getBytes("logoBLOB")).thenReturn(null);
when(mockResultSet.getString("category")).thenReturn(null);

when(mockResultSet.getString("UUID_feedback")).thenReturn(null);

CharityRegistry registry = charitySelect.getCharitiesFromDB();
Expand All @@ -94,19 +103,27 @@ void getCharitiesFromDB_singleCharityWithFeedback_feedbackAdded() throws Excepti

// One row with feedback
when(mockResultSet.next()).thenReturn(true, false);
when(mockResultSet.getString("UUID_charities")).thenReturn("charity-uuid-1");
String charityId = UUID.randomUUID().toString();
when(mockResultSet.getString("UUID_charities")).thenReturn(charityId);
when(mockResultSet.getString("org_number")).thenReturn("123456789");
when(mockResultSet.getString("charity_link")).thenReturn("https://example.org");
when(mockResultSet.getString("charity_name")).thenReturn("Test Charity");
when(mockResultSet.getBoolean("pre_approved")).thenReturn(false);
when(mockResultSet.getString("status")).thenReturn("PENDING");

when(mockResultSet.getString("UUID_feedback")).thenReturn("feedback-uuid-1");
when(mockResultSet.getString("UUID_User")).thenReturn("user-uuid-1");
when(mockResultSet.getString("description")).thenReturn("Some description");
when(mockResultSet.getString("logoURL")).thenReturn("https://logo.png");
when(mockResultSet.getString("key_values")).thenReturn("80:10:90");
when(mockResultSet.getBytes("logoBLOB")).thenReturn(null);
when(mockResultSet.getString("category")).thenReturn(null);

String feedback1Id = UUID.randomUUID().toString();
String userId = UUID.randomUUID().toString();
when(mockResultSet.getString("UUID_feedback")).thenReturn(feedback1Id);
when(mockResultSet.getString("UUID_User")).thenReturn(userId);
when(mockResultSet.getString("user_name")).thenReturn("Alice");
when(mockResultSet.getString("user_email")).thenReturn("alice@example.com");
when(mockResultSet.getString("user_password")).thenReturn("hashedpw");
when(mockResultSet.getString("role")).thenReturn("USER");
when(mockResultSet.getString("role")).thenReturn("NORMAL_USER");
when(mockResultSet.getString("feedback_comment")).thenReturn("Great work!");
when(mockResultSet.getString("feedback_date")).thenReturn("2024-03-15");

Expand All @@ -118,7 +135,7 @@ void getCharitiesFromDB_singleCharityWithFeedback_feedbackAdded() throws Excepti
1, charity.getFeedbacks().size(), "Charity should have exactly one feedback entry");

Feedback feedback = charity.getFeedbacks().get(0);
assertEquals("feedback-uuid-1", feedback.getFeedbackId());
assertEquals(feedback1Id, feedback.getFeedbackId().toString());
assertEquals("Great work!", feedback.getComment());
}

Expand All @@ -132,12 +149,21 @@ void getCharitiesFromDB_twoCharities_bothAdded() throws Exception {
// First row: charity A, no feedback
// Second row: charity B, no feedback
when(mockResultSet.next()).thenReturn(true, true, false);
when(mockResultSet.getString("UUID_charities")).thenReturn("charity-uuid-A", "charity-uuid-B");
String charityId = UUID.randomUUID().toString();
String charityId2 = UUID.randomUUID().toString();

when(mockResultSet.getString("UUID_charities")).thenReturn(charityId, charityId2);
when(mockResultSet.getString("org_number")).thenReturn("111111111", "222222222");
when(mockResultSet.getString("charity_link")).thenReturn("https://a.org", "https://b.org");
when(mockResultSet.getString("charity_name")).thenReturn("Charity A", "Charity B");
when(mockResultSet.getBoolean("pre_approved")).thenReturn(true, false);
when(mockResultSet.getString("status")).thenReturn("ACTIVE", "INACTIVE");
when(mockResultSet.getString("description")).thenReturn("Some description");
when(mockResultSet.getString("logoURL")).thenReturn("https://logo.png");
when(mockResultSet.getString("key_values")).thenReturn("80:10:90");
when(mockResultSet.getBytes("logoBLOB")).thenReturn(null);
when(mockResultSet.getString("category")).thenReturn(null);

when(mockResultSet.getString("UUID_feedback")).thenReturn(null, null);

CharityRegistry registry = charitySelect.getCharitiesFromDB();
Expand All @@ -155,19 +181,28 @@ void getCharitiesFromDB_sameCharityTwoRows_onlyOneCharityWithTwoFeedbacks() thro

when(mockResultSet.next()).thenReturn(true, true, false);
// Both rows share the same charity UUID
when(mockResultSet.getString("UUID_charities")).thenReturn("charity-uuid-1");
String charityId = UUID.randomUUID().toString();
when(mockResultSet.getString("UUID_charities")).thenReturn(charityId);
when(mockResultSet.getString("org_number")).thenReturn("123456789");
when(mockResultSet.getString("charity_link")).thenReturn("https://example.org");
when(mockResultSet.getString("charity_name")).thenReturn("Test Charity");
when(mockResultSet.getBoolean("pre_approved")).thenReturn(true);
when(mockResultSet.getString("status")).thenReturn("ACTIVE");

when(mockResultSet.getString("UUID_feedback")).thenReturn("feedback-uuid-1", "feedback-uuid-2");
when(mockResultSet.getString("UUID_User")).thenReturn("user-uuid-1");
when(mockResultSet.getString("description")).thenReturn("Some description");
when(mockResultSet.getString("logoURL")).thenReturn("https://logo.png");
when(mockResultSet.getString("key_values")).thenReturn("80:10:90");
when(mockResultSet.getBytes("logoBLOB")).thenReturn(null);
when(mockResultSet.getString("category")).thenReturn(null);

String feedback1Id = UUID.randomUUID().toString();
String feedback2Id = UUID.randomUUID().toString();
String userId = UUID.randomUUID().toString();
when(mockResultSet.getString("UUID_feedback")).thenReturn(feedback1Id, feedback2Id);
when(mockResultSet.getString("UUID_User")).thenReturn(userId);
when(mockResultSet.getString("user_name")).thenReturn("Alice");
when(mockResultSet.getString("user_email")).thenReturn("alice@example.com");
when(mockResultSet.getString("user_password")).thenReturn("hashedpw");
when(mockResultSet.getString("role")).thenReturn("USER");
when(mockResultSet.getString("role")).thenReturn("NORMAL_USER");
when(mockResultSet.getString("feedback_comment")).thenReturn("First comment", "Second comment");
when(mockResultSet.getString("feedback_date")).thenReturn("2024-03-15");

Expand Down Expand Up @@ -219,20 +254,22 @@ void getFeedbackforCharityUUID_oneRow_returnsSingleFeedback() throws Exception {
when(mockPreparedStatement.executeQuery()).thenReturn(mockResultSet);

when(mockResultSet.next()).thenReturn(true, false);
when(mockResultSet.getString("UUID_feedback")).thenReturn("feedback-uuid-1");
when(mockResultSet.getString("UUID_User")).thenReturn("user-uuid-1");
String feedback1Id = UUID.randomUUID().toString();
when(mockResultSet.getString("UUID_feedback")).thenReturn(feedback1Id);
String userId = UUID.randomUUID().toString();
when(mockResultSet.getString("UUID_User")).thenReturn(userId);
when(mockResultSet.getString("user_name")).thenReturn("Bob");
when(mockResultSet.getString("user_email")).thenReturn("bob@example.com");
when(mockResultSet.getString("user_password")).thenReturn("secret");
when(mockResultSet.getString("role")).thenReturn("ADMIN");
when(mockResultSet.getString("role")).thenReturn("CHARITY_USER");
when(mockResultSet.getString("feedback_comment")).thenReturn("Very helpful!");
when(mockResultSet.getString("feedback_date")).thenReturn("2024-06-01");

ArrayList<Feedback> result = charitySelect.getFeedbackforCharityUUID("charity-uuid-1");
String charityId = UUID.randomUUID().toString();
ArrayList<Feedback> result = charitySelect.getFeedbackforCharityUUID(charityId);

assertEquals(1, result.size());
Feedback feedback = result.get(0);
assertEquals("feedback-uuid-1", feedback.getFeedbackId());
assertEquals(feedback1Id, feedback.getFeedbackId().toString());
assertEquals("Very helpful!", feedback.getComment());
assertEquals("Bob", feedback.getUser().getName());
}
Expand All @@ -245,12 +282,16 @@ void getFeedbackforCharityUUID_twoRows_returnsTwoFeedbacks() throws Exception {
when(mockPreparedStatement.executeQuery()).thenReturn(mockResultSet);

when(mockResultSet.next()).thenReturn(true, true, false);
when(mockResultSet.getString("UUID_feedback")).thenReturn("fb-uuid-1", "fb-uuid-2");
when(mockResultSet.getString("UUID_User")).thenReturn("user-uuid-1");
String feedback1Id = UUID.randomUUID().toString();
String feedback2Id = UUID.randomUUID().toString();
when(mockResultSet.getString("UUID_feedback")).thenReturn(feedback1Id, feedback2Id);
String userid = UUID.randomUUID().toString();

when(mockResultSet.getString("UUID_User")).thenReturn(userid);
when(mockResultSet.getString("user_name")).thenReturn("Carol");
when(mockResultSet.getString("user_email")).thenReturn("carol@example.com");
when(mockResultSet.getString("user_password")).thenReturn("pw");
when(mockResultSet.getString("role")).thenReturn("USER");
when(mockResultSet.getString("role")).thenReturn("NORMAL_USER");
when(mockResultSet.getString("feedback_comment")).thenReturn("Comment one", "Comment two");
when(mockResultSet.getString("feedback_date")).thenReturn("2024-07-10");

Expand Down

0 comments on commit f447661

Please sign in to comment.