Files
financer/financer-server/src/test/java/de/financer/task/SendRecurringTransactionReminderTaskTest.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;
}
}