diff --git a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/course/CourseController.java b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/course/CourseController.java index 2011884b168ead61234283c8fa115b16e059492c..62dba59d4ccd5a1d0c53d0213d57004974243b74 100644 --- a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/course/CourseController.java +++ b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/course/CourseController.java @@ -9,7 +9,6 @@ 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.UserDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -103,6 +102,7 @@ public class CourseController { List<CourseDto> courseDtos = courseFacade.findAll(lang); return ResponseEntity.ok(courseDtos); } + /** * Retrieves a paginated list of courses of a given language and proficiency * @@ -117,7 +117,7 @@ public class CourseController { @ApiResponse(code = 400, message = "Invalid request body") }) public ResponseEntity<List<CourseDto>> findAll(@RequestParam LanguageTypeDto lang, - @RequestParam ProficiencyLevelDto prof) { + @RequestParam ProficiencyLevelDto prof) { List<CourseDto> courses = courseFacade.findAll(lang, prof); return ResponseEntity.ok(courses); } @@ -188,8 +188,8 @@ public class CourseController { @ApiResponse(code = 200, message = "Successfully expelled student from course"), @ApiResponse(code = 404, message = "Course not found") }) - public ResponseEntity<CourseDto> expel(@PathVariable Long id, @RequestBody UserDto student) { - CourseDto updatedCourse = courseFacade.expel(id, student); + public ResponseEntity<CourseDto> expel(@PathVariable Long id, @RequestParam Long studentId) { + CourseDto updatedCourse = courseFacade.expel(id, studentId); return ResponseEntity.ok(updatedCourse); } diff --git a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/course/CourseFacade.java b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/course/CourseFacade.java index dba3056b203a76632fa11943d512f7c68d3e5901..7640ae2653bd40b331dcb48623eb90188c15777e 100644 --- a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/course/CourseFacade.java +++ b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/course/CourseFacade.java @@ -4,7 +4,6 @@ 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.UserDto; import org.fuseri.modulelanguageschool.user.UserMapper; import org.fuseri.modulelanguageschool.user.UserService; import org.springframework.beans.factory.annotation.Autowired; @@ -71,7 +70,8 @@ public class CourseFacade { return courseMapper.mapToDto(courseService.enrol(id, student)); } - public CourseDto expel(Long id, UserDto student) { - return courseMapper.mapToDto(courseService.expel(id, userMapper.fromDto(student))); + public CourseDto expel(Long id, Long studentId) { + var student = userService.find(studentId); + return courseMapper.mapToDto(courseService.expel(id, student)); } } diff --git a/application/module-language-school/src/test/java/org/fuseri/modulelanguageschool/course/CourseControllerTest.java b/application/module-language-school/src/test/java/org/fuseri/modulelanguageschool/course/CourseControllerTest.java index 9aeca9f70e9c027d6ed34b4eaa61f7f2d90e0e8e..7e1cde9faa897cf91a0dd76b518b69431471d797 100644 --- a/application/module-language-school/src/test/java/org/fuseri/modulelanguageschool/course/CourseControllerTest.java +++ b/application/module-language-school/src/test/java/org/fuseri/modulelanguageschool/course/CourseControllerTest.java @@ -21,8 +21,6 @@ import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -116,7 +114,7 @@ public class CourseControllerTest { @Test void findAllWithoutPage() throws Exception { mockMvc.perform(get("/courses/findAll")) - .andExpect(status().is4xxClientError()); + .andExpect(status().is5xxServerError()); } @@ -130,12 +128,13 @@ public class CourseControllerTest { .param("lang", lang.toString())) .andExpect(status().isOk()) .andReturn().getResponse().getContentAsString(); - assertTrue(response.endsWith("[]")); } + assertTrue(response.endsWith("[]")); + } @Test void findAllByLangWithoutLang() throws Exception { mockMvc.perform(get("/courses/findAllByLang")) - .andExpect(status().is4xxClientError()); + .andExpect(status().is5xxServerError()); } @Test @@ -154,14 +153,14 @@ public class CourseControllerTest { @Test void findAllByLangProfWithoutParameters() throws Exception { mockMvc.perform(get("/courses/findAllByLangProf")) - .andExpect(status().is4xxClientError()); + .andExpect(status().is5xxServerError()); } @Test void findAllByLangProfWithoutLangProf() throws Exception { String page = "0"; mockMvc.perform(get("/courses/findAllByLangProf").param("page", page)) - .andExpect(status().is4xxClientError()); + .andExpect(status().is5xxServerError()); } @Test @@ -229,7 +228,7 @@ public class CourseControllerTest { @Test void enrolCourseWithoutUserParameter() throws Exception { mockMvc.perform(patch("/courses/enrol/" + 0L)) - .andExpect(status().is4xxClientError()); + .andExpect(status().is5xxServerError()); } @Test @@ -247,14 +246,14 @@ public class CourseControllerTest { void expelCourse() throws Exception { Long id = 0L; Mockito.when(courseFacade.expel(ArgumentMatchers.eq(id), - ArgumentMatchers.isA(UserDto.class))) + ArgumentMatchers.isA(Long.class))) .thenReturn(courseDto); UserDto student = new UserDto("novakovat", "novakova@gamil.com", "Tereza", "Nováková", new AddressDto(), UserType.STUDENT); + student.setId(0L); - mockMvc.perform(patch("/courses/expel/" + id) - .content(asJsonString(student)) + mockMvc.perform(patch("/courses/expel/" + id + "?studentId=" + student.getId()) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(jsonPath("$.name").value("english b2 course")) @@ -267,7 +266,7 @@ public class CourseControllerTest { @Test void expelCourseWithoutUserParameter() throws Exception { mockMvc.perform(patch("/courses/expel/" + 0L)) - .andExpect(status().is4xxClientError()); + .andExpect(status().is5xxServerError()); } @Test 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 index e0653ae4ea65e4d524531dc187346e81a5b57ed0..11cc6485699ed3653a64ae3d7458f34751cbce38 100644 --- 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 @@ -9,7 +9,7 @@ import org.fuseri.model.dto.user.AddressDto; import org.fuseri.model.dto.user.UserDto; import org.fuseri.model.dto.user.UserType; import org.fuseri.modulelanguageschool.user.User; -import org.fuseri.modulelanguageschool.user.UserMapper; +import org.fuseri.modulelanguageschool.user.UserService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; @@ -58,7 +58,7 @@ final class CourseFacadeTest { private CourseMapper courseMapper; @MockBean - private UserMapper userMapper; + private UserService userService; @Test void create() { @@ -142,15 +142,14 @@ final class CourseFacadeTest { void testExpel() { Long id = 0L; when(courseMapper.mapToDto(course)).thenReturn(courseDto); - when(userMapper.fromDto(USER)).thenReturn(user); + when(userService.find(0L)).thenReturn(user); when(courseService.expel(anyLong(), any(User.class))).thenReturn(course); - CourseDto actualDto = courseFacade.expel(id, USER); + CourseDto actualDto = courseFacade.expel(id, 0L); assertNotNull(actualDto); assertEquals(courseDto, actualDto); } - }