diff --git a/application/module-language-school/src/test/java/org/fuseri/modulelanguageschool/course/CourseRepositoryTest.java b/application/module-language-school/src/test/java/org/fuseri/modulelanguageschool/course/CourseRepositoryTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..9ffd146b3ac6f8ac3d9b5df3f5c648dee5ac8b19
--- /dev/null
+++ b/application/module-language-school/src/test/java/org/fuseri/modulelanguageschool/course/CourseRepositoryTest.java
@@ -0,0 +1,92 @@
+package org.fuseri.modulelanguageschool.course;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+
+@DataJpaTest
+public class CourseRepositoryTest {
+
+    @Autowired
+    private TestEntityManager entityManager;
+
+    @Autowired
+    private CourseRepository courseRepository;
+
+    private final Course course =  new Course("AJ1", 10,
+            Language.ENGLISH, ProficiencyLevel.A1, new HashSet<>());
+
+    @Test
+    void saveCourse() {
+        Course saved = courseRepository.save(course);
+
+        Assertions.assertNotNull(saved);
+        Assertions.assertEquals(course, saved);
+    }
+
+    @Test
+    void findById() {
+        entityManager.persist(course);
+        entityManager.flush();
+
+        Course found = courseRepository.findById(course.getId()).orElse(null);
+
+        Assertions.assertNotNull(found);
+        Assertions.assertEquals(found, course);
+    }
+
+
+    @Test
+    void findAllByLang() {
+        entityManager.persist(course);
+        entityManager.flush();
+
+        List<Course> found = courseRepository.findAllByLang(course.getLanguage());
+
+        Assertions.assertEquals(1, found.size());
+        Assertions.assertEquals(found.get(0), course);
+    }
+
+    @Test
+    void findAllByLangProf() {
+        entityManager.persist(course);
+        entityManager.flush();
+
+        List<Course> found = courseRepository.findAllByLangProf(course.getLanguage(), course.getProficiency());
+
+        Assertions.assertEquals(1, found.size());
+        Assertions.assertEquals(found.get(0), course);
+    }
+    @Test
+    public void testFindAllCourses() {
+        Course course1 = new Course();
+        Course course2 = new Course();
+
+        courseRepository.save(course1);
+        courseRepository.save(course2);
+
+        Page<Course> coursePage = courseRepository.findAll(PageRequest.of(0, 42));
+
+        Assertions.assertEquals(2, coursePage.getTotalElements());
+        Assertions.assertEquals(coursePage.getContent(), Arrays.asList(course1, course2));
+    }
+
+    @Test
+    public void testDeleteCourse() {
+        Long courseId = entityManager.persist(new Course()).getId();
+        entityManager.flush();
+
+        courseRepository.deleteById(courseId);
+
+        Assertions.assertTrue(courseRepository.findById(courseId).isEmpty());
+    }
+
+}