64 lines
1.9 KiB
Java
64 lines
1.9 KiB
Java
package de.rwu.easydrop.service.writer;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
import static org.mockito.Mockito.verify;
|
|
import static org.mockito.Mockito.verifyNoInteractions;
|
|
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.mockito.Mock;
|
|
import org.mockito.MockitoAnnotations;
|
|
|
|
import de.rwu.easydrop.api.dto.TransactionDTO;
|
|
import de.rwu.easydrop.data.connector.TransactionPersistenceInterface;
|
|
import de.rwu.easydrop.exception.InvalidTransactionException;
|
|
import de.rwu.easydrop.model.Transaction;
|
|
import de.rwu.easydrop.service.mapping.TransactionMapper;
|
|
|
|
class TransactionWriterTest {
|
|
|
|
@Mock
|
|
private TransactionPersistenceInterface persistence;
|
|
|
|
private TransactionWriter writer;
|
|
|
|
@BeforeEach
|
|
void setUp() {
|
|
MockitoAnnotations.openMocks(this);
|
|
writer = new TransactionWriter(persistence);
|
|
}
|
|
|
|
@Test
|
|
void writeTXToPersistence_ValidTransaction_TransactionSaved() {
|
|
// Arrange
|
|
Transaction transaction = new Transaction();
|
|
transaction.setOfferId("123");
|
|
transaction.setVolume(123f);
|
|
transaction.setEarnings(12.23);
|
|
transaction.setTransactionTime("2020-01-01 00:00:00");
|
|
|
|
TransactionDTO expectedDTO = TransactionMapper.mapTXToDTO(transaction);
|
|
|
|
// Act
|
|
writer.writeTXToPersistence(transaction);
|
|
|
|
// Assert
|
|
verify(persistence).writeTX(expectedDTO);
|
|
}
|
|
|
|
@Test
|
|
void writeTXToPersistence_InvalidTransaction_ValidationExceptionThrown() {
|
|
// Arrange
|
|
Transaction transaction = new Transaction();
|
|
transaction.setVolume(123f);
|
|
transaction.setEarnings(12.23);
|
|
transaction.setTransactionTime("2020-01-01 00:00:00");
|
|
|
|
// Act & Assert
|
|
assertThrows(InvalidTransactionException.class, () -> writer.writeTXToPersistence(transaction));
|
|
|
|
// Verify that persistence.writeTX is not called
|
|
verifyNoInteractions(persistence);
|
|
}
|
|
}
|