From f0f78d1e7c9f795905d6751314b761eca8cf90dd Mon Sep 17 00:00:00 2001 From: AdrianBalunan Date: Tue, 14 Apr 2026 17:22:11 +0200 Subject: [PATCH] Fix: ROLE enum changes and uuid changes caused bugs --- .../database/Readers/DonationSelect.java | 6 +- .../database/Readers/DonationSelectTest.java | 68 +++++++++++++------ 2 files changed, 51 insertions(+), 23 deletions(-) diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/DonationSelect.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/DonationSelect.java index 2258013..1183d75 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/DonationSelect.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/DonationSelect.java @@ -58,8 +58,8 @@ public DonationRegistry getDonationFromDB() { """ SELECT d.UUID_Donations, d.amount, d.isAnonymous, d.date, d.charity_id, d.user_id, - c.UUID_charities, c.org_number, c,pre_approved, c.status - u.UUID_user, u.user_name, u.user_email, u.user_password, u.role + c.UUID_charities, c.org_number, c,pre_approved, c.status, + u.UUID_User, u.user_name, u.user_email, u.user_password, u.role FROM Donations d INNER JOIN Charities c ON d.charity_id = c.UUID_charities INNER JOIN User u ON d.user_id = u.UUID_user @@ -78,7 +78,7 @@ public DonationRegistry getDonationFromDB() { User user = new User( - rs.getString("UUID_user"), + rs.getString("UUID_User"), rs.getString("user_name"), rs.getString("user_email"), rs.getString("user_password"), diff --git a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/DonationSelectTest.java b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/DonationSelectTest.java index 9a62987..92b4a7c 100644 --- a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/DonationSelectTest.java +++ b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/DonationSelectTest.java @@ -6,6 +6,8 @@ import java.sql.*; import java.time.LocalDate; +import java.util.UUID; + import ntnu.systemutvikling.team6.database.DatabaseConnection; import ntnu.systemutvikling.team6.models.Donation; import ntnu.systemutvikling.team6.models.registry.DonationRegistry; @@ -65,15 +67,18 @@ void getDonationFromDB_singleRow_returnsSingleDonation() throws Exception { when(mockStatement.executeQuery(anyString())).thenReturn(mockResultSet); when(mockResultSet.next()).thenReturn(true, false); + String charityId = UUID.randomUUID().toString(); stubCharityColumns( - "charity-uuid-1", "123456789", "Test Charity", "https://example.org", true, "ACTIVE"); - stubDonationColumns("donation-uuid-1", 250.0, LocalDate.of(2024, 5, 20)); + charityId, "123456789", "Test Charity", "https://example.org", true, "ACTIVE"); + String userId = UUID.randomUUID().toString(); + String donationId = UUID.randomUUID().toString(); + stubDonationColumns(donationId, 250.0, LocalDate.of(2024, 5, 20),userId); DonationRegistry registry = donationSelect.getDonationFromDB(); assertEquals(1, registry.getAllDonations().size()); Donation donation = registry.getAllDonations().get(0); - assertEquals("donation-uuid-1", donation.getCharityId()); + assertEquals(donationId, donation.getDonationID().toString()); assertEquals(250.0, donation.getAmount()); assertEquals(LocalDate.of(2024, 5, 20), donation.getDate()); } @@ -86,17 +91,18 @@ void getDonationFromDB_singleRow_charityMappedCorrectly() throws Exception { when(mockStatement.executeQuery(anyString())).thenReturn(mockResultSet); when(mockResultSet.next()).thenReturn(true, false); + String charityId = UUID.randomUUID().toString(); + String donationId = UUID.randomUUID().toString(); stubCharityColumns( - "charity-uuid-1", "987654321", "Help Fund", "https://helpfund.org", false, "PENDING"); - stubDonationColumns("donation-uuid-1", 100.0, LocalDate.of(2024, 1, 1)); + charityId, "987654321", "Help Fund", "https://helpfund.org", false, "PENDING"); + String userId = UUID.randomUUID().toString(); + stubDonationColumns(donationId, 100.0, LocalDate.of(2024, 1, 1), userId); DonationRegistry registry = donationSelect.getDonationFromDB(); Donation donation = registry.getAllDonations().get(0); - assertEquals("charity-uuid-1", donation.getCharity().getUUID()); + assertEquals(charityId, donation.getCharityId().toString()); assertEquals("987654321", donation.getCharity().getOrg_number()); - assertEquals("Help Fund", donation.getCharity().getName()); - assertEquals("https://helpfund.org", donation.getCharity().getDescription()); assertFalse(donation.getCharity().getPreApproved()); assertEquals("PENDING", donation.getCharity().getStatus()); } @@ -110,20 +116,28 @@ void getDonationFromDB_twoRows_returnsTwoDonations() throws Exception { when(mockResultSet.next()).thenReturn(true, true, false); - when(mockResultSet.getString("UUID_charities")).thenReturn("charity-uuid-1", "charity-uuid-2"); + String chairtyId = UUID.randomUUID().toString(); + String chairtyId2 = UUID.randomUUID().toString(); + when(mockResultSet.getString("UUID_charities")).thenReturn(chairtyId, chairtyId2); when(mockResultSet.getString("org_number")).thenReturn("111111111", "222222222"); - when(mockResultSet.getString("charity_name")).thenReturn("Charity A", "Charity B"); - when(mockResultSet.getString("charity_link")).thenReturn("https://a.org", "https://b.org"); when(mockResultSet.getBoolean("pre_approved")).thenReturn(true, false); when(mockResultSet.getString("status")).thenReturn("ACTIVE", "INACTIVE"); - + String donationId = UUID.randomUUID().toString(); + String donationId2 = UUID.randomUUID().toString(); when(mockResultSet.getString("UUID_Donations")) - .thenReturn("donation-uuid-1", "donation-uuid-2"); + .thenReturn(donationId, donationId2); when(mockResultSet.getDouble("amount")).thenReturn(500.0, 750.0); Date sqlDate = Date.valueOf(LocalDate.of(2024, 8, 10)); when(mockResultSet.getDate("date")).thenReturn(sqlDate); + String userId = UUID.randomUUID().toString(); + when(mockResultSet.getString("UUID_User")).thenReturn(userId); + when(mockResultSet.getString("user_name")).thenReturn("Test User"); + when(mockResultSet.getString("user_email")).thenReturn("test@example.com"); + when(mockResultSet.getString("user_password")).thenReturn("password"); + when(mockResultSet.getString("role")).thenReturn("NORMAL_USER"); + DonationRegistry registry = donationSelect.getDonationFromDB(); assertEquals( @@ -139,10 +153,14 @@ void getDonationFromDB_zeroAmount_storedCorrectly() throws Exception { when(mockConnection.createStatement()).thenReturn(mockStatement); when(mockStatement.executeQuery(anyString())).thenReturn(mockResultSet); + String charityId = UUID.randomUUID().toString(); when(mockResultSet.next()).thenReturn(true, false); stubCharityColumns( - "charity-uuid-1", "123456789", "Test Charity", "https://example.org", true, "ACTIVE"); - stubDonationColumns("donation-uuid-zero", 0.0, LocalDate.of(2024, 1, 1)); + charityId, "123456789", "Test Charity", "https://example.org", true, "ACTIVE"); + String userId = UUID.randomUUID().toString(); + + String donationId = UUID.randomUUID().toString(); + stubDonationColumns(donationId, 0.0, LocalDate.of(2024, 1, 1), userId); DonationRegistry registry = donationSelect.getDonationFromDB(); @@ -157,9 +175,12 @@ void getDonationFromDB_largeAmount_storedCorrectly() throws Exception { when(mockStatement.executeQuery(anyString())).thenReturn(mockResultSet); when(mockResultSet.next()).thenReturn(true, false); + String charityId = UUID.randomUUID().toString(); + String donationId = UUID.randomUUID().toString(); stubCharityColumns( - "charity-uuid-1", "123456789", "Test Charity", "https://example.org", true, "ACTIVE"); - stubDonationColumns("donation-uuid-big", 1_000_000.99, LocalDate.of(2024, 12, 31)); + charityId, "123456789", "Test Charity", "https://example.org", true, "ACTIVE"); + String userId = UUID.randomUUID().toString(); + stubDonationColumns(donationId, 1_000_000.99, LocalDate.of(2024, 12, 31), userId); DonationRegistry registry = donationSelect.getDonationFromDB(); @@ -200,17 +221,24 @@ private void stubCharityColumns( throws SQLException { when(mockResultSet.getString("UUID_charities")).thenReturn(uuid); when(mockResultSet.getString("org_number")).thenReturn(orgNumber); - when(mockResultSet.getString("charity_name")).thenReturn(name); - when(mockResultSet.getString("charity_link")).thenReturn(link); when(mockResultSet.getBoolean("pre_approved")).thenReturn(preApproved); when(mockResultSet.getString("status")).thenReturn(status); } /** Stubs all donation-related columns on the mock ResultSet. */ - private void stubDonationColumns(String uuid, double amount, LocalDate date) throws SQLException { + private void stubDonationColumns(String uuid, double amount, LocalDate date, String userId) throws SQLException { when(mockResultSet.getString("UUID_Donations")).thenReturn(uuid); when(mockResultSet.getDouble("amount")).thenReturn(amount); + when(mockResultSet.getBoolean("isAnonymous")).thenReturn(false); + Date sqlDate = Date.valueOf(date); when(mockResultSet.getDate("date")).thenReturn(sqlDate); + + // User fields + when(mockResultSet.getString("UUID_User")).thenReturn(userId); + when(mockResultSet.getString("user_name")).thenReturn("Test User"); + when(mockResultSet.getString("user_email")).thenReturn("test@example.com"); + when(mockResultSet.getString("user_password")).thenReturn("password"); + when(mockResultSet.getString("role")).thenReturn("NORMAL_USER"); } }