diff --git a/src/test/java/cz/muni/fi/pv168/project/db/categorytime/CategoryTimeDaoTest.java b/src/test/java/cz/muni/fi/pv168/project/db/categorytime/CategoryTimeDaoTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..f87b3a7e60234154c985ce2b98ff586ff5df3d33
--- /dev/null
+++ b/src/test/java/cz/muni/fi/pv168/project/db/categorytime/CategoryTimeDaoTest.java
@@ -0,0 +1,93 @@
+package cz.muni.fi.pv168.project.db.categorytime;
+
+import cz.muni.fi.pv168.project.data.category.Category;
+import cz.muni.fi.pv168.project.data.category.CategoryTime;
+import cz.muni.fi.pv168.project.db.category.CategoryDao;
+import cz.muni.fi.pv168.project.db.category.CategoryManager;
+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.awt.Color;
+import java.sql.SQLException;
+import java.time.LocalDate;
+import java.util.Arrays;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class CategoryTimeDaoTest {
+
+    private static EmbeddedDataSource dataSource;
+    private static CategoryManager categoryManager;
+    private CategoryTimeDao categoryTimeDao;
+    private CategoryTimeManager categoryTimeManager;
+    private CategoryDao categoryDao;
+
+    @BeforeAll
+    static void initTestDataSource() throws SQLException {
+        dataSource = new EmbeddedDataSource();
+        dataSource.setDatabaseName("memory:todo-test");
+        dataSource.setCreateDatabase("create");
+    }
+
+    @BeforeEach
+    void createCategoryTimeDao() throws SQLException {
+        categoryDao = new CategoryDao(dataSource, categoryTimeDao);
+        categoryManager = new CategoryManager(dataSource);
+
+        categoryTimeDao = new CategoryTimeDao(dataSource);
+        categoryTimeManager = new CategoryTimeManager(dataSource);
+    }
+
+    @AfterEach
+    void CategoryTimeDaoCleanUp() {
+        categoryTimeManager.dropTable();
+        categoryManager.dropTable();
+    }
+
+    @Test
+    void getAllEntitiesForTask_ExistingTaskWithEntities_ReturnsAllEntities() {
+        var category = new Category("Work", Color.GREEN);
+        categoryDao.add(category);
+
+        var categoryTimes = Arrays.asList(
+                new CategoryTime(LocalDate.EPOCH, 10L, category.getId()),
+                new CategoryTime(LocalDate.EPOCH, 5L, category.getId()),
+                new CategoryTime(LocalDate.EPOCH, 999L, category.getId()));
+        for (var categoryTime :
+                categoryTimes) {
+            categoryTimeDao.addEntityFor(category.getId(), categoryTime);
+        }
+        assertThat(categoryTimeDao.getAllEntitiesFor(category.getId())).isEqualTo(categoryTimes);
+    }
+
+    @Test
+    void getAllEntitiesFor() {
+    }
+
+    @Test
+    void deleteAllEntitiesFor() {
+    }
+
+    @Test
+    void deleteAllEntitiesForTask() {
+    }
+
+    @Test
+    void addEntityFor() {
+    }
+
+    @Test
+    void update() {
+    }
+
+    @Test
+    void delete() {
+    }
+
+    @Test
+    void fetch() {
+    }
+}
\ No newline at end of file