diff --git a/src/test/java/cz/cvut/fit/tjv/seidlpet/semestralka/controller/TeacherControllerTest.java b/src/test/java/cz/cvut/fit/tjv/seidlpet/semestralka/controller/TeacherControllerTest.java index 9b3f30b26ec90f09ea7275f5b39a76627a6c42e0..363af9b2ca05aa66b03483c746187ee765bd2bc1 100644 --- a/src/test/java/cz/cvut/fit/tjv/seidlpet/semestralka/controller/TeacherControllerTest.java +++ b/src/test/java/cz/cvut/fit/tjv/seidlpet/semestralka/controller/TeacherControllerTest.java @@ -18,6 +18,7 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Optional; @@ -61,16 +62,65 @@ class TeacherControllerTest { @Test void findAll() throws Exception { + // Testing no parameters List<Teacher> teachers = Arrays.asList( - new Teacher(1,"Ted","Get"), - new Teacher(2,"Ned","Fes") + new Teacher(1,"Ted","Brown"), + new Teacher(2,"Ted","White"), + new Teacher(3,"Ned","Fes"), + new Teacher(4,"John","Black"), + new Teacher(5,"Peter","Black") ); BDDMockito.given(teacherService.findAll()).willReturn(teachers); mvc.perform(MockMvcRequestBuilders.get("/api/v1/teacher") .contentType(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andExpect(MockMvcResultMatchers.jsonPath("$.*.id").exists()); - Assertions.assertEquals(teachers,teacherController.findAll()); + Assertions.assertEquals(teachers,teacherController.findAll(null,null)); + + // Testing first & last name parameter + List<Teacher> teacher = Collections.singletonList( + new Teacher(3, "Ned", "Fes") + ); + BDDMockito.given(teacherService.findByFirstNameAndLastName("Ned","Fes")).willReturn(teacher); + mvc.perform(MockMvcRequestBuilders.get("/api/v1/teacher?firstName=Ned&lastName=Fes") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.jsonPath( + "$.*.firstName",CoreMatchers.equalTo( + Collections.singletonList("Ned")))) + .andExpect(MockMvcResultMatchers.jsonPath( + "$.*.lastName",CoreMatchers.equalTo( + Collections.singletonList("Fes")))); + Assertions.assertEquals(teacher,teacherController.findAll("Ned","Fes")); + + // Testing first name prameter + List<Teacher> tedTeachers = Arrays.asList( + new Teacher(1,"Ted","Brown"), + new Teacher(2,"Ted","White") + ); + BDDMockito.given(teacherService.findAllByFirstName("Ted")).willReturn(tedTeachers); + mvc.perform(MockMvcRequestBuilders.get("/api/v1/teacher?firstName=Ted") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.jsonPath( + "$.*.firstName",CoreMatchers.equalTo(Arrays.asList("Ted","Ted"))) + ); + Assertions.assertEquals(tedTeachers,teacherController.findAll("Ted",null)); + + // Testing last name parameter + List<Teacher> blackTeachers = Arrays.asList( + new Teacher(4,"John","Black"), + new Teacher(5,"Peter","Black") + ); + BDDMockito.given(teacherService.findAllByLastName("Black")).willReturn(blackTeachers); + mvc.perform(MockMvcRequestBuilders.get("/api/v1/teacher?lastName=Black") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.jsonPath( + "$.*.lastName", + CoreMatchers.equalTo(Arrays.asList("Black","Black")))); + Assertions.assertEquals(blackTeachers,teacherController.findAll(null,"Black")); + Mockito.verify(teacherService,Mockito.atLeastOnce()).findAll(); }