@Test public void testImportStudents() throws Exception { // Given StudentDirectoryServiceImpl studentDirectoryService = new StudentDirectoryServiceImpl(); StudentDAO studentDAO = mock(StudentDAO.class); studentDirectoryService.setStudentDAO(studentDAO); MultipartFile multipartFile = mock(MultipartFile.class); StringBuffer buffer = new StringBuffer(); buffer.append("Bart, Simpson\n"); buffer.append("Lisa, Simpson"); InputStream stream = new ByteArrayInputStream(buffer.toString().getBytes(StandardCharsets.UTF_8)); when(multipartFile.getInputStream()).thenReturn(stream); // When studentDirectoryService.importStudents(multipartFile); // Then ArgumentCaptor<Student> studentCaptor = ArgumentCaptor.forClass(Student.class); verify(studentDAO, times(2)).createStudent(studentCaptor.capture()); assertEquals("Bart", studentCaptor.getAllValues().get(0).getFirstName()); assertEquals("Simpson", studentCaptor.getAllValues().get(0).getLastName()); assertEquals("Lisa", studentCaptor.getAllValues().get(1).getFirstName()); assertEquals("Simpson", studentCaptor.getAllValues().get(1).getLastName()); }
@Test public void testImportStudents_exception() throws Exception { // Given StudentDirectoryServiceImpl studentDirectoryService = new StudentDirectoryServiceImpl(); Logger logger = mock(Logger.class); studentDirectoryService.setLogger(logger); StudentDAO studentDAO = mock(StudentDAO.class); studentDirectoryService.setStudentDAO(studentDAO); MultipartFile multipartFile = mock(MultipartFile.class); IOException exception = new IOException("This is a dummy IOException."); when(multipartFile.getInputStream()).thenThrow(exception); // When studentDirectoryService.importStudents(multipartFile); // Then ArgumentCaptor<String> errorCaptor = ArgumentCaptor.forClass(String.class); verify(logger, times(1)).error(errorCaptor.capture()); assertEquals(exception, errorCaptor.getValue()); }
@Test public void testFetchAllStudents_happypath() { // Given StudentDirectoryServiceImpl studentDirectoryService = new StudentDirectoryServiceImpl(); StudentDAO studentDAO = mock(StudentDAO.class); studentDirectoryService.setStudentDAO(studentDAO); List<Student> testStudents = new ArrayList<Student>(); Student testStudent1 = new Student(); testStudent1.setFirstName("Michael"); testStudent1.setLastName("Bluth"); testStudents.add(testStudent1); Student testStudent2 = new Student(); testStudent2.setFirstName("Lindsay"); testStudent2.setLastName("Bluth"); testStudents.add(testStudent2); when(studentDAO.fetchAllStudents()).thenReturn(testStudents); // When List<Student> students = studentDirectoryService.fetchAllStudents(); // Then assertNotNull(students); assertEquals(2, students.size()); assertEquals("Michael", students.get(0).getFirstName()); assertEquals("Lindsay", students.get(1).getFirstName()); }
@Test public void testUpdateStudent_happypath() { // Given StudentDirectoryServiceImpl studentDirectoryService = new StudentDirectoryServiceImpl(); StudentDAO studentDAO = mock(StudentDAO.class); studentDirectoryService.setStudentDAO(studentDAO); Student testStudent = new Student(); testStudent.setFirstName("Michael"); testStudent.setLastName("Bluth"); // When studentDirectoryService.updateStudent(testStudent); // Then ArgumentCaptor<Student> studentCaptor = ArgumentCaptor.forClass(Student.class); verify(studentDAO, times(1)).updateStudent(studentCaptor.capture()); assertEquals("Michael", studentCaptor.getValue().getFirstName()); assertEquals("Bluth", studentCaptor.getValue().getLastName()); }