Skip to content
Snippets Groups Projects
Commit 1a89d7bf authored by Patrik Michal Vlcek's avatar Patrik Michal Vlcek
Browse files

created TaskDaoTest.java and implemented core unit tests

parent 91f601fe
No related branches found
No related tags found
2 merge requests!52Final project MR,!48Implement dao tests
Pipeline #
package cz.muni.fi.pv168.project.db.task;
import cz.muni.fi.pv168.project.data.task.Task;
import cz.muni.fi.pv168.project.data.task.TaskStatus;
import cz.muni.fi.pv168.project.db.category.CategoryDao;
import cz.muni.fi.pv168.project.db.category.CategoryManager;
import cz.muni.fi.pv168.project.db.categorytime.CategoryTimeDao;
import cz.muni.fi.pv168.project.db.dependency.DependencyDao;
import cz.muni.fi.pv168.project.db.subtask.SubTaskDao;
import cz.muni.fi.pv168.project.db.taskcategory.TaskCategoryDao;
import cz.muni.fi.pv168.project.db.taskcategory.TaskCategoryManager;
import org.apache.derby.jdbc.EmbeddedDataSource;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.sql.SQLException;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.LinkedList;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import static org.mockito.Mockito.mock;
class TaskDaoTest {
private static EmbeddedDataSource dataSource;
private TaskDao taskDao;
private TaskManager taskManager;
private CategoryDao categoryDao;
private TaskCategoryDao taskCategoryDao;
private CategoryManager categoryManager;
private TaskCategoryManager taskCategoryManager;
@BeforeAll
static void initTestDataSource() throws SQLException {
dataSource = new EmbeddedDataSource();
dataSource.setDatabaseName("memory:todo-test");
dataSource.setCreateDatabase("create");
}
@BeforeEach
void setupDao() throws SQLException {
categoryDao = new CategoryDao(dataSource, mock(CategoryTimeDao.class));
taskCategoryDao = new TaskCategoryDao(dataSource);
taskDao = new TaskDao(dataSource, mock(SubTaskDao.class), mock(DependencyDao.class),
taskCategoryDao, categoryDao, mock(CategoryTimeDao.class));
taskManager = new TaskManager(dataSource);
categoryManager = new CategoryManager(dataSource);
taskCategoryManager = new TaskCategoryManager(dataSource);
}
@AfterEach
void cleanUp() {
taskCategoryManager.dropTable();
categoryManager.dropTable();
taskManager.dropTable();
}
@Test
void add_NewTaskWithoutCategoryAndDependencies_TaskAdded() {
var tasks = new LinkedList<Task>(Arrays.asList(
Task.builder("A", 10L, LocalDate.EPOCH).build(),
Task.builder("B", 10L, LocalDate.EPOCH).build()
));
for (var task :
tasks) {
taskDao.add(task);
}
assertThat(taskDao.getAll()).isEqualTo(tasks);
}
@Test
void getAll_ExistingTasksWithoutCategoryAndDependencies_AllTaskReturned() {
var tasks = setupTasks();
assertThat(taskDao.getAll()).isEqualTo(tasks);
}
@Test
void fetch_ExistingTaskWithoutCategoryAndDependencies_TaskFetched() {
var tasks = setupTasks();
assertThat(taskDao.fetch(tasks.get(0).getId())).isEqualTo(tasks.get(0));
}
@Test
void update_ChangedExistingTasksStatus_TaskUpdated() {
var tasks = setupTasks();
tasks.get(0).toggleIsCompleted();
tasks.get(0).setTaskStatus(TaskStatus.FINISHED);
taskDao.update(tasks.get(0));
assertThat(taskDao.getAll()).isEqualTo(tasks);
}
@Test
void delete_ExistingTask_TaskDeleted() {
var tasks = setupTasks();
taskDao.delete(tasks.get(0));
tasks.remove(0);
assertThat(taskDao.getAll()).isEqualTo(tasks);
}
private LinkedList<Task> setupTasks() {
var tasks = new LinkedList<Task>(Arrays.asList(
Task.builder("A", 10L, LocalDate.EPOCH).build(),
Task.builder("B", 10L, LocalDate.EPOCH).build(),
Task.builder("C", 10L, LocalDate.EPOCH).build(),
Task.builder("D", 10L, LocalDate.EPOCH).build()
));
for (var task :
tasks) {
taskDao.add(task);
}
return tasks;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment