Skip to content

Testing/Unit tests for database #83

Merged
merged 18 commits into from
Apr 24, 2026
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added docs/SqlDatabase/ER-Diagram Final.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/SqlDatabase/ER-DiagramFile.mwb
Binary file not shown.
Binary file modified docs/SqlDatabase/ER-DiagramFile.mwb.bak
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,13 @@
import java.util.Objects;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import ntnu.systemutvikling.team6.controller.components.BaseController;
import ntnu.systemutvikling.team6.database.DAO.UserDAO;
import ntnu.systemutvikling.team6.database.DatabaseConnection;
import ntnu.systemutvikling.team6.database.DatabaseSetup;
import ntnu.systemutvikling.team6.database.Readers.UserSelect;
import ntnu.systemutvikling.team6.models.Charity;
import ntnu.systemutvikling.team6.models.registry.CharityRegistry;
import ntnu.systemutvikling.team6.scraper.FullCharityScrape;
import ntnu.systemutvikling.team6.service.APIToDatabaseService;
import ntnu.systemutvikling.team6.service.AuthenticationService;
Expand All @@ -25,7 +21,7 @@ public class HmHApplication extends Application {
@Override
public void start(Stage stage) throws Exception {
DatabaseConnection conn = new DatabaseConnection();
AuthenticationService authToken = new AuthenticationService(new UserSelect(conn), new UserDAO(conn));
AuthenticationService authToken = new AuthenticationService(new UserDAO(conn));

FXMLLoader fxmlLoader =
new FXMLLoader(HmHApplication.class.getResource("/fxml/frontPage.fxml"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import javafx.scene.layout.FlowPane;
import ntnu.systemutvikling.team6.controller.components.*;
import ntnu.systemutvikling.team6.database.DatabaseConnection;
import ntnu.systemutvikling.team6.database.Readers.CharitySelect;
import ntnu.systemutvikling.team6.database.DAO.CharityDAO;
import ntnu.systemutvikling.team6.models.Charity;
import ntnu.systemutvikling.team6.models.registry.CharityRegistry;

Expand Down Expand Up @@ -49,7 +49,7 @@ protected void authTokenisSet(){
@FXML
public void initialize() {
DatabaseConnection conn = new DatabaseConnection();
CharitySelect db = new CharitySelect(conn);
CharityDAO db = new CharityDAO(conn);
CharityRegistry charities = db.getCharitiesFromDB();
allCharities = charities.getAllCharities();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,18 @@
import java.util.Objects;
import java.util.Random;

import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.FlowPane;
import ntnu.systemutvikling.team6.controller.components.*;
import ntnu.systemutvikling.team6.database.DAO.DonationDAO;
import ntnu.systemutvikling.team6.database.DatabaseConnection;
import ntnu.systemutvikling.team6.database.Readers.CategorySelect;
import ntnu.systemutvikling.team6.database.Readers.CharitySelect;
import ntnu.systemutvikling.team6.database.Readers.DonationSelect;
import ntnu.systemutvikling.team6.database.DAO.CategoryDAO;
import ntnu.systemutvikling.team6.database.DAO.CharityDAO;
import ntnu.systemutvikling.team6.models.Charity;
import ntnu.systemutvikling.team6.models.Donation;
import ntnu.systemutvikling.team6.models.registry.CharityRegistry;
Expand Down Expand Up @@ -76,9 +73,9 @@ public void initialize() {
private void loadPage(){
try {
DatabaseConnection conn = new DatabaseConnection();
CharitySelect cdb = new CharitySelect(conn);
DonationSelect ddb = new DonationSelect(conn);
CategorySelect categoryselect = new CategorySelect(conn);
CharityDAO cdb = new CharityDAO(conn);
DonationDAO ddb = new DonationDAO(conn);
CategoryDAO categoryselect = new CategoryDAO(conn);
CharityRegistry charities = cdb.getCharitiesFromDB();
DonationRegistry donations = ddb.getDonationFromDB();
List<String> categories = categoryselect.getCategoriesFromDB();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import ntnu.systemutvikling.team6.controller.components.*;
import ntnu.systemutvikling.team6.database.DAO.FeedbackDAO;
import ntnu.systemutvikling.team6.database.DatabaseConnection;
import ntnu.systemutvikling.team6.database.Readers.CharitySelect;
import ntnu.systemutvikling.team6.database.DAO.CharityDAO;
import ntnu.systemutvikling.team6.models.Charity;
import ntnu.systemutvikling.team6.models.Feedback;

Expand Down Expand Up @@ -58,8 +58,8 @@ protected void authTokenisSet() {
}
private void populateFields(){
DatabaseConnection conn = new DatabaseConnection();
CharitySelect charitySelect = new CharitySelect(conn);
ArrayList<Feedback> feedbacks = charitySelect.getFeedbackforCharityUUID(charity.getUUID().toString());
FeedbackDAO feedbackDAO = new FeedbackDAO(conn);
ArrayList<Feedback> feedbacks = feedbackDAO.getFeedbackforCharityUUID(charity.getUUID().toString());
displayFeedbacks(feedbacks);
}
private void displayFeedbacks(ArrayList<Feedback> feedbacks){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,16 @@
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
import ntnu.systemutvikling.team6.controller.components.*;
import ntnu.systemutvikling.team6.database.DAO.FeedbackDAO;
import ntnu.systemutvikling.team6.database.DAO.MessageDAO;
import ntnu.systemutvikling.team6.database.DatabaseConnection;
import ntnu.systemutvikling.team6.database.Readers.CharitySelect;
import ntnu.systemutvikling.team6.database.DAO.CharityDAO;
import ntnu.systemutvikling.team6.models.Charity;
import ntnu.systemutvikling.team6.models.Feedback;
import ntnu.systemutvikling.team6.models.user.Inbox;
import ntnu.systemutvikling.team6.models.user.Message;
import ntnu.systemutvikling.team6.models.user.User;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class profileOrgInboxController extends BaseController {
@FXML
Expand Down Expand Up @@ -60,8 +57,8 @@ public void populateFields() {

// Messages
DatabaseConnection conn = new DatabaseConnection();
CharitySelect charitySelect = new CharitySelect(conn);
ArrayList<Feedback> feedbacks = charitySelect.getFeedbackforCharityUUID(authToken.isCharityUser().getUUID().toString());
FeedbackDAO feedbackDAO = new FeedbackDAO(conn);
ArrayList<Feedback> feedbacks = feedbackDAO.getFeedbackforCharityUUID(authToken.isCharityUser().getUUID().toString());
displayFeedbacks(feedbacks);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import ntnu.systemutvikling.team6.controller.components.*;
import ntnu.systemutvikling.team6.database.DAO.DonationDAO;
import ntnu.systemutvikling.team6.database.DatabaseConnection;
import ntnu.systemutvikling.team6.database.Readers.DonationSelect;
import ntnu.systemutvikling.team6.models.Charity;
import ntnu.systemutvikling.team6.models.Donation;
import ntnu.systemutvikling.team6.models.registry.DonationRegistry;
Expand Down Expand Up @@ -51,8 +51,8 @@ public void populateFields() {

// DonationHistory
DatabaseConnection conn = new DatabaseConnection();
DonationSelect donationSelect = new DonationSelect(conn);
DonationRegistry donationRegistry = donationSelect.getDonationForCharity(authToken.isCharityUser().getUUID().toString());
DonationDAO donationDAO = new DonationDAO(conn);
DonationRegistry donationRegistry = donationDAO.getDonationForCharity(authToken.isCharityUser().getUUID().toString());
displayDonations(donationRegistry);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,10 @@
import javafx.stage.Stage;
import ntnu.systemutvikling.team6.controller.components.*;
import ntnu.systemutvikling.team6.database.DAO.CharityUserDAO;
import ntnu.systemutvikling.team6.database.DAO.UserDAO;
import ntnu.systemutvikling.team6.database.DatabaseConnection;
import ntnu.systemutvikling.team6.database.Readers.UserSelect;
import ntnu.systemutvikling.team6.models.Charity;
import ntnu.systemutvikling.team6.models.Donation;
import ntnu.systemutvikling.team6.models.registry.DonationRegistry;
import ntnu.systemutvikling.team6.models.user.User;
import ntnu.systemutvikling.team6.security.PasswordHasher;

import java.io.IOException;
import java.util.Base64;
import java.util.List;

public class profileOrgSettingsController extends BaseController {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import ntnu.systemutvikling.team6.controller.components.*;
import ntnu.systemutvikling.team6.database.DAO.DonationDAO;
import ntnu.systemutvikling.team6.database.DatabaseConnection;
import ntnu.systemutvikling.team6.database.Readers.DonationSelect;
import ntnu.systemutvikling.team6.models.Donation;
import ntnu.systemutvikling.team6.models.registry.DonationRegistry;
import ntnu.systemutvikling.team6.models.user.Inbox;
Expand Down Expand Up @@ -57,8 +57,8 @@ public void populateFields() {

// DonationHistory
DatabaseConnection conn = new DatabaseConnection();
DonationSelect donationSelect = new DonationSelect(conn);
DonationRegistry donationRegistry = donationSelect.getDonationForUser(authToken.getCurrentUser().getId().toString());
DonationDAO donationDAO = new DonationDAO(conn);
DonationRegistry donationRegistry = donationDAO.getDonationForUser(authToken.getCurrentUser().getId().toString());
double ammount = donationRegistry.getAllDonations().stream().mapToDouble(d->d.getAmount()).sum();
totalAmmount.setText(String.valueOf(ammount));
displayDonations(donationRegistry);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import ntnu.systemutvikling.team6.controller.components.NavbarController;
import ntnu.systemutvikling.team6.database.DAO.UserDAO;
import ntnu.systemutvikling.team6.database.DatabaseConnection;
import ntnu.systemutvikling.team6.database.Readers.UserSelect;
import ntnu.systemutvikling.team6.models.user.*;
import ntnu.systemutvikling.team6.security.PasswordHasher;

Expand Down Expand Up @@ -119,10 +118,9 @@ private void handleNewProfile(ActionEvent event){
boolean updateSuccess;
DatabaseConnection conn = new DatabaseConnection();
UserDAO userDataObject = new UserDAO(conn);
UserSelect userReaderObject = new UserSelect(conn);
try {
if (!emailText.equals(authToken.getCurrentUser().getEmail())) {
boolean isEmailTaken = userReaderObject.isEmailTaken(emailText);
boolean isEmailTaken = userDataObject.isEmailTaken(emailText);
if (!isEmailTaken) {
updateSuccess = userDataObject.updateUserDetails(newUserOnlyCredentials);
} else {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ntnu.systemutvikling.team6.database.Readers;
package ntnu.systemutvikling.team6.database.DAO;

import java.sql.Connection;
import java.sql.ResultSet;
Expand All @@ -13,16 +13,16 @@
*
* <p>All queries are executed against a MySQL database via a {@link DatabaseConnection}.
*/
public class CategorySelect {
public class CategoryDAO {
private final DatabaseConnection connection;

/**
*Constructs a new {@code CharitySelect} with the given database connection.
* Constructs a new {@code CategoryDAO} with the given database connection.
*
* @param connection the {@link DatabaseConnection} to use for executing queries; must not be
* {@code null}
*/
public CategorySelect(DatabaseConnection connection) {
public CategoryDAO(DatabaseConnection connection) {
this.connection = connection;
}

Expand All @@ -47,7 +47,6 @@ public List<String> getCategoriesFromDB() {
throw new RuntimeException(
"ERROR: Something went wrong during fetching categories from database.");
}

return categories;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ntnu.systemutvikling.team6.database.Readers;
package ntnu.systemutvikling.team6.database.DAO;

import java.sql.*;
import java.time.LocalDate;
Expand All @@ -14,14 +14,14 @@
import ntnu.systemutvikling.team6.models.user.User;

/**
* Data access class responsible for reading charity-related data from the database.
*
* <p>Provides methods to retrieve all charities (with their associated feedback and users) as well
* Data access class responsible for acsessing charity-related data from the database.
* <p>
* Primarily provides read methods to retrieve all charities (with their associated feedback and users) as well
* as feedback entries for a specific charity by UUID.
*
* <p>All queries are executed against a MySQL database via a {@link DatabaseConnection}.
* <p>
* All queries are executed against a MySQL database via a {@link DatabaseConnection}.
*/
public class CharitySelect {
public class CharityDAO {
private final DatabaseConnection connection;

/**
Expand All @@ -30,7 +30,7 @@ public class CharitySelect {
* @param connection the {@link DatabaseConnection} to use for executing queries; must not be
* {@code null}
*/
public CharitySelect(DatabaseConnection connection) {
public CharityDAO(DatabaseConnection connection) {
this.connection = connection;
}

Expand All @@ -39,7 +39,7 @@ public CharitySelect(DatabaseConnection connection) {
* who submitted each piece of feedback.
*
* <p>The query performs a LEFT JOIN between the {@code Charities}, {@code Feedback}, {@code
* User}, {@code CharityVanity}, and {@code category(s)} tables. Each unique charity is added once
* User} and {@code category(s)} tables and a INNER JOIN with {@code CharityVanity} table. Each unique charity is added once
* to the registry; any feedback rows found for that charity are appended to its feedback list.
*
* <p>Note: charities with no feedback and categories are still included in the result due to the
Expand Down Expand Up @@ -139,6 +139,8 @@ public CharityRegistry getCharitiesFromDB() {
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("ERROR: Something went wrong during updating charities table.");
} finally {
conn = null;
}

return registry;
Expand Down
Loading