From f2cc964d393966ede42025bc866472e4720756a0 Mon Sep 17 00:00:00 2001 From: Riley Schneider <88947587+Ferryry@users.noreply.github.com> Date: Wed, 3 Dec 2025 23:04:21 +0100 Subject: [PATCH] Added new tests that needs to be implemented. --- .../project/provider/DatabaseManager.java | 5 +- .../provider/SimpleDatabaseManager.java | 43 +++++++++------- .../temp/project/DatabaseBadCasesTest.java | 17 ++++++- .../temp/project/DatabaseGoodCasesTest.java | 49 ++++++++++++++++--- 4 files changed, 87 insertions(+), 27 deletions(-) diff --git a/src/main/java/hhn/temp/project/provider/DatabaseManager.java b/src/main/java/hhn/temp/project/provider/DatabaseManager.java index 2335d83d..e2defa3e 100644 --- a/src/main/java/hhn/temp/project/provider/DatabaseManager.java +++ b/src/main/java/hhn/temp/project/provider/DatabaseManager.java @@ -10,6 +10,7 @@ public interface DatabaseManager extends Database { public void saveObjects(Collection objects) throws SQLException; public Collection getObjects() throws SQLException; public void saveObject(E object) throws SQLException; - public E getObject(int id) throws SQLException; - public void deleteObject(int id) throws SQLException; + public E getObject(int taskId) throws SQLException; + public void deleteObject(int taskId) throws SQLException; + public E updateObject(int taskId, E object) throws SQLException; } \ No newline at end of file diff --git a/src/main/java/hhn/temp/project/provider/SimpleDatabaseManager.java b/src/main/java/hhn/temp/project/provider/SimpleDatabaseManager.java index f7baa11a..d13775e0 100644 --- a/src/main/java/hhn/temp/project/provider/SimpleDatabaseManager.java +++ b/src/main/java/hhn/temp/project/provider/SimpleDatabaseManager.java @@ -2,11 +2,11 @@ package hhn.temp.project.provider; import hhn.temp.project.Task; import hhn.temp.project.TaskState; -import jdk.jshell.spi.ExecutionControl; -import java.io.IOException; import java.sql.*; +import java.util.ArrayList; import java.util.Collection; +import java.util.List; public class SimpleDatabaseManager implements DatabaseManager { @@ -78,33 +78,42 @@ public class SimpleDatabaseManager implements DatabaseManager { } @Override - public E getObject(int id) throws SQLException { + public E getObject(int taskId) throws SQLException { String query = getQuery(QueryMode.SELECT); Task task = null; - try (PreparedStatement ps = connection.prepareStatement(query)) { - ps.setInt(1, id); + PreparedStatement ps = connection.prepareStatement(query); + ps.setInt(1, taskId); - ResultSet resultSet = ps.executeQuery(); + ResultSet resultSet = ps.executeQuery(); - if (resultSet.next()) { + if (resultSet.next()) { - task = new Task( - resultSet.getInt("taskid"), - resultSet.getInt("workerid"), - resultSet.getString("name"), - resultSet.getString("description") - ); - task.setTaskState(intToTaskState(resultSet.getInt("taskstate"))); - } + task = new Task( + resultSet.getInt("taskid"), + resultSet.getInt("workerid"), + resultSet.getString("name"), + resultSet.getString("description") + ); + task.setTaskState(intToTaskState(resultSet.getInt("taskstate"))); } return (E) task; } @Override - public void deleteObject(int id) throws SQLException { - throw new SQLException("Not implemented yet"); + public void deleteObject(int taskId) throws SQLException { + String query = getQuery(QueryMode.DELETE); + + try (PreparedStatement ps = connection.prepareStatement(query)) { + ps.setInt(1, taskId); + ps.executeUpdate(); + } + } + + @Override + public E updateObject(int taskId, E object) throws SQLException { + return null; } @Override diff --git a/test/hhn/temp/project/DatabaseBadCasesTest.java b/test/hhn/temp/project/DatabaseBadCasesTest.java index 6e73bd41..f00db386 100644 --- a/test/hhn/temp/project/DatabaseBadCasesTest.java +++ b/test/hhn/temp/project/DatabaseBadCasesTest.java @@ -6,6 +6,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import java.io.IOException; import java.sql.SQLException; import static org.junit.jupiter.api.Assertions.*; @@ -27,7 +28,21 @@ public class DatabaseBadCasesTest { } @BeforeEach - public void setup() { + public void setup() throws SQLException, IOException { databaseManager = new SimpleDatabaseManager<>(); + databaseManager.connect(); + databaseManager.clearDatabase(); + } + + @Test + @DisplayName("Gets an object that may not be existent") + public void assertObjectShouldNotBeExistent() throws SQLException { + assertNull(databaseManager.getObject(999)); + } + + @Test + @DisplayName("Updates an object that does not exist") + public void assertUpdateNonExistentObject() throws SQLException { + assertNull(databaseManager.updateObject(123, new Task(1, 2, "", ""))); } } \ No newline at end of file diff --git a/test/hhn/temp/project/DatabaseGoodCasesTest.java b/test/hhn/temp/project/DatabaseGoodCasesTest.java index e47e0e8e..0c16f0fb 100644 --- a/test/hhn/temp/project/DatabaseGoodCasesTest.java +++ b/test/hhn/temp/project/DatabaseGoodCasesTest.java @@ -2,7 +2,6 @@ package hhn.temp.project; import hhn.temp.project.provider.DatabaseManager; import hhn.temp.project.provider.SimpleDatabaseManager; -import jdk.jshell.spi.ExecutionControl; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -17,19 +16,17 @@ import java.util.Collection; public class DatabaseGoodCasesTest { private DatabaseManager databaseManager; - private AssignmentManager manager; @BeforeEach public void setup() throws SQLException, IOException { databaseManager = new SimpleDatabaseManager<>(); databaseManager.connect(); databaseManager.clearDatabase(); - manager = new AssignmentManager(); } @Test @DisplayName("Assert that the TestClass could be inserted into the database") - public void assertGetTestClass() throws SQLException, IOException { + public void assertGetTestClass() throws SQLException { databaseManager.connect(); @@ -48,9 +45,26 @@ public class DatabaseGoodCasesTest { databaseManager.close(); } + @Test + @DisplayName("Assert that an inserted and deleted task is not there anymore") + public void assertDeleteTest() throws SQLException { + + databaseManager.connect(); + + Task task = new Task(9, 1, "hi", "hi"); + + databaseManager.saveObject(task); + + databaseManager.deleteObject(9); + + databaseManager.getObject(9); + + databaseManager.close(); + } + @Test @DisplayName("Assert that a simple Task could be inserted into the database") - public void assertInsertTask() throws SQLException, IOException, ExecutionControl.NotImplementedException { + public void assertInsertTask() throws SQLException { Task testTask = new Task(1, 1, "Hello World", "Description"); @@ -60,8 +74,8 @@ public class DatabaseGoodCasesTest { } @Test - @DisplayName("Assert that simple Tasks could be inserted into the database") - public void assertInsertMultipleTasks() throws SQLException, IOException, ExecutionControl.NotImplementedException { + @DisplayName("Assert that multiple Tasks could be inserted into the database") + public void assertInsertMultipleTasks() throws SQLException { Task testTaskZero = new Task(1, 1, "Hello", "Description"); Task testTaskOne = new Task(2, 2, "World", "Description"); @@ -76,4 +90,25 @@ public class DatabaseGoodCasesTest { databaseManager.saveObjects(tasks); databaseManager.close(); } + + @Test + @DisplayName("Assert insert object and update it") + public void assertInsertUpdateTask() throws SQLException { + + int taskId = 1; + + Task testTask = new Task(taskId, 1, "Hello World", "Description"); + Task newTask = new Task(taskId, 1, "No World", "Description"); + + databaseManager.connect(); + databaseManager.saveObject(testTask); + newTask = databaseManager.updateObject(testTask.getTaskId(), newTask); + + assertNotNull(testTask); + + assertNotEquals(testTask.getDescription(), newTask.getDescription()); + assertEquals(testTask.getTaskId(), newTask.getTaskId()); + + databaseManager.close(); + } } \ No newline at end of file