-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathEmailServiceImplTestEmail.java
More file actions
118 lines (96 loc) · 4.25 KB
/
Copy pathEmailServiceImplTestEmail.java
File metadata and controls
118 lines (96 loc) · 4.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package com.SleepUp.SU.utils;
import com.SleepUp.SU.accommodation.entity.Accommodation;
import com.SleepUp.SU.reservation.entity.Reservation;
import com.SleepUp.SU.user.entity.User;
import com.SleepUp.SU.utils.email.EmailServiceImpl;
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.mail.javamail.JavaMailSender;
import org.thymeleaf.context.Context;
import org.thymeleaf.spring6.SpringTemplateEngine;
import java.math.BigDecimal;
import java.time.LocalDate;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class EmailServiceImplTestEmail {
@Mock
private JavaMailSender mailSender;
@Mock
private SpringTemplateEngine templateEngine;
@InjectMocks
private EmailServiceImpl emailService;
@Mock
private MimeMessage mimeMessage;
private User owner;
private User guest;
private Accommodation accommodation;
private Reservation reservation;
@BeforeEach
public void setUp() {
MockitoAnnotations.openMocks(this);
when(mailSender.createMimeMessage()).thenReturn(mimeMessage);
when(templateEngine.process(any(String.class), any(Context.class))).thenReturn("<html>Test Email Content</html>");
owner = new User();
owner.setName("Owner User");
owner.setEmail("sleepup.backend@gmail.com");
guest = new User();
guest.setName("Guest User");
guest.setEmail("sleepup.backend@gmail.com");
accommodation = new Accommodation();
accommodation.setName("Seaside Villa");
accommodation.setLocation("Beach City");
accommodation.setManagedBy(owner);
reservation = new Reservation();
reservation.setUser(guest);
reservation.setAccommodation(accommodation);
reservation.setCheckInDate(LocalDate.now().plusDays(10));
reservation.setCheckOutDate(LocalDate.now().plusDays(15));
reservation.setTotalPrice(new BigDecimal("1200.00"));
}
@Test
public void sendWelcomeEmail_validUser_shouldSendMimeMessage() throws MessagingException {
emailService.sendWelcomeEmail(guest);
verify(mailSender).send(any(MimeMessage.class));
}
@Test
public void sendOwnerReservedNotification_validReservation_shouldSendMimeMessage() throws MessagingException {
emailService.sendOwnerReservedNotification(reservation);
verify(mailSender).send(any(MimeMessage.class));
}
@Test
public void sendGuestReservationConfirmationEmail_validReservation_shouldSendMimeMessage() throws MessagingException {
emailService.sendGuestReservationConfirmationEmail(reservation, new BigDecimal("100.00"));
verify(mailSender).send(any(MimeMessage.class));
}
@Test
public void sendGuestReservationReminderEmail_validReservation_shouldSendMimeMessage() throws MessagingException {
emailService.sendGuestReservationReminderEmail(reservation);
verify(mailSender).send(any(MimeMessage.class));
}
@Test
public void sendOwnerReservationReminderEmail_validReservation_shouldSendMimeMessage() throws MessagingException {
emailService.sendOwnerReservationReminderEmail(reservation);
verify(mailSender).send(any(MimeMessage.class));
}
@Test
public void sendCancellationConfirmationEmail_validReservation_shouldSendMimeMessage() throws MessagingException {
emailService.sendCancellationConfirmationEmail(reservation);
verify(mailSender).send(any(MimeMessage.class));
}
@Test
public void sendCancellationByOwnerNotificationEmail_validReservation_shouldSendMimeMessage() throws MessagingException {
emailService.sendCancellationByOwnerNotificationEmail(reservation);
verify(mailSender).send(any(MimeMessage.class));
}
@Test
public void sendCancellationNotificationToOwnerEmail_validReservation_shouldSendMimeMessage() throws MessagingException {
emailService.sendCancellationNotificationToOwnerEmail(reservation);
verify(mailSender).send(any(MimeMessage.class));
}
}