75 lines
2.7 KiB
Java
75 lines
2.7 KiB
Java
package de.financer.task;
|
|
|
|
import de.financer.config.FinancerConfig;
|
|
import de.financer.model.Account;
|
|
import de.financer.model.RecurringTransaction;
|
|
import de.financer.service.RecurringTransactionService;
|
|
import org.junit.Assert;
|
|
import org.junit.Test;
|
|
import org.junit.runner.RunWith;
|
|
import org.mockito.InjectMocks;
|
|
import org.mockito.Mock;
|
|
import org.mockito.Mockito;
|
|
import org.mockito.junit.MockitoJUnitRunner;
|
|
import org.springframework.mail.SimpleMailMessage;
|
|
import org.springframework.mail.javamail.JavaMailSender;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.Collection;
|
|
import java.util.Collections;
|
|
|
|
@RunWith(MockitoJUnitRunner.class)
|
|
public class SendRecurringTransactionReminderTaskTest {
|
|
@InjectMocks
|
|
private SendRecurringTransactionReminderTask classUnderTest;
|
|
|
|
@Mock
|
|
private RecurringTransactionService recurringTransactionService;
|
|
|
|
@Mock
|
|
private JavaMailSender mailSender;
|
|
|
|
@Mock
|
|
private FinancerConfig financerConfig;
|
|
|
|
@Test
|
|
public void test_sendReminder() {
|
|
// Arrange
|
|
final Collection<RecurringTransaction> recurringTransactions = Arrays.asList(
|
|
createRecurringTransaction("Test booking 1", "Income", "accounts.bank", Long.valueOf(250000), true),
|
|
createRecurringTransaction("Test booking 2", "Bank", "accounts.rent", Long.valueOf(41500), true),
|
|
createRecurringTransaction("Test booking 3", "Bank", "accounts.cash", Long.valueOf(5000), true),
|
|
createRecurringTransaction("Test booking 4", "Car", "accounts.car", Long.valueOf(1234), false)
|
|
);
|
|
|
|
Mockito.when(this.recurringTransactionService.getAllDueToday()).thenReturn(recurringTransactions);
|
|
Mockito.when(this.financerConfig.getMailRecipients()).thenReturn(Collections.singletonList("test@test.com"));
|
|
|
|
// Act
|
|
this.classUnderTest.sendReminder();
|
|
|
|
// Assert
|
|
Mockito.verify(this.mailSender, Mockito.times(1)).send(Mockito.any(SimpleMailMessage.class));
|
|
}
|
|
|
|
private RecurringTransaction createRecurringTransaction(String description, String fromAccountKey, String toAccountKey, Long amount, boolean remind) {
|
|
final RecurringTransaction recurringTransaction = new RecurringTransaction();
|
|
|
|
recurringTransaction.setDescription(description);
|
|
recurringTransaction.setFromAccount(createAccount(fromAccountKey));
|
|
recurringTransaction.setToAccount(createAccount(toAccountKey));
|
|
recurringTransaction.setAmount(amount);
|
|
recurringTransaction.setRemind(remind);
|
|
|
|
return recurringTransaction;
|
|
}
|
|
|
|
private Account createAccount(String key) {
|
|
final Account account = new Account();
|
|
|
|
account.setKey(key);
|
|
|
|
return account;
|
|
}
|
|
}
|