Added new tests that needs to be implemented.

This commit is contained in:
Riley Schneider
2025-12-03 23:04:21 +01:00
parent 995fba6fce
commit f2cc964d39
4 changed files with 87 additions and 27 deletions

View File

@@ -10,6 +10,7 @@ public interface DatabaseManager<E> extends Database {
public void saveObjects(Collection<E> objects) throws SQLException; public void saveObjects(Collection<E> objects) throws SQLException;
public Collection<E> getObjects() throws SQLException; public Collection<E> getObjects() throws SQLException;
public void saveObject(E object) throws SQLException; public void saveObject(E object) throws SQLException;
public E getObject(int id) throws SQLException; public E getObject(int taskId) throws SQLException;
public void deleteObject(int id) throws SQLException; public void deleteObject(int taskId) throws SQLException;
public E updateObject(int taskId, E object) throws SQLException;
} }

View File

@@ -2,11 +2,11 @@ package hhn.temp.project.provider;
import hhn.temp.project.Task; import hhn.temp.project.Task;
import hhn.temp.project.TaskState; import hhn.temp.project.TaskState;
import jdk.jshell.spi.ExecutionControl;
import java.io.IOException;
import java.sql.*; import java.sql.*;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List;
public class SimpleDatabaseManager<E> implements DatabaseManager<E> { public class SimpleDatabaseManager<E> implements DatabaseManager<E> {
@@ -78,12 +78,12 @@ public class SimpleDatabaseManager<E> implements DatabaseManager<E> {
} }
@Override @Override
public E getObject(int id) throws SQLException { public E getObject(int taskId) throws SQLException {
String query = getQuery(QueryMode.SELECT); String query = getQuery(QueryMode.SELECT);
Task task = null; Task task = null;
try (PreparedStatement ps = connection.prepareStatement(query)) { PreparedStatement ps = connection.prepareStatement(query);
ps.setInt(1, id); ps.setInt(1, taskId);
ResultSet resultSet = ps.executeQuery(); ResultSet resultSet = ps.executeQuery();
@@ -97,14 +97,23 @@ public class SimpleDatabaseManager<E> implements DatabaseManager<E> {
); );
task.setTaskState(intToTaskState(resultSet.getInt("taskstate"))); task.setTaskState(intToTaskState(resultSet.getInt("taskstate")));
} }
}
return (E) task; return (E) task;
} }
@Override @Override
public void deleteObject(int id) throws SQLException { public void deleteObject(int taskId) throws SQLException {
throw new SQLException("Not implemented yet"); 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 @Override

View File

@@ -6,6 +6,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.sql.SQLException; import java.sql.SQLException;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
@@ -27,7 +28,21 @@ public class DatabaseBadCasesTest {
} }
@BeforeEach @BeforeEach
public void setup() { public void setup() throws SQLException, IOException {
databaseManager = new SimpleDatabaseManager<>(); 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, "", "")));
} }
} }

View File

@@ -2,7 +2,6 @@ package hhn.temp.project;
import hhn.temp.project.provider.DatabaseManager; import hhn.temp.project.provider.DatabaseManager;
import hhn.temp.project.provider.SimpleDatabaseManager; import hhn.temp.project.provider.SimpleDatabaseManager;
import jdk.jshell.spi.ExecutionControl;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@@ -17,19 +16,17 @@ import java.util.Collection;
public class DatabaseGoodCasesTest { public class DatabaseGoodCasesTest {
private DatabaseManager<Task> databaseManager; private DatabaseManager<Task> databaseManager;
private AssignmentManager manager;
@BeforeEach @BeforeEach
public void setup() throws SQLException, IOException { public void setup() throws SQLException, IOException {
databaseManager = new SimpleDatabaseManager<>(); databaseManager = new SimpleDatabaseManager<>();
databaseManager.connect(); databaseManager.connect();
databaseManager.clearDatabase(); databaseManager.clearDatabase();
manager = new AssignmentManager();
} }
@Test @Test
@DisplayName("Assert that the TestClass could be inserted into the database") @DisplayName("Assert that the TestClass could be inserted into the database")
public void assertGetTestClass() throws SQLException, IOException { public void assertGetTestClass() throws SQLException {
databaseManager.connect(); databaseManager.connect();
@@ -48,9 +45,26 @@ public class DatabaseGoodCasesTest {
databaseManager.close(); 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 @Test
@DisplayName("Assert that a simple Task could be inserted into the database") @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"); Task testTask = new Task(1, 1, "Hello World", "Description");
@@ -60,8 +74,8 @@ public class DatabaseGoodCasesTest {
} }
@Test @Test
@DisplayName("Assert that simple Tasks could be inserted into the database") @DisplayName("Assert that multiple Tasks could be inserted into the database")
public void assertInsertMultipleTasks() throws SQLException, IOException, ExecutionControl.NotImplementedException { public void assertInsertMultipleTasks() throws SQLException {
Task testTaskZero = new Task(1, 1, "Hello", "Description"); Task testTaskZero = new Task(1, 1, "Hello", "Description");
Task testTaskOne = new Task(2, 2, "World", "Description"); Task testTaskOne = new Task(2, 2, "World", "Description");
@@ -76,4 +90,25 @@ public class DatabaseGoodCasesTest {
databaseManager.saveObjects(tasks); databaseManager.saveObjects(tasks);
databaseManager.close(); 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();
}
} }