From a180e03a5740a90a5914f1be2b18832efccb91b3 Mon Sep 17 00:00:00 2001 From: AdrianBalunan Date: Mon, 16 Mar 2026 18:33:13 +0100 Subject: [PATCH] All noteworthy classes have tests. --- .../team6/DAO/DonationDAOTest.java | 56 +++++++++ .../team6/models/DonationRegistryTest.java | 116 ++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/DAO/DonationDAOTest.java create mode 100644 helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/DonationRegistryTest.java diff --git a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/DAO/DonationDAOTest.java b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/DAO/DonationDAOTest.java new file mode 100644 index 0000000..cdef6b0 --- /dev/null +++ b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/DAO/DonationDAOTest.java @@ -0,0 +1,56 @@ +package ntnu.systemutvikling.team6.DAO; + +import ntnu.systemutvikling.team6.database.DatabaseConnection; +import ntnu.systemutvikling.team6.database.DatabaseManager; +import ntnu.systemutvikling.team6.models.Charity; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; + +import static org.junit.jupiter.api.Assertions.*; + +class DonationDAOTest { + + private Charity charity; + + @BeforeEach + void setUp() { + DatabaseManager manager = new DatabaseManager(); + manager.createTables(); + + charity = new Charity( + "123456", + "https://test.org", + "Test Charity", + true, + "approved" + ); + + manager.addAPIDataToTable(java.util.List.of(charity)); + } + + @Test + void addDonationShouldInsertDonationIntoDatabase() throws Exception { + double amount = 100.0; + + DonationDAO.addDonation(charity, amount); + + try (Connection conn = new DatabaseConnection().getMySqlConnection()) { + + PreparedStatement stmt = + conn.prepareStatement("SELECT amount FROM Donations WHERE Charities_UUID_charities = ?"); + + stmt.setString(1, charity.getUUID().toString()); + + ResultSet rs = stmt.executeQuery(); + + assertTrue(rs.next(), "Donation should exist in database"); + + assertEquals(amount, rs.getDouble("amount")); + } + } +} \ No newline at end of file diff --git a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/DonationRegistryTest.java b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/DonationRegistryTest.java new file mode 100644 index 0000000..b62ad0d --- /dev/null +++ b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/DonationRegistryTest.java @@ -0,0 +1,116 @@ +package ntnu.systemutvikling.team6.models; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +import ntnu.systemutvikling.team6.models.user.User; +import ntnu.systemutvikling.team6.models.user.Settings; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class DonationRegistryTest { + + private DonationRegistry registry; + private Donation donation; + + @BeforeEach + void setUp() { + registry = new DonationRegistry(); + + Charity charity = mock(Charity.class); + User user = mock(User.class); + Settings settings = mock(Settings.class); + + when(user.getSettings()).thenReturn(settings); + when(settings.isAnonymous()).thenReturn(false); + + donation = new Donation( + 100, + LocalDate.now(), + charity, + user + ); + } + + @Test + void constructor_shouldCreateEmptyRegistry() { + assertTrue(registry.getAllDonations().isEmpty()); + } + + @Test + void addDonation_shouldAddDonation() { + registry.addDonation(donation); + + List donations = registry.getAllDonations(); + + assertEquals(1, donations.size()); + assertTrue(donations.contains(donation)); + } + + @Test + void addDonation_nullDonation_shouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> registry.addDonation(null)); + } + + @Test + void getAllDonations_shouldReturnUnmodifiableList() { + registry.addDonation(donation); + + List donations = registry.getAllDonations(); + + assertThrows(UnsupportedOperationException.class, + () -> donations.add(donation)); + } + + @Test + void findDonationById_shouldReturnDonationIfFound() { + registry.addDonation(donation); + + Optional result = registry.findDonationById(donation.getCharityId()); + + assertTrue(result.isPresent()); + assertEquals(donation, result.get()); + } + + @Test + void findDonationById_shouldReturnEmptyIfNotFound() { + Optional result = registry.findDonationById(UUID.randomUUID()); + + assertTrue(result.isEmpty()); + } + + @Test + void findDonationById_nullId_shouldThrowException() { + assertThrows(IllegalArgumentException.class, + () -> registry.findDonationById(null)); + } + + @Test + void removeDonation_shouldRemoveDonation() { + registry.addDonation(donation); + + boolean removed = registry.removeDonation(donation.getCharityId()); + + assertTrue(removed); + assertTrue(registry.getAllDonations().isEmpty()); + } + + @Test + void removeDonation_shouldReturnFalseIfNotFound() { + boolean removed = registry.removeDonation(UUID.randomUUID()); + + assertFalse(removed); + } + + @Test + void removeDonation_nullId_shouldThrowException() { + assertThrows(IllegalArgumentException.class, + () -> registry.removeDonation(null)); + } +} \ No newline at end of file