package de.rwu.easydrop.service.processing; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; 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.model.Offer; import de.rwu.easydrop.model.Product; import de.rwu.easydrop.model.Transaction; import de.rwu.easydrop.service.mapping.TransactionMapper; class TransactionHandlerTest { @Mock private TransactionPersistenceInterface mockPersistence; public TransactionHandlerTest() { MockitoAnnotations.openMocks(this); } @Test void turnOfferToTransaction_ValidOffer_TransactionCreatedAndWrittenToPersistence() { // Arrange Offer offer = new Offer(); Product product = new Product(); offer.setSourceProduct(product); offer.setTargetProduct(product); TransactionHandler handler = new TransactionHandler(mockPersistence); // Act handler.turnOfferToTransaction(offer); // Assert ArgumentCaptor transactionDtoCaptor = ArgumentCaptor.forClass(TransactionDTO.class); verify(mockPersistence, times(1)).writeTX(transactionDtoCaptor.capture()); TransactionDTO capturedTransactionDto = transactionDtoCaptor.getValue(); Transaction capturedTransaction = TransactionMapper.mapTXFromDTO(capturedTransactionDto); assertEquals(offer.getOfferId(), capturedTransaction.getOfferId()); } }