Files
EasyDrop/src/test/java/de/rwu/easydrop/service/writer/OfferWriterTest.java
2023-06-27 19:44:30 +02:00

79 lines
1.8 KiB
Java

package de.rwu.easydrop.service.writer;
import static org.mockito.ArgumentMatchers.any;
import static org.junit.jupiter.api.Assertions.assertThrows;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import de.rwu.easydrop.api.dto.OfferDTO;
import de.rwu.easydrop.data.connector.OfferPersistenceInterface;
import de.rwu.easydrop.model.Offer;
import de.rwu.easydrop.model.Product;
import de.rwu.easydrop.model.Webshop;
class OfferWriterTest {
@Mock
private OfferDTO offerDTO;
@Mock
private OfferPersistenceInterface persistence;
private OfferWriter offerWriter;
@BeforeEach
public void setup() {
MockitoAnnotations.openMocks(this);
offerWriter = new OfferWriter(persistence);
}
@Test
void writeOfferToPersistence_InvalidProduct_ThrowsException() {
//Arrange
Offer offer = new Offer();
offer.setOfferId("");
offer.setLastUpdate("");
//Act and Assert
assertThrows(Exception.class, () -> offerWriter.writeOfferToPersistence(offer));
}
@Test
void writeOfferToPresistence_ValidProduct_CallsSaveProduct(){
// Arrange
Product product = new Product();
product.setProductId("12345");
product.setDataOrigin(Webshop.AMAZON);
product.setCurrentPrice(9.99);
// Arrange
Offer offer = new Offer();
offer.setOfferId("26876");
offer.setLastUpdate("2022-12-25");
offer.setSourceProduct(product);
offer.setTargetProduct(product);
// Act
offerWriter.writeOfferToPersistence(offer);
// Assert
Mockito.verify(persistence).writeOffer(any(OfferDTO.class));
}
}