diff --git a/application/model/src/main/java/org/fuseri/model/dto/course/CourseDto.java b/application/model/src/main/java/org/fuseri/model/dto/course/CourseDto.java
index 18e5695b056c1f3f477a05c5abd8f83bba32c9a1..97ca492ad746eb8d13015f231d9623e26f64ea08 100644
--- a/application/model/src/main/java/org/fuseri/model/dto/course/CourseDto.java
+++ b/application/model/src/main/java/org/fuseri/model/dto/course/CourseDto.java
@@ -43,12 +43,16 @@ public class CourseDto extends DomainObjectDto {
     @Valid
     private List<Long> studentIds;
 
-    public CourseDto(Long id, String name, Integer capacity, LanguageTypeDto languageTypeDto, ProficiencyLevelDto proficiencyLevelDto) {
-        this.setId(id);
+    public CourseDto(String name, Integer capacity, LanguageTypeDto languageTypeDto, ProficiencyLevelDto proficiencyLevelDto) {
         this.name = name;
         this.capacity = capacity;
         this.language = languageTypeDto;
         this.proficiency = proficiencyLevelDto;
         this.studentIds = new ArrayList<>();
     }
+
+    public CourseDto(Long id, String name, Integer capacity, LanguageTypeDto languageTypeDto, ProficiencyLevelDto proficiencyLevelDto) {
+        this(name, capacity, languageTypeDto, proficiencyLevelDto);
+        this.setId(id);
+    }
 }
diff --git a/application/module-language-school/src/test/java/org/fuseri/modulelanguageschool/course/CourseFacadeTest.java b/application/module-language-school/src/test/java/org/fuseri/modulelanguageschool/course/CourseFacadeTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..a027c445be6346f391eda832391d240626dc2d98
--- /dev/null
+++ b/application/module-language-school/src/test/java/org/fuseri/modulelanguageschool/course/CourseFacadeTest.java
@@ -0,0 +1,171 @@
+package org.fuseri.modulelanguageschool.course;
+
+
+import org.fuseri.model.dto.course.CourseCreateDto;
+import org.fuseri.model.dto.course.CourseDto;
+import org.fuseri.model.dto.course.LanguageTypeDto;
+import org.fuseri.model.dto.course.ProficiencyLevelDto;
+import org.fuseri.model.dto.user.AddressDto;
+import org.fuseri.model.dto.user.UserDto;
+import org.fuseri.modulelanguageschool.user.User;
+import org.fuseri.modulelanguageschool.user.UserMapper;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+
+@SpringBootTest
+@AutoConfigureMockMvc
+final class CourseFacadeTest {
+
+    private final UserDto USER = new UserDto("novakovat",
+            "novakova@gamil.com", "Tereza", "Nováková", new AddressDto());
+    private final CourseDto courseDto = new CourseDto("AJ1", 10,
+            LanguageTypeDto.ENGLISH, ProficiencyLevelDto.A1);
+    private final CourseCreateDto courseCreateDto = new CourseCreateDto("AJ1", 10,
+            LanguageTypeDto.ENGLISH, ProficiencyLevelDto.A1);
+
+    private final Course course = new Course();
+    private final User user = new User();
+
+    //private final Certificate certificate = new Certificate();
+    private final List<Course> courseList = List.of(course);
+    private final List<CourseDto> courseDtoList = List.of(courseDto);
+    private final LanguageTypeDto languageTypeDto = LanguageTypeDto.ENGLISH;
+    private final ProficiencyLevelDto proficiencyLevelDto = ProficiencyLevelDto.B1;
+
+
+    @Autowired
+    private CourseFacade courseFacade;
+
+    @MockBean
+    private CourseService courseService;
+
+    @MockBean
+    private CourseMapper courseMapper;
+
+    @MockBean
+    private UserMapper userMapper;
+
+    @Test
+    void create() {
+        when(courseMapper.mapToCourse(courseCreateDto)).thenReturn(course);
+        when(courseService.save(course)).thenReturn(course);
+        when(courseMapper.mapToDto(course)).thenReturn(courseDto);
+
+        CourseDto actualDto = courseFacade.create(courseCreateDto);
+
+        assertEquals(courseDto, actualDto);
+    }
+
+    @Test
+    void testFindById() {
+        Long id = 0L;
+        when(courseService.findById(id)).thenReturn(course);
+        when(courseMapper.mapToDto(course)).thenReturn(courseDto);
+
+        CourseDto actualDto = courseFacade.findById(id);
+
+        assertNotNull(actualDto);
+        assertEquals(courseDto, actualDto);
+    }
+
+    @Test
+    void testFindAll() {
+        Pageable pageable = PageRequest.of(0, 10);
+        Page<Course> certificatePage = new PageImpl<>(List.of(course), pageable, 0);
+        Page<CourseDto> expectedPageDto = new PageImpl<>(List.of(courseDto), pageable, 0);
+
+        when(courseService.findAll(pageable)).thenReturn(certificatePage);
+        when(courseMapper.mapToPageDto(certificatePage)).thenReturn(expectedPageDto);
+
+        Page<CourseDto> actualPageDto = courseFacade.findAll(pageable);
+
+        assertEquals(expectedPageDto, actualPageDto);
+    }
+
+    @Test
+    void update() {
+        Long id = 1L;
+        when(courseMapper.mapToCourse(courseCreateDto)).thenReturn(course);
+        when(courseService.update(id, course)).thenReturn(course);
+        when(courseMapper.mapToDto(course)).thenReturn(courseDto);
+
+        CourseDto actualDto = courseFacade.update(id, courseCreateDto);
+
+        assertEquals(courseDto, actualDto);
+    }
+
+    @Test
+    void testDelete() {
+        Long id = 1L;
+        courseFacade.delete(id);
+        verify(courseService).delete(id);
+    }
+
+    @Test
+    void testFindAllByLanguage() {
+        when(courseService.findAll(any(Language.class))).thenReturn(courseList);
+        when(courseMapper.mapToList(courseList)).thenReturn(courseDtoList);
+
+        List<CourseDto> actualDtoList = courseFacade.findAll(languageTypeDto);
+
+        assertNotNull(actualDtoList);
+        assertEquals(courseDtoList, actualDtoList);
+    }
+
+    @Test
+    void testFindAllByLanguageAndProf() {
+        when(courseService.findAll(any(Language.class), any(ProficiencyLevel.class))).thenReturn(courseList);
+        when(courseMapper.mapToList(courseList)).thenReturn(courseDtoList);
+
+        List<CourseDto> actualDtoList = courseFacade.findAll(languageTypeDto, proficiencyLevelDto);
+
+        assertNotNull(actualDtoList);
+        assertEquals(courseDtoList, actualDtoList);
+    }
+
+    @Test
+    void testEnrol() {
+        Long id = 0L;
+        when(courseMapper.mapToDto(course)).thenReturn(courseDto);
+        when(userMapper.fromDto(USER)).thenReturn(user);
+        when(courseService.enrol(anyLong(), any(User.class))).thenReturn(course);
+
+        CourseDto actualDto = courseFacade.enrol(id, USER);
+
+        assertNotNull(actualDto);
+        assertEquals(courseDto, actualDto);
+    }
+
+    @Test
+    void testExpel() {
+        Long id = 0L;
+        when(courseMapper.mapToDto(course)).thenReturn(courseDto);
+        when(userMapper.fromDto(USER)).thenReturn(user);
+        when(courseService.expel(anyLong(), any(User.class))).thenReturn(course);
+
+        CourseDto actualDto = courseFacade.expel(id, USER);
+
+        assertNotNull(actualDto);
+        assertEquals(courseDto, actualDto);
+    }
+
+
+
+}