Skip to content

Commit

Permalink
Fix: ROLE enum changes and uuid changes caused bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
AdrianBalunan committed Apr 14, 2026
1 parent f447661 commit f0f78d1
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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());
}
Expand All @@ -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());
}
Expand All @@ -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(
Expand All @@ -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();

Expand All @@ -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();

Expand Down Expand Up @@ -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");
}
}

0 comments on commit f0f78d1

Please sign in to comment.