diff --git a/src/test/java/com/id/ui/cs/deadliners/projectpage/controller/CommentControllerTest.java b/src/test/java/com/id/ui/cs/deadliners/projectpage/controller/CommentControllerTest.java index 5faeee9076862aecdb804f71fac5974b4882cb89..1e97f9c4f974bec70db0f3254549a0d1b460a73b 100644 --- a/src/test/java/com/id/ui/cs/deadliners/projectpage/controller/CommentControllerTest.java +++ b/src/test/java/com/id/ui/cs/deadliners/projectpage/controller/CommentControllerTest.java @@ -5,9 +5,10 @@ import com.id.ui.cs.deadliners.appuser.model.appuser.AppUser; import com.id.ui.cs.deadliners.appuser.model.appuser.AppUserDetails; import com.id.ui.cs.deadliners.appuser.model.appuser.AppUserRole; import com.id.ui.cs.deadliners.appuser.service.AppUserService; -import com.id.ui.cs.deadliners.projectpage.model.Comment; +import com.id.ui.cs.deadliners.projectpage.model.Forum; import com.id.ui.cs.deadliners.projectpage.model.dto.CommentRequestDTO; import com.id.ui.cs.deadliners.projectpage.service.CommentServiceImpl; +import com.id.ui.cs.deadliners.projectpage.service.ForumServiceImpl; import com.id.ui.cs.deadliners.projects.model.Project; import com.id.ui.cs.deadliners.projects.service.ProjectServiceImpl; import org.junit.jupiter.api.BeforeEach; @@ -21,16 +22,14 @@ import org.springframework.test.web.servlet.MockMvc; import java.util.ArrayList; import java.util.Date; -import java.util.List; import static org.mockito.Mockito.lenient; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; - import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; @WebMvcTest(controllers = CommentController.class) class CommentControllerTest { @@ -40,11 +39,8 @@ class CommentControllerTest { @MockBean private CommentServiceImpl commentService; - private AppUserDetails user; - - private AppUser appUser; - - private CommentRequestDTO crd; + @MockBean + private ForumServiceImpl forumService; @MockBean private ProjectServiceImpl projectService; @@ -52,68 +48,79 @@ class CommentControllerTest { @MockBean private AppUserService appUserService; - @MockBean - private CommentController commentController; - @MockBean private BCryptPasswordEncoder bCryptPasswordEncoder; + private AppUser appUser; + + private AppUserDetails user; + + private Project project = new Project(); + + private Forum forum = new Forum(); + @BeforeEach void setUp() { appUser = new AppUser(); - appUser.setFirstName("Indra"); appUser.setLastName("Mahaarta"); - appUser.setPassword("Indra"); - appUser.setAppUserRole(AppUserRole.USER); appUser.setEmail("official.indramahaarta@gmail.com"); - appUser.setId(Long.parseLong("1")); + appUser.setPassword("indra"); + appUser.setAppUserRole(AppUserRole.USER); user = new AppUserDetails(appUser); - List<Comment> commentList = new ArrayList<>(); - Comment c = new Comment(); - c.setForumId(Long.parseLong("22")); - c.setCommentId(Long.parseLong("1")); - c.setProjectId(Long.parseLong("144")); - c.setCreator(appUser); - c.setContent("Keren"); - c.setCreateAt(new Date()); + long idProject = 114; + long idForum = 22; + + forum.setForumId(idForum); + forum.setProjectId(idProject); + forum.setCreatorForum(appUser); + forum.setTitleForum("Keren"); + forum.setContentForum("Keren"); + forum.setCreateAt(new Date()); + + project.setId(idProject); + project.setAdmin(appUser); + project.setName("keren"); + project.setDescription("keren"); + project.setCreateAt(new Date()); + + lenient().when(projectService.getProject(idProject)).thenReturn(project); + lenient().when(forumService.getForumById(idForum)).thenReturn(forum); + lenient().when(commentService.getComment(idForum)).thenReturn(new ArrayList<>()); + lenient().when(appUserService.getUser(appUser.getEmail())).thenReturn(appUser); + } + + @Test + void testDetailForum() throws Exception { + mockMvc.perform(get("/project/114/22").with(user(user))) + .andExpect(status().isOk()) + .andExpect(handler().methodName("detailForum")) + .andExpect(model().attributeExists("idProject")) + .andExpect(model().attributeExists("idForum")) + .andExpect(model().attributeExists("dto")) + .andExpect(model().attributeExists("project")) + .andExpect(model().attributeExists("forum")) + .andExpect(model().attributeExists("comments")) + .andExpect(view().name("project-page/detail_forum")); + } - commentList.add(c); + @Test + void saveComment() throws Exception { + ObjectMapper mapper = new ObjectMapper(); - Project p = new Project(); - p.setId(Long.parseLong("1")); - p.setName("Keren"); + CommentRequestDTO crd = new CommentRequestDTO(); + crd.setIdProject((long) 114); + crd.setIdForum((long) 22); + crd.setEmailCreator(appUser.getEmail()); + crd.setCreateAt(new Date()); + crd.setContent("Keren"); + crd.setId((long) 1); - crd = new CommentRequestDTO(); - lenient().when(projectService.getProject(Long.parseLong("144"))).thenReturn(p); - lenient().when(commentService.getComment(Long.parseLong("22"))).thenReturn(commentList); - lenient().when(commentService.saveComment(crd)).thenReturn("gg gaming"); + mockMvc.perform(post("/project/144/22/save").with(csrf()).with(user(user)) + .contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE).content(mapper.writeValueAsString(crd))) + .andExpect(status().is3xxRedirection()); } - -// @Test -// void testDetailForum() throws Exception { -// -// mockMvc.perform(get("/project/144/22").with(user(user))) -// .andExpect(status().isOk()) -// .andExpect(handler().methodName("detailForum")) -// .andExpect(model().attributeExists("idProject")) -// .andExpect(model().attributeExists("idForum")) -// .andExpect(model().attributeExists("dto")) -// .andExpect(model().attributeExists("project")) -// .andExpect(model().attributeExists("forum")) -// .andExpect(model().attributeExists("comments")) -// .andExpect(view().name("project-page/detail_forum")); -// } -// -// @Test -// void saveComment() throws Exception { -// ObjectMapper mapper = new ObjectMapper(); -// -// mockMvc.perform(post("/project/144/22/save").with(csrf()).with(user(user)) -// .contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE).content(mapper.writeValueAsString(crd))) -// .andExpect(status().is3xxRedirection()); -// } -} +} \ No newline at end of file diff --git a/src/test/java/com/id/ui/cs/deadliners/projectpage/controller/ForumControllerTest.java b/src/test/java/com/id/ui/cs/deadliners/projectpage/controller/ForumControllerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..37b4eb05cf29bda1fa60b81dc53b2e62ddb94aa9 --- /dev/null +++ b/src/test/java/com/id/ui/cs/deadliners/projectpage/controller/ForumControllerTest.java @@ -0,0 +1,82 @@ +package com.id.ui.cs.deadliners.projectpage.controller; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.id.ui.cs.deadliners.appuser.model.appuser.AppUser; +import com.id.ui.cs.deadliners.appuser.model.appuser.AppUserDetails; +import com.id.ui.cs.deadliners.appuser.model.appuser.AppUserRole; +import com.id.ui.cs.deadliners.appuser.service.AppUserService; +import com.id.ui.cs.deadliners.projectpage.model.dto.ForumRequest; +import com.id.ui.cs.deadliners.projectpage.service.ForumServiceImpl; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.test.web.servlet.MockMvc; + +import java.util.Date; + +import static org.mockito.Mockito.lenient; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +@WebMvcTest(controllers = ForumController.class) +class ForumControllerTest { + @Autowired + private MockMvc mockMvc; + + @MockBean + private ForumServiceImpl forumService; + + @MockBean + private AppUserService appUserService; + + @MockBean + private BCryptPasswordEncoder bCryptPasswordEncoder; + + private AppUser appUser; + + private AppUserDetails user; + + @BeforeEach + void setUp() { + appUser = new AppUser(); + appUser.setFirstName("Indra"); + appUser.setLastName("Mahaarta"); + appUser.setEmail("official.indramahaarta@gmail.com"); + appUser.setPassword("indra"); + appUser.setAppUserRole(AppUserRole.USER); + + user = new AppUserDetails(appUser); + } + + @Test + void testCreateForum () throws Exception { + mockMvc.perform(get("/project/114/form-forum").with(user(user))) + .andExpect(status().isOk()) + .andExpect(model().attributeExists("id")) + .andExpect(model().attributeExists("forum")) + .andExpect(view().name("project-page/form_forum")); + } + + @Test + void testSaveForum() throws Exception { + ForumRequest fr = new ForumRequest(); + fr.setCreateAtForum(new Date()); + fr.setIdProject((long) 114); + fr.setForumId((long) 22); + fr.setContentForum("Keren"); + fr.setTitleForum("Keren"); + + + ObjectMapper mapper = new ObjectMapper(); + mockMvc.perform(post("/project/144/form-forum/save").with(csrf()).with(user(user)) + .contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE).content(mapper.writeValueAsString(fr))) + .andExpect(status().is3xxRedirection()); + } +}