Skip to content
Snippets Groups Projects
Commit 0c54d20b authored by xmajdan's avatar xmajdan
Browse files

Add tests

parent 62f7010a
No related branches found
No related tags found
No related merge requests found
...@@ -90,4 +90,18 @@ class CourseEnrollmentServiceTest { ...@@ -90,4 +90,18 @@ class CourseEnrollmentServiceTest {
assertEquals(expectedValue, result); assertEquals(expectedValue, result);
} }
@Test
void findByCourseAndStudent_validIds_returnsCourseEnrollment() {
CourseEnrollment expectedCourseEnrollment = TestDataFactory.getCourseEnrollment();
UUID courseId = expectedCourseEnrollment.getCourse().getId();
UUID studentId = expectedCourseEnrollment.getStudentId();
when(courseEnrollmentRepository.findByCourseIdAndStudentId(courseId, studentId))
.thenReturn(Optional.of(expectedCourseEnrollment));
CourseEnrollment result = courseEnrollmentService.findByCourseAndStudent(courseId, studentId);
assertEquals(expectedCourseEnrollment, result);
}
} }
...@@ -47,9 +47,9 @@ public class EmailRestController { ...@@ -47,9 +47,9 @@ public class EmailRestController {
) )
public ResponseEntity<String> sendFileViaEmail(@Valid @RequestParam String toEmail, public ResponseEntity<String> sendFileViaEmail(@Valid @RequestParam String toEmail,
@Valid @RequestParam String body, @Valid @RequestParam String body,
@Valid @RequestParam MultipartFile file MultipartFile file
) { ) {
if (toEmail.isEmpty() || body.isEmpty() || file == null) { if (toEmail.isEmpty() || body.isEmpty()) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Missing required parameters."); return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Missing required parameters.");
} }
try { try {
......
...@@ -9,11 +9,16 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -9,11 +9,16 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MockMvc;
import org.springframework.web.multipart.MultipartFile;
import static org.hamcrest.Matchers.containsString;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest(EmailRestController.class) @WebMvcTest(EmailRestController.class)
...@@ -43,4 +48,23 @@ class EmailRestControllerTest { ...@@ -43,4 +48,23 @@ class EmailRestControllerTest {
verify(emailFacade, times(1)).sendCourseAdEmail(toEmail); verify(emailFacade, times(1)).sendCourseAdEmail(toEmail);
} }
@Test
void sendCourseAdEmail_invalidEmailFormat_returnsBadRequest() throws Exception {
String invalidEmail = ""; // Invalid email format
mockMvc.perform(post("/emails/ad/")
.contentType(MediaType.APPLICATION_JSON)
.param("toEmail", invalidEmail))
.andExpect(status().isBadRequest());
}
@Test
void sendCourseViaEmail_errorHappens_returnsBadRequest() throws Exception {
String toEmail = "valdobaldo@fi.muni.cz";
doThrow(new RuntimeException("Email sending failed")).when(emailFacade).sendCourseAdEmail(toEmail);
mockMvc.perform(post("/emails/ad/")
.contentType(MediaType.APPLICATION_JSON)
.param("toEmail", toEmail))
.andExpect(status().isInternalServerError());
}
} }
package cz.muni.fi.email.service; package cz.muni.fi.email.service;
import cz.muni.fi.commons.dto.course.CourseDto; import cz.muni.fi.commons.dto.course.CourseDto;
import cz.muni.fi.email.exception.EmailException;
import cz.muni.fi.email.factory.TestDataFactory; import cz.muni.fi.email.factory.TestDataFactory;
import jakarta.mail.internet.MimeMessage; import jakarta.mail.internet.MimeMessage;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
...@@ -8,15 +9,22 @@ import org.junit.jupiter.api.extension.ExtendWith; ...@@ -8,15 +9,22 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.core.io.FileSystemResource;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.multipart.MultipartFile;
import org.thymeleaf.ITemplateEngine; import org.thymeleaf.ITemplateEngine;
import org.thymeleaf.context.Context; import org.thymeleaf.context.Context;
import java.io.File;
import java.util.List; import java.util.List;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.any; import static org.mockito.Mockito.any;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
...@@ -56,4 +64,21 @@ class EmailServiceTest { ...@@ -56,4 +64,21 @@ class EmailServiceTest {
verify(mockMailSender, times(1)).createMimeMessage(); // Ensure createMimeMessage is called verify(mockMailSender, times(1)).createMimeMessage(); // Ensure createMimeMessage is called
verify(mockMailSender, times(1)).send(any(MimeMessage.class)); // Ens verify(mockMailSender, times(1)).send(any(MimeMessage.class)); // Ens
} }
@Test
void sendCourseAdEmail_InvalidInput_EmailNotSent() {
String toEmail = "example@example.com";
List<CourseDto> courses = List.of(TestDataFactory.createSampleCourseDto());
MimeMessage mimeMessage = mock(MimeMessage.class);
when(mockMailSender.createMimeMessage()).thenReturn(mimeMessage);
when(mockCourseApiService.findAllCourses(any(Pageable.class))).thenReturn(courses);
when(mockThymeleafTemplateEngine.process(eq("course_ad_template.html"), any(Context.class)))
.thenThrow(RuntimeException.class);
assertThrows(Exception.class, () -> {
emailService.sendCourseAdEmail(toEmail);
});
}
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment