Updated tests accordingly
This commit is contained in:
@@ -21,6 +21,7 @@ import org.mockito.MockitoAnnotations;
|
||||
|
||||
import de.rwu.easydrop.api.dto.ProductDTO;
|
||||
import de.rwu.easydrop.exception.DataWriterException;
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
class AbstractDataWriterTest {
|
||||
private static String demoProductId = "whateverId";
|
||||
@@ -42,8 +43,8 @@ class AbstractDataWriterTest {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getDataTarget() {
|
||||
return "Test";
|
||||
protected Webshop getDataTarget() {
|
||||
return Webshop.Amazon;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -53,21 +54,10 @@ class AbstractDataWriterTest {
|
||||
};
|
||||
}
|
||||
|
||||
@Test
|
||||
void sendPutRequest_wrongDataSource_throwsException() {
|
||||
ProductDTO dto = new ProductDTO(demoProductId, "Amazon");
|
||||
|
||||
DataWriterException e = assertThrows(DataWriterException.class, () -> {
|
||||
writer.sendPutRequest(dto, "testApiType");
|
||||
});
|
||||
|
||||
assertEquals("Product data source and target testApiType API are incompatible.", e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void sendPutRequest_badResponseCode_throwsException() throws IOException {
|
||||
// Set up DTO
|
||||
ProductDTO dto = new ProductDTO(demoProductId, "Test");
|
||||
ProductDTO dto = new ProductDTO(demoProductId, Webshop.Amazon);
|
||||
|
||||
// Set up Mocks
|
||||
AbstractDataWriter mockWriter = mock(AbstractDataWriter.class);
|
||||
@@ -79,13 +69,13 @@ class AbstractDataWriterTest {
|
||||
writer.sendPutRequest(dto, "Sales");
|
||||
});
|
||||
|
||||
assertEquals("Test Sales API responded with error code 400", e.getMessage());
|
||||
assertEquals("Amazon Sales API responded with error code 400", e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void sendPutRequest_ioException_throwsException() throws IOException {
|
||||
// Set up DTO
|
||||
ProductDTO dto = new ProductDTO(demoProductId, "Test");
|
||||
ProductDTO dto = new ProductDTO(demoProductId, Webshop.Amazon);
|
||||
|
||||
// Set up Mocks
|
||||
AbstractDataWriter mockWriter = mock(AbstractDataWriter.class);
|
||||
@@ -96,13 +86,13 @@ class AbstractDataWriterTest {
|
||||
writer.sendPutRequest(dto, "testApiType");
|
||||
});
|
||||
|
||||
assertEquals("Couldn't fulfill Test API request", e.getMessage());
|
||||
assertEquals("Couldn't fulfill Amazon API request", e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void sendPutRequest_successfulRequest() throws IOException {
|
||||
// Set up DTO
|
||||
ProductDTO dto = new ProductDTO(demoProductId, "test");
|
||||
ProductDTO dto = new ProductDTO(demoProductId, Webshop.Amazon);
|
||||
|
||||
// Set up Mocks
|
||||
AbstractDataWriter mockWriter = mock(AbstractDataWriter.class);
|
||||
@@ -112,7 +102,7 @@ class AbstractDataWriterTest {
|
||||
HttpURLConnection mockConnection = mock(HttpURLConnection.class);
|
||||
when(mockURL.openConnection()).thenReturn(mockConnection);
|
||||
when(mockConnection.getResponseCode()).thenReturn(HttpURLConnection.HTTP_OK);
|
||||
when(mockWriter.getDataTarget()).thenReturn("test");
|
||||
when(mockWriter.getDataTarget()).thenReturn(Webshop.Amazon);
|
||||
|
||||
assertDoesNotThrow(() -> {
|
||||
mockWriter.sendPutRequest(dto, "Purchase");
|
||||
|
||||
@@ -13,6 +13,7 @@ import java.net.URL;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import de.rwu.easydrop.api.dto.ProductDTO;
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
class AbstractPurchaserTest {
|
||||
private AbstractPurchaser mockPurchaser = mock(AbstractPurchaser.class);
|
||||
@@ -20,7 +21,7 @@ class AbstractPurchaserTest {
|
||||
@Test
|
||||
void purchaseProduct_CorrectApiTypeInException() throws IOException {
|
||||
// Set up DTO
|
||||
ProductDTO dto = new ProductDTO("12345", "test");
|
||||
ProductDTO dto = new ProductDTO("12345", Webshop.Amazon);
|
||||
|
||||
// Set up mocks
|
||||
URL mockURL = mock(URL.class);
|
||||
@@ -29,7 +30,7 @@ class AbstractPurchaserTest {
|
||||
HttpURLConnection mockConnection = mock(HttpURLConnection.class);
|
||||
when(mockURL.openConnection()).thenReturn(mockConnection);
|
||||
when(mockConnection.getResponseCode()).thenReturn(HttpURLConnection.HTTP_OK);
|
||||
when(mockPurchaser.getDataTarget()).thenReturn("test");
|
||||
when(mockPurchaser.getDataTarget()).thenReturn(Webshop.Amazon);
|
||||
|
||||
assertDoesNotThrow(() -> {
|
||||
mockPurchaser.purchaseProduct(dto);
|
||||
|
||||
@@ -13,6 +13,7 @@ import java.net.URL;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import de.rwu.easydrop.api.dto.ProductDTO;
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
class AbstractSellerTest {
|
||||
private AbstractSeller mockSeller = mock(AbstractSeller.class);
|
||||
@@ -20,7 +21,7 @@ class AbstractSellerTest {
|
||||
@Test
|
||||
void purchaseProduct_CorrectApiTypeInException() throws IOException {
|
||||
// Set up DTO
|
||||
ProductDTO dto = new ProductDTO("12345", "test");
|
||||
ProductDTO dto = new ProductDTO("12345", Webshop.Amazon);
|
||||
|
||||
// Set up mocks
|
||||
URL mockURL = mock(URL.class);
|
||||
@@ -29,7 +30,7 @@ class AbstractSellerTest {
|
||||
HttpURLConnection mockConnection = mock(HttpURLConnection.class);
|
||||
when(mockURL.openConnection()).thenReturn(mockConnection);
|
||||
when(mockConnection.getResponseCode()).thenReturn(HttpURLConnection.HTTP_OK);
|
||||
when(mockSeller.getDataTarget()).thenReturn("test");
|
||||
when(mockSeller.getDataTarget()).thenReturn(Webshop.Amazon);
|
||||
|
||||
assertDoesNotThrow(() -> {
|
||||
mockSeller.sellProduct(dto);
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.mockito.MockitoAnnotations;
|
||||
|
||||
import de.rwu.easydrop.api.dto.ProductDTO;
|
||||
import de.rwu.easydrop.exception.DataSourceException;
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
class AmazonProductDataSourceTest {
|
||||
|
||||
@@ -28,7 +29,7 @@ class AmazonProductDataSourceTest {
|
||||
|
||||
private static String demoApiKey = "my-api-key";
|
||||
private static String demoApiUrl = "https://www.example.com/api";
|
||||
private static String demoDataOrigin = "Amazon";
|
||||
private static Webshop demoDataOrigin = Webshop.Amazon;
|
||||
private static String demoProductId = "whateverId";
|
||||
|
||||
@BeforeEach
|
||||
@@ -138,7 +139,7 @@ class AmazonProductDataSourceTest {
|
||||
|
||||
// Verify the product DTO properties
|
||||
assertEquals(demoProductId, result.getProductId());
|
||||
assertEquals("Amazon", result.getDataOrigin());
|
||||
assertEquals(Webshop.Amazon, result.getDataOrigin());
|
||||
assertEquals(true, result.isAvailable());
|
||||
assertEquals(10.0, result.getCurrentPrice());
|
||||
assertEquals(2.5, result.getDeliveryPrice());
|
||||
@@ -149,18 +150,18 @@ class AmazonProductDataSourceTest {
|
||||
void testGetProductDTOById_failedRequest() throws IOException {
|
||||
// Set up the test environment
|
||||
|
||||
AmazonProductDataSource dataSource = mock(AmazonProductDataSource.class);
|
||||
AmazonProductDataSource DataSource = mock(AmazonProductDataSource.class);
|
||||
URL mockURL = mock(URL.class);
|
||||
when(dataSource.getDataOrigin()).thenReturn(demoDataOrigin);
|
||||
when(dataSource.createApiUrl(demoProductId)).thenReturn(mockURL);
|
||||
when(dataSource.getProductDTOById(demoProductId)).thenCallRealMethod();
|
||||
when(DataSource.getDataOrigin()).thenReturn(demoDataOrigin);
|
||||
when(DataSource.createApiUrl(demoProductId)).thenReturn(mockURL);
|
||||
when(DataSource.getProductDTOById(demoProductId)).thenCallRealMethod();
|
||||
HttpURLConnection mockConnection = mock(HttpURLConnection.class);
|
||||
when(mockURL.openConnection()).thenReturn(mockConnection);
|
||||
when(mockConnection.getResponseCode()).thenReturn(HttpURLConnection.HTTP_NOT_FOUND);
|
||||
|
||||
// Invoke the method and verify the exception
|
||||
DataSourceException exception = assertThrows(DataSourceException.class, () -> {
|
||||
dataSource.getProductDTOById(demoProductId);
|
||||
DataSource.getProductDTOById(demoProductId);
|
||||
});
|
||||
|
||||
// Verify the exception message
|
||||
@@ -170,12 +171,12 @@ class AmazonProductDataSourceTest {
|
||||
@Test
|
||||
void testGetProductDTOById_ioException() throws IOException {
|
||||
// Set up the test environment
|
||||
AmazonProductDataSource dataSource = mock(AmazonProductDataSource.class);
|
||||
AmazonProductDataSource DataSource = mock(AmazonProductDataSource.class);
|
||||
URL mockURL = mock(URL.class);
|
||||
when(dataSource.getDataOrigin()).thenReturn(demoDataOrigin);
|
||||
when(dataSource.createApiUrl(demoProductId)).thenReturn(mockURL);
|
||||
when(dataSource.getProductDTOById(demoProductId)).thenCallRealMethod();
|
||||
when(dataSource.buildProductDTO(any(), anyString())).thenCallRealMethod();
|
||||
when(DataSource.getDataOrigin()).thenReturn(demoDataOrigin);
|
||||
when(DataSource.createApiUrl(demoProductId)).thenReturn(mockURL);
|
||||
when(DataSource.getProductDTOById(demoProductId)).thenCallRealMethod();
|
||||
when(DataSource.buildProductDTO(any(), anyString())).thenCallRealMethod();
|
||||
HttpURLConnection mockConnection = mock(HttpURLConnection.class);
|
||||
when(mockURL.openConnection()).thenReturn(mockConnection);
|
||||
when(mockConnection.getResponseCode()).thenReturn(HttpURLConnection.HTTP_OK);
|
||||
@@ -183,7 +184,7 @@ class AmazonProductDataSourceTest {
|
||||
|
||||
// Invoke the method and verify the exception
|
||||
DataSourceException exception = assertThrows(DataSourceException.class, () -> {
|
||||
dataSource.getProductDTOById(demoProductId);
|
||||
DataSource.getProductDTOById(demoProductId);
|
||||
});
|
||||
|
||||
// Verify the exception message
|
||||
@@ -192,7 +193,7 @@ class AmazonProductDataSourceTest {
|
||||
|
||||
@Test
|
||||
void getDataOrigin_ReturnsExpectedDataOrigin() {
|
||||
String dataOrigin = demoDataSource.getDataOrigin();
|
||||
Webshop dataOrigin = demoDataSource.getDataOrigin();
|
||||
assertEquals(demoDataOrigin, dataOrigin);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package de.rwu.easydrop.api.client;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.net.MalformedURLException;
|
||||
@@ -12,15 +11,14 @@ import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
import de.rwu.easydrop.api.dto.ProductDTO;
|
||||
import de.rwu.easydrop.exception.DataWriterException;
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
class AmazonPurchaserTest {
|
||||
private AmazonPurchaser demoPurchaser;
|
||||
|
||||
private static String demoApiKey = "my-api-key";
|
||||
private static String demoApiUrl = "https://www.example.com/api";
|
||||
private static String demoDataTarget = "Amazon";
|
||||
private static Webshop demoDataTarget = Webshop.Amazon;
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
@@ -72,7 +70,7 @@ class AmazonPurchaserTest {
|
||||
|
||||
@Test
|
||||
void getDataTarget_ReturnsExpectedDataOrigin() {
|
||||
String dataTarget = demoPurchaser.getDataTarget();
|
||||
Webshop dataTarget = demoPurchaser.getDataTarget();
|
||||
assertEquals(demoDataTarget, dataTarget);
|
||||
}
|
||||
|
||||
|
||||
@@ -11,12 +11,14 @@ import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
class AmazonSellerTest {
|
||||
private AmazonSeller demoSeller;
|
||||
|
||||
private static String demoApiKey = "my-api-key";
|
||||
private static String demoApiUrl = "https://www.example.com/api";
|
||||
private static String demoDataTarget = "Amazon";
|
||||
private static Webshop demoDataTarget = Webshop.Amazon;
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
@@ -68,7 +70,7 @@ class AmazonSellerTest {
|
||||
|
||||
@Test
|
||||
void getDataTarget_ReturnsExpectedDataOrigin() {
|
||||
String dataTarget = demoSeller.getDataTarget();
|
||||
Webshop dataTarget = demoSeller.getDataTarget();
|
||||
assertEquals(demoDataTarget, dataTarget);
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ class DataSourceFactoryTest {
|
||||
@Mock
|
||||
private Config config;
|
||||
|
||||
private DataSourceFactory dataSourceFactory;
|
||||
private DataSourceFactory DataSourceFactory;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() throws ConfigurationException {
|
||||
@@ -30,31 +30,31 @@ class DataSourceFactoryTest {
|
||||
when(config.getProperty("AMAZON_API_KEY")).thenReturn("amazon-api-key");
|
||||
when(config.getProperty("EBAY_API_URL")).thenReturn("https://api.ebay.com");
|
||||
when(config.getProperty("EBAY_API_KEY")).thenReturn("ebay-api-key");
|
||||
dataSourceFactory = new DataSourceFactory(config);
|
||||
DataSourceFactory = new DataSourceFactory(config);
|
||||
}
|
||||
|
||||
@Test
|
||||
void createAmazonProductDataSource_ReturnsAmazonProductDataSource() {
|
||||
// Act
|
||||
AmazonProductDataSource dataSource = dataSourceFactory.createAmazonProductDataSource();
|
||||
AmazonProductDataSource DataSource = DataSourceFactory.createAmazonProductDataSource();
|
||||
|
||||
// Assert
|
||||
assertEquals("amazon-api-key", dataSource.getApiKey());
|
||||
assertEquals("amazon-api-key", DataSource.getApiKey());
|
||||
}
|
||||
|
||||
@Test
|
||||
void createEbayItemDataSource_ReturnsEbayItemDataSource() {
|
||||
// Act
|
||||
EbayItemDataSource dataSource = dataSourceFactory.createEbayItemDataSource();
|
||||
EbayItemDataSource DataSource = DataSourceFactory.createEbayItemDataSource();
|
||||
|
||||
// Assert
|
||||
assertEquals("ebay-api-key", dataSource.getApiKey());
|
||||
assertEquals("ebay-api-key", DataSource.getApiKey());
|
||||
}
|
||||
|
||||
@Test
|
||||
void createProductPersistenceDataSource_NullPersistence() {
|
||||
PersistenceException exception = assertThrows(PersistenceException.class, () -> {
|
||||
dataSourceFactory.createProductPersistenceDataSource();
|
||||
DataSourceFactory.createProductPersistenceDataSource();
|
||||
});
|
||||
|
||||
assertEquals("Persistence is not set", exception.getMessage());
|
||||
@@ -62,8 +62,8 @@ class DataSourceFactoryTest {
|
||||
|
||||
@Test
|
||||
void createProductPersistenceDataSource_WorkingPersistence() {
|
||||
dataSourceFactory.setPersistence(new SQLiteConnector(new SQLiteDataSource()));
|
||||
DataSourceFactory.setPersistence(new SQLiteConnector(new SQLiteDataSource()));
|
||||
|
||||
assertDoesNotThrow(() -> dataSourceFactory.createProductPersistenceDataSource());
|
||||
assertDoesNotThrow(() -> DataSourceFactory.createProductPersistenceDataSource());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,13 +19,14 @@ import org.mockito.MockitoAnnotations;
|
||||
|
||||
import de.rwu.easydrop.api.dto.ProductDTO;
|
||||
import de.rwu.easydrop.exception.DataSourceException;
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
class EbayItemDataSourceTest {
|
||||
private EbayItemDataSource demoDataSource;
|
||||
|
||||
private static String demoApiKey = "my-api-key";
|
||||
private static String demoApiUrl = "https://www.example.com/api";
|
||||
private static String demoDataOrigin = "eBay";
|
||||
private static Webshop demoDataOrigin = Webshop.eBay;
|
||||
private static String demoQuery = "iPhone";
|
||||
|
||||
@BeforeEach
|
||||
@@ -82,7 +83,7 @@ class EbayItemDataSourceTest {
|
||||
|
||||
ProductDTO result = demoDataSource.buildProductDTO(product, json);
|
||||
|
||||
assertEquals("eBay", result.getDataOrigin());
|
||||
assertEquals(Webshop.eBay, result.getDataOrigin());
|
||||
assertEquals(false, result.isAvailable()); // Default value for boolean
|
||||
assertEquals(0.0, result.getCurrentPrice()); // Default value for double
|
||||
assertEquals(0.0, result.getDeliveryPrice()); // Default value for double
|
||||
@@ -91,7 +92,7 @@ class EbayItemDataSourceTest {
|
||||
|
||||
@Test
|
||||
void getDataOrigin_ReturnsExpectedDataOrigin() {
|
||||
String dataOrigin = demoDataSource.getDataOrigin();
|
||||
Webshop dataOrigin = demoDataSource.getDataOrigin();
|
||||
assertEquals(demoDataOrigin, dataOrigin);
|
||||
}
|
||||
|
||||
@@ -105,18 +106,18 @@ class EbayItemDataSourceTest {
|
||||
void testGetProductDTOById_failedRequest() throws IOException {
|
||||
// Set up the test environment
|
||||
|
||||
EbayItemDataSource dataSource = mock(EbayItemDataSource.class);
|
||||
EbayItemDataSource DataSource = mock(EbayItemDataSource.class);
|
||||
URL mockURL = mock(URL.class);
|
||||
when(dataSource.getDataOrigin()).thenReturn(demoDataOrigin);
|
||||
when(dataSource.createApiUrl(demoQuery)).thenReturn(mockURL);
|
||||
when(dataSource.getProductDTOById(demoQuery)).thenCallRealMethod();
|
||||
when(DataSource.getDataOrigin()).thenReturn(demoDataOrigin);
|
||||
when(DataSource.createApiUrl(demoQuery)).thenReturn(mockURL);
|
||||
when(DataSource.getProductDTOById(demoQuery)).thenCallRealMethod();
|
||||
HttpURLConnection mockConnection = mock(HttpURLConnection.class);
|
||||
when(mockURL.openConnection()).thenReturn(mockConnection);
|
||||
when(mockConnection.getResponseCode()).thenReturn(HttpURLConnection.HTTP_NOT_FOUND);
|
||||
|
||||
// Invoke the method and verify the exception
|
||||
DataSourceException exception = assertThrows(DataSourceException.class, () -> {
|
||||
dataSource.getProductDTOById(demoQuery);
|
||||
DataSource.getProductDTOById(demoQuery);
|
||||
});
|
||||
|
||||
// Verify the exception message
|
||||
|
||||
@@ -11,12 +11,14 @@ import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
class EbayPurchaserTest {
|
||||
private EbayPurchaser demoPurchaser;
|
||||
|
||||
private static String demoApiKey = "my-api-key";
|
||||
private static String demoApiUrl = "https://www.example.com/api";
|
||||
private static String demoDataTarget = "eBay";
|
||||
private static Webshop demoDataTarget = Webshop.eBay;
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
@@ -65,7 +67,7 @@ class EbayPurchaserTest {
|
||||
|
||||
@Test
|
||||
void getDataTarget_ReturnsExpectedDataOrigin() {
|
||||
String dataTarget = demoPurchaser.getDataTarget();
|
||||
Webshop dataTarget = demoPurchaser.getDataTarget();
|
||||
assertEquals(demoDataTarget, dataTarget);
|
||||
}
|
||||
|
||||
|
||||
@@ -11,12 +11,14 @@ import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
class EbaySellerTest {
|
||||
private EbaySeller demoSeller;
|
||||
|
||||
private static String demoApiKey = "my-api-key";
|
||||
private static String demoApiUrl = "https://www.example.com/api";
|
||||
private static String demoDataTarget = "eBay";
|
||||
private static Webshop demoDataTarget = Webshop.eBay;
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
@@ -65,7 +67,7 @@ class EbaySellerTest {
|
||||
|
||||
@Test
|
||||
void getDataTarget_ReturnsExpectedDataOrigin() {
|
||||
String dataTarget = demoSeller.getDataTarget();
|
||||
Webshop dataTarget = demoSeller.getDataTarget();
|
||||
assertEquals(demoDataTarget, dataTarget);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,13 +6,15 @@ import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
class ProductDTOTest {
|
||||
|
||||
@Test
|
||||
void constructor_SetsProductIdAndDataOrigin() {
|
||||
// Arrange
|
||||
String productId = "12345";
|
||||
String dataOrigin = "Amazon";
|
||||
Webshop dataOrigin = Webshop.Amazon;
|
||||
|
||||
// Act
|
||||
ProductDTO productDTO = new ProductDTO(productId, dataOrigin);
|
||||
@@ -25,19 +27,19 @@ class ProductDTOTest {
|
||||
@Test
|
||||
void gettersAndSetters_WorkAsExpected() {
|
||||
// Arrange
|
||||
ProductDTO productDTO = new ProductDTO("12345", "Amazon");
|
||||
ProductDTO productDTO = new ProductDTO("12345", Webshop.Amazon);
|
||||
|
||||
// Act and Assert
|
||||
assertEquals("12345", productDTO.getProductId());
|
||||
assertEquals("Amazon", productDTO.getDataOrigin());
|
||||
assertEquals(Webshop.Amazon, productDTO.getDataOrigin());
|
||||
|
||||
// Modify fields
|
||||
productDTO.setProductId("54321");
|
||||
productDTO.setDataOrigin("eBay");
|
||||
productDTO.setDataOrigin(Webshop.eBay);
|
||||
|
||||
// Assert
|
||||
assertEquals("54321", productDTO.getProductId());
|
||||
assertEquals("eBay", productDTO.getDataOrigin());
|
||||
assertEquals(Webshop.eBay, productDTO.getDataOrigin());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -1,31 +1,4 @@
|
||||
package de.rwu.easydrop.core;
|
||||
|
||||
import java.util.List;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import de.rwu.easydrop.api.client.DataSourceFactory;
|
||||
|
||||
import de.rwu.easydrop.model.ProductCatalogue;
|
||||
import de.rwu.easydrop.service.retriever.CatalogueRetriever;
|
||||
import de.rwu.easydrop.service.retriever.ProductRetriever;
|
||||
import de.rwu.easydrop.util.Config;
|
||||
import de.rwu.easydrop.util.ProductsConfig;
|
||||
|
||||
public class CoreTest {
|
||||
@Test
|
||||
void testRunCore() throws ConfigurationException{
|
||||
Config config = Config.getInstance();
|
||||
ProductsConfig pConfig = ProductsConfig.getInstance();
|
||||
DataSourceFactory dataSourceFactory = new DataSourceFactory(config);
|
||||
ProductRetriever retriever = new ProductRetriever(dataSourceFactory);
|
||||
CatalogueRetriever catRetriever = new CatalogueRetriever(pConfig, retriever);
|
||||
|
||||
catRetriever.loadCatalogues();
|
||||
List<ProductCatalogue> pCats = catRetriever.getProductCatalogues();
|
||||
Core core1=new Core();
|
||||
core1.runCore(pCats);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.sqlite.SQLiteDataSource;
|
||||
|
||||
import de.rwu.easydrop.api.dto.ProductDTO;
|
||||
import de.rwu.easydrop.exception.PersistenceException;
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
@TestInstance(Lifecycle.PER_CLASS)
|
||||
class SQLiteConnectorTest {
|
||||
@@ -45,8 +46,8 @@ class SQLiteConnectorTest {
|
||||
void saveProduct_ValidProduct_SuccessfullySaved() {
|
||||
// Arrange
|
||||
sqliteConnector.clearData();
|
||||
ProductDTO ProductDTO = new ProductDTO(TEST_PRODUCT_ID, "Amazon");
|
||||
ProductDTO.setDataOrigin("Amazon");
|
||||
ProductDTO ProductDTO = new ProductDTO(TEST_PRODUCT_ID, Webshop.Amazon);
|
||||
ProductDTO.setDataOrigin(Webshop.Amazon);
|
||||
ProductDTO.setProductId(TEST_PRODUCT_ID);
|
||||
ProductDTO.setCurrentPrice(9.99);
|
||||
ProductDTO.setMerchant("Sample Merchant");
|
||||
@@ -59,7 +60,7 @@ class SQLiteConnectorTest {
|
||||
// Assert
|
||||
ProductDTO savedProductDTO = sqliteConnector.getProductDTOById(TEST_PRODUCT_ID);
|
||||
assertNotNull(savedProductDTO);
|
||||
assertEquals("Amazon", savedProductDTO.getDataOrigin());
|
||||
assertEquals(Webshop.Amazon, savedProductDTO.getDataOrigin());
|
||||
assertEquals(TEST_PRODUCT_ID, savedProductDTO.getProductId());
|
||||
assertEquals(9.99, savedProductDTO.getCurrentPrice());
|
||||
assertEquals("Sample Merchant", savedProductDTO.getMerchant());
|
||||
@@ -78,7 +79,7 @@ class SQLiteConnectorTest {
|
||||
|
||||
// Assert
|
||||
assertNotNull(ProductDTO);
|
||||
assertEquals("Amazon", ProductDTO.getDataOrigin());
|
||||
assertEquals(Webshop.Amazon, ProductDTO.getDataOrigin());
|
||||
assertEquals(TEST_PRODUCT_ID, ProductDTO.getProductId());
|
||||
assertEquals(9.99, ProductDTO.getCurrentPrice());
|
||||
assertEquals("Sample Merchant", ProductDTO.getMerchant());
|
||||
@@ -113,7 +114,7 @@ class SQLiteConnectorTest {
|
||||
@Test
|
||||
void saveProduct_ThrowsPersistenceException_OnSQLException() throws SQLException {
|
||||
// Arrange
|
||||
ProductDTO ProductDTO = new ProductDTO(TEST_PRODUCT_ID, "Amazon");
|
||||
ProductDTO ProductDTO = new ProductDTO(TEST_PRODUCT_ID, Webshop.Amazon);
|
||||
sqliteConnector.setDb(mockDataSource);
|
||||
doThrow(SQLException.class).when(mockDataSource).getConnection();
|
||||
|
||||
@@ -143,7 +144,7 @@ class SQLiteConnectorTest {
|
||||
}
|
||||
|
||||
private void insertSampleProduct() {
|
||||
ProductDTO ProductDTO = new ProductDTO(TEST_PRODUCT_ID, "Amazon");
|
||||
ProductDTO ProductDTO = new ProductDTO(TEST_PRODUCT_ID, Webshop.Amazon);
|
||||
ProductDTO.setCurrentPrice(9.99);
|
||||
ProductDTO.setMerchant("Sample Merchant");
|
||||
ProductDTO.setDeliveryPrice(2.50);
|
||||
@@ -151,18 +152,6 @@ class SQLiteConnectorTest {
|
||||
sqliteConnector.saveProduct(ProductDTO);
|
||||
}
|
||||
|
||||
@Test
|
||||
void getDataOrigin_ReturnsCorrectDataOrigin() {
|
||||
// Arrange
|
||||
SQLiteConnector connector = new SQLiteConnector(new SQLiteDataSource());
|
||||
|
||||
// Act
|
||||
String dataOrigin = connector.getDataOrigin();
|
||||
|
||||
// Assert
|
||||
assertEquals("SQLite", dataOrigin);
|
||||
}
|
||||
|
||||
@Test
|
||||
void getApiKey_UnsupportedOperationExceptionThrown() {
|
||||
// Arrange
|
||||
@@ -176,7 +165,7 @@ class SQLiteConnectorTest {
|
||||
void buildProductDTO_UnsupportedOperationExceptionThrown() {
|
||||
// Arrange
|
||||
SQLiteConnector connector = new SQLiteConnector(new SQLiteDataSource());
|
||||
ProductDTO product = new ProductDTO("ASIN123", "Amazon");
|
||||
ProductDTO product = new ProductDTO("ASIN123", Webshop.Amazon);
|
||||
String json = "{\"productId\":\"ASIN123\",\"dataOrigin\":\"Amazon\"}";
|
||||
|
||||
// Act and Assert
|
||||
|
||||
@@ -19,7 +19,7 @@ class ProductCatalogueTest {
|
||||
Product product = new Product();
|
||||
product.setProductId("12345");
|
||||
product.setMerchant("AmazonSeller");
|
||||
product.setDataOrigin("Amazon");
|
||||
product.setDataOrigin(Webshop.Amazon);
|
||||
productCatalogue.addProduct(product);
|
||||
|
||||
List<Product> products = productCatalogue.getProducts();
|
||||
@@ -32,13 +32,13 @@ class ProductCatalogueTest {
|
||||
Product product1 = new Product();
|
||||
product1.setProductId("12345");
|
||||
product1.setMerchant("AmazonSeller");
|
||||
product1.setDataOrigin("Amazon");
|
||||
product1.setDataOrigin(Webshop.Amazon);
|
||||
productCatalogue.addProduct(product1);
|
||||
|
||||
Product product2 = new Product();
|
||||
product2.setProductId("54321");
|
||||
product2.setMerchant("eBaySeller");
|
||||
product2.setDataOrigin("eBay");
|
||||
product2.setDataOrigin(Webshop.eBay);
|
||||
productCatalogue.addProduct(product2);
|
||||
|
||||
productCatalogue.removeProduct(product1);
|
||||
@@ -53,13 +53,13 @@ class ProductCatalogueTest {
|
||||
Product product1 = new Product();
|
||||
product1.setProductId("12345");
|
||||
product1.setMerchant("AmazonSeller");
|
||||
product1.setDataOrigin("Amazon");
|
||||
product1.setDataOrigin(Webshop.Amazon);
|
||||
productCatalogue.addProduct(product1);
|
||||
|
||||
Product product2 = new Product();
|
||||
product2.setProductId("54321");
|
||||
product2.setMerchant("eBay");
|
||||
product2.setDataOrigin("eBay");
|
||||
product2.setMerchant("ebayMerchant");
|
||||
product2.setDataOrigin(Webshop.eBay);
|
||||
productCatalogue.addProduct(product2);
|
||||
|
||||
productCatalogue.clearProducts();
|
||||
@@ -73,13 +73,13 @@ class ProductCatalogueTest {
|
||||
Product product1 = new Product();
|
||||
product1.setProductId("12345");
|
||||
product1.setMerchant("AmazonSeller");
|
||||
product1.setDataOrigin("Amazon");
|
||||
product1.setDataOrigin(Webshop.Amazon);
|
||||
productCatalogue.addProduct(product1);
|
||||
|
||||
Product product2 = new Product();
|
||||
product2.setProductId("54321");
|
||||
product2.setMerchant("eBaySeller");
|
||||
product2.setDataOrigin("eBay");
|
||||
product2.setDataOrigin(Webshop.eBay);
|
||||
productCatalogue.addProduct(product2);
|
||||
|
||||
String expectedString = "Product Catalogue: GPU\n" +
|
||||
|
||||
@@ -10,7 +10,7 @@ class ProductTest {
|
||||
@Test
|
||||
void testToString1() {
|
||||
Product product1 = new Product();
|
||||
product1.setDataOrigin("Amazon");
|
||||
product1.setDataOrigin(Webshop.Amazon);
|
||||
product1.setProductId("12345");
|
||||
product1.setMerchant("Merchant A");
|
||||
product1.setCurrentPrice(19.99);
|
||||
@@ -25,7 +25,7 @@ class ProductTest {
|
||||
@Test
|
||||
void testToString2() {
|
||||
Product product2 = new Product();
|
||||
product2.setDataOrigin("eBay");
|
||||
product2.setDataOrigin(Webshop.eBay);
|
||||
product2.setProductId("67890");
|
||||
product2.setMerchant("Merchant B");
|
||||
product2.setCurrentPrice(9.99);
|
||||
@@ -41,7 +41,7 @@ class ProductTest {
|
||||
void gettersAndSetters_WorkAsExpected() {
|
||||
// Arrange
|
||||
Product product = new Product();
|
||||
product.setDataOrigin("Amazon");
|
||||
product.setDataOrigin(Webshop.Amazon);
|
||||
product.setProductId("12345");
|
||||
product.setCurrentPrice(9.99);
|
||||
product.setMerchant("Example Merchant");
|
||||
@@ -49,7 +49,7 @@ class ProductTest {
|
||||
product.setAvailable(true);
|
||||
|
||||
// Act and Assert
|
||||
assertEquals("Amazon", product.getDataOrigin());
|
||||
assertEquals(Webshop.Amazon, product.getDataOrigin());
|
||||
assertEquals("12345", product.getProductId());
|
||||
assertEquals(9.99, product.getCurrentPrice());
|
||||
assertEquals("Example Merchant", product.getMerchant());
|
||||
@@ -57,7 +57,7 @@ class ProductTest {
|
||||
assertTrue(product.isAvailable());
|
||||
|
||||
// Modify fields
|
||||
product.setDataOrigin("eBay");
|
||||
product.setDataOrigin(Webshop.eBay);
|
||||
product.setProductId("54321");
|
||||
product.setCurrentPrice(19.99);
|
||||
product.setMerchant("New Merchant");
|
||||
@@ -65,7 +65,7 @@ class ProductTest {
|
||||
product.setAvailable(false);
|
||||
|
||||
// Assert
|
||||
assertEquals("eBay", product.getDataOrigin());
|
||||
assertEquals(Webshop.eBay, product.getDataOrigin());
|
||||
assertEquals("54321", product.getProductId());
|
||||
assertEquals(19.99, product.getCurrentPrice());
|
||||
assertEquals("New Merchant", product.getMerchant());
|
||||
|
||||
@@ -13,6 +13,7 @@ import org.junit.jupiter.api.Test;
|
||||
import de.rwu.easydrop.api.dto.ProductDTO;
|
||||
|
||||
import de.rwu.easydrop.model.Product;
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
class ProductMapperTest {
|
||||
@Test
|
||||
@@ -47,7 +48,7 @@ class ProductMapperTest {
|
||||
}
|
||||
|
||||
private ProductDTO createProductDTO() {
|
||||
ProductDTO dto = new ProductDTO("12345", "Amazon");
|
||||
ProductDTO dto = new ProductDTO("12345", Webshop.Amazon);
|
||||
dto.setAvailable(true);
|
||||
dto.setCurrentPrice(9.99);
|
||||
dto.setDeliveryPrice(2.50);
|
||||
@@ -60,7 +61,7 @@ class ProductMapperTest {
|
||||
// Arrange
|
||||
Product product = new Product();
|
||||
product.setProductId("12345");
|
||||
product.setDataOrigin("Amazon");
|
||||
product.setDataOrigin(Webshop.Amazon);
|
||||
product.setAvailable(true);
|
||||
product.setCurrentPrice(9.99);
|
||||
product.setDeliveryPrice(2.50);
|
||||
@@ -71,7 +72,7 @@ class ProductMapperTest {
|
||||
|
||||
// Assert
|
||||
assertEquals("12345", dto.getProductId());
|
||||
assertEquals("Amazon", dto.getDataOrigin());
|
||||
assertEquals(Webshop.Amazon, dto.getDataOrigin());
|
||||
assertTrue(dto.isAvailable());
|
||||
assertEquals(9.99, dto.getCurrentPrice());
|
||||
assertEquals(2.50, dto.getDeliveryPrice());
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package de.rwu.easydrop.service.retriever;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -14,9 +13,9 @@ import javax.naming.ConfigurationException;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import de.rwu.easydrop.exception.InvalidProductException;
|
||||
import de.rwu.easydrop.model.Product;
|
||||
import de.rwu.easydrop.model.ProductCatalogue;
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
import de.rwu.easydrop.util.ProductsConfig;
|
||||
|
||||
class CatalogueRetrieverTest {
|
||||
@@ -39,20 +38,20 @@ class CatalogueRetrieverTest {
|
||||
// Create a sample product catalogue with two products
|
||||
ProductCatalogue productCatalogue = new ProductCatalogue("Catalogue 1", "Sample catalogue");
|
||||
Product product1 = new Product();
|
||||
product1.setDataOrigin("Amazon");
|
||||
product1.setDataOrigin(Webshop.Amazon);
|
||||
product1.setProductId("ASIN1");
|
||||
productCatalogue.addProduct(product1);
|
||||
|
||||
Product product2 = new Product();
|
||||
product2.setDataOrigin("eBay");
|
||||
product2.setDataOrigin(Webshop.eBay);
|
||||
product2.setProductId("ProductID2");
|
||||
productCatalogue.addProduct(product2);
|
||||
productCatalogues.add(productCatalogue);
|
||||
|
||||
// Mock the methods
|
||||
when(productsConfig.getProductCatalogues()).thenReturn(productCatalogues);
|
||||
when(productRetriever.getProductFromAmazon("ASIN1")).thenReturn(product1);
|
||||
when(productRetriever.getProductFromEbay("ProductID2")).thenReturn(product2);
|
||||
when(productRetriever.getProductFromWebshop(Webshop.Amazon, "ASIN1")).thenReturn(product1);
|
||||
when(productRetriever.getProductFromWebshop(Webshop.eBay, "ProductID2")).thenReturn(product2);
|
||||
|
||||
// Act
|
||||
catalogueRetriever.loadCatalogues();
|
||||
@@ -71,33 +70,7 @@ class CatalogueRetrieverTest {
|
||||
|
||||
// Verify the method invocations
|
||||
verify(productsConfig).loadConfig();
|
||||
verify(productRetriever).getProductFromAmazon("ASIN1");
|
||||
verify(productRetriever).getProductFromEbay("ProductID2");
|
||||
}
|
||||
|
||||
@Test
|
||||
void loadCatalogues_ValidConfig_CataloguesLoaded_InvalidProduct() throws ConfigurationException {
|
||||
// Arrange
|
||||
List<ProductCatalogue> productCatalogues = new ArrayList<>();
|
||||
|
||||
// Create a sample product catalogue
|
||||
ProductCatalogue productCatalogue = new ProductCatalogue("Catalogue 1", "Sample catalogue");
|
||||
|
||||
Product product = new Product();
|
||||
product.setDataOrigin("");
|
||||
product.setProductId("ProductID1");
|
||||
productCatalogue.addProduct(product);
|
||||
productCatalogues.add(productCatalogue);
|
||||
|
||||
// Mock the methods
|
||||
when(productsConfig.getProductCatalogues()).thenReturn(productCatalogues);
|
||||
when(productRetriever.getProductFromAmazon("ProductID1")).thenReturn(product);
|
||||
|
||||
// Act and Assert
|
||||
InvalidProductException exception = assertThrows(InvalidProductException.class, () -> {
|
||||
catalogueRetriever.loadCatalogues();
|
||||
});
|
||||
|
||||
assertEquals("Product data origin is invalid", exception.getMessage());
|
||||
verify(productRetriever).getProductFromWebshop(Webshop.Amazon, "ASIN1");
|
||||
verify(productRetriever).getProductFromWebshop(Webshop.eBay, "ProductID2");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,13 +19,14 @@ import de.rwu.easydrop.api.client.EbayItemDataSource;
|
||||
import de.rwu.easydrop.api.dto.ProductDTO;
|
||||
import de.rwu.easydrop.data.connector.AbstractProductPersistence;
|
||||
import de.rwu.easydrop.model.Product;
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
import de.rwu.easydrop.util.Config;
|
||||
|
||||
class ProductRetrieverTest {
|
||||
@Mock
|
||||
private Config config;
|
||||
@Mock
|
||||
private DataSourceFactory dataSourceFactory;
|
||||
private DataSourceFactory DataSourceFactory;
|
||||
@Mock
|
||||
private AmazonProductDataSource amazonDataSource;
|
||||
@Mock
|
||||
@@ -44,19 +45,19 @@ class ProductRetrieverTest {
|
||||
MockitoAnnotations.openMocks(this);
|
||||
when(config.getProperty("AMAZON_API_URL")).thenReturn("https://api.amazon.com");
|
||||
when(config.getProperty("AMAZON_API_KEY")).thenReturn("amazon-api-key");
|
||||
dataSourceFactory.setConfig(config);
|
||||
productRetriever = new ProductRetriever(dataSourceFactory);
|
||||
DataSourceFactory.setConfig(config);
|
||||
productRetriever = new ProductRetriever(DataSourceFactory);
|
||||
}
|
||||
|
||||
@Test
|
||||
void getProductFromAmazon_ReturnsProduct() {
|
||||
// Arrange
|
||||
String asin = "B01234ABC";
|
||||
when(dataSourceFactory.createAmazonProductDataSource()).thenReturn(amazonDataSource);
|
||||
when(DataSourceFactory.createAmazonProductDataSource()).thenReturn(amazonDataSource);
|
||||
when(amazonDataSource.getProductDTOById(asin)).thenReturn(productDTO);
|
||||
when(productDTO.getProductId()).thenReturn(asin);
|
||||
when(productDTO.getCurrentPrice()).thenReturn(9.99);
|
||||
when(productDTO.getDataOrigin()).thenReturn("Amazon");
|
||||
when(productDTO.getDataOrigin()).thenReturn(Webshop.Amazon);
|
||||
|
||||
// Act
|
||||
Product result = productRetriever.getProductFromAmazon(asin);
|
||||
@@ -72,11 +73,11 @@ class ProductRetrieverTest {
|
||||
void getProductFromEbay_ReturnsProduct() {
|
||||
// Arrange
|
||||
String productQuery = "MySearchQuery";
|
||||
when(dataSourceFactory.createEbayItemDataSource()).thenReturn(ebayDataSource);
|
||||
when(DataSourceFactory.createEbayItemDataSource()).thenReturn(ebayDataSource);
|
||||
when(ebayDataSource.getProductDTOById(productQuery)).thenReturn(productDTO);
|
||||
when(productDTO.getProductId()).thenReturn(productQuery);
|
||||
when(productDTO.getCurrentPrice()).thenReturn(9.99);
|
||||
when(productDTO.getDataOrigin()).thenReturn("eBay");
|
||||
when(productDTO.getDataOrigin()).thenReturn(Webshop.eBay);
|
||||
|
||||
// Act
|
||||
Product result = productRetriever.getProductFromEbay(productQuery);
|
||||
@@ -92,11 +93,11 @@ class ProductRetrieverTest {
|
||||
void getProductFromPersistence_ValidProductId_ReturnsProduct() {
|
||||
// Arrange
|
||||
String productId = "123";
|
||||
when(dataSourceFactory.createProductPersistenceDataSource()).thenReturn(persistence);
|
||||
when(DataSourceFactory.createProductPersistenceDataSource()).thenReturn(persistence);
|
||||
when(persistence.getProductDTOById(productId)).thenReturn(productDTO);
|
||||
when(productDTO.getProductId()).thenReturn(productId);
|
||||
when(productDTO.getCurrentPrice()).thenReturn(9.99);
|
||||
when(productDTO.getDataOrigin()).thenReturn("Amazon");
|
||||
when(productDTO.getDataOrigin()).thenReturn(Webshop.Amazon);
|
||||
|
||||
// Act
|
||||
Product result = productRetriever.getProductFromPersistence(productId);
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package de.rwu.easydrop.service.validation;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
@@ -16,6 +15,7 @@ import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
import de.rwu.easydrop.exception.InvalidProductException;
|
||||
import de.rwu.easydrop.model.Product;
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
class ProductValidatorTest {
|
||||
|
||||
@@ -38,37 +38,13 @@ class ProductValidatorTest {
|
||||
// Arrange
|
||||
Product product = new Product();
|
||||
product.setCurrentPrice(9.99);
|
||||
product.setDataOrigin("Amazon");
|
||||
product.setDataOrigin(Webshop.Amazon);
|
||||
product.setProductId("12345");
|
||||
|
||||
// Act and Assert
|
||||
assertDoesNotThrow(() -> ProductValidator.validate(product));
|
||||
}
|
||||
|
||||
@Test
|
||||
void isInValidDataOrigins_ValidDataOrigin_ReturnsTrue() {
|
||||
// Arrange
|
||||
String dataOrigin = "Amazon";
|
||||
|
||||
// Act
|
||||
boolean result = ProductValidator.isInValidDataOrigins(dataOrigin);
|
||||
|
||||
// Assert
|
||||
assertTrue(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
void isInValidDataOrigins_InvalidDataOrigin_ReturnsFalse() {
|
||||
// Arrange
|
||||
String dataOrigin = "UnknownOrigin";
|
||||
|
||||
// Act
|
||||
boolean result = ProductValidator.isInValidDataOrigins(dataOrigin);
|
||||
|
||||
// Assert
|
||||
assertFalse(result);
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("invalidProductProvider")
|
||||
void validate_InvalidProduct_ThrowsInvalidProductException(Product product) {
|
||||
@@ -79,22 +55,13 @@ class ProductValidatorTest {
|
||||
static Stream<Product> invalidProductProvider() {
|
||||
return Stream.of(
|
||||
createProductWithZeroPrice(),
|
||||
createProductWithUnknownDataOrigin(),
|
||||
createProductWithEmptyProductId());
|
||||
}
|
||||
|
||||
private static Product createProductWithZeroPrice() {
|
||||
Product product = new Product();
|
||||
product.setCurrentPrice(0.00);
|
||||
product.setDataOrigin("Amazon");
|
||||
product.setProductId("12345");
|
||||
return product;
|
||||
}
|
||||
|
||||
private static Product createProductWithUnknownDataOrigin() {
|
||||
Product product = new Product();
|
||||
product.setCurrentPrice(9.99);
|
||||
product.setDataOrigin("UnknownOrigin");
|
||||
product.setDataOrigin(Webshop.Amazon);
|
||||
product.setProductId("12345");
|
||||
return product;
|
||||
}
|
||||
@@ -102,7 +69,7 @@ class ProductValidatorTest {
|
||||
private static Product createProductWithEmptyProductId() {
|
||||
Product product = new Product();
|
||||
product.setCurrentPrice(9.99);
|
||||
product.setDataOrigin("Amazon");
|
||||
product.setDataOrigin(Webshop.Amazon);
|
||||
product.setProductId("");
|
||||
return product;
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import de.rwu.easydrop.api.dto.ProductDTO;
|
||||
import de.rwu.easydrop.data.connector.AbstractProductPersistence;
|
||||
import de.rwu.easydrop.model.Product;
|
||||
import de.rwu.easydrop.model.ProductCatalogue;
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
class CatalogueWriterTest {
|
||||
|
||||
@@ -46,12 +47,12 @@ class CatalogueWriterTest {
|
||||
List<ProductCatalogue> catalogues = new ArrayList<>();
|
||||
|
||||
ProductCatalogue catalogue1 = new ProductCatalogue("Catalogue 1", "Sample catalogue 1");
|
||||
catalogue1.addProduct(createSampleProduct("Amazon", "ID 1"));
|
||||
catalogue1.addProduct(createSampleProduct("eBay", "ID 2"));
|
||||
catalogue1.addProduct(createSampleProduct(Webshop.Amazon, "ID 1"));
|
||||
catalogue1.addProduct(createSampleProduct(Webshop.eBay, "ID 2"));
|
||||
|
||||
ProductCatalogue catalogue2 = new ProductCatalogue("Catalogue 2", "Sample catalogue 2");
|
||||
catalogue2.addProduct(createSampleProduct("Amazon", "ID 3"));
|
||||
catalogue2.addProduct(createSampleProduct("eBay", "ID 4"));
|
||||
catalogue2.addProduct(createSampleProduct(Webshop.Amazon, "ID 3"));
|
||||
catalogue2.addProduct(createSampleProduct(Webshop.eBay, "ID 4"));
|
||||
|
||||
catalogues.add(catalogue1);
|
||||
catalogues.add(catalogue2);
|
||||
@@ -59,7 +60,7 @@ class CatalogueWriterTest {
|
||||
return catalogues;
|
||||
}
|
||||
|
||||
private Product createSampleProduct(String dataOrigin, String productId) {
|
||||
private Product createSampleProduct(Webshop dataOrigin, String productId) {
|
||||
Product product = new Product();
|
||||
product.setDataOrigin(dataOrigin);
|
||||
product.setProductId(productId);
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.mockito.MockitoAnnotations;
|
||||
import de.rwu.easydrop.api.dto.ProductDTO;
|
||||
import de.rwu.easydrop.data.connector.AbstractProductPersistence;
|
||||
import de.rwu.easydrop.model.Product;
|
||||
import de.rwu.easydrop.model.Webshop;
|
||||
|
||||
class ProductWriterTest {
|
||||
|
||||
@@ -32,7 +33,7 @@ class ProductWriterTest {
|
||||
// Arrange
|
||||
Product product = new Product();
|
||||
product.setProductId("12345");
|
||||
product.setDataOrigin("Amazon");
|
||||
product.setDataOrigin(Webshop.Amazon);
|
||||
product.setCurrentPrice(9.99);
|
||||
|
||||
// Act
|
||||
@@ -47,7 +48,7 @@ class ProductWriterTest {
|
||||
// Arrange
|
||||
Product product = new Product();
|
||||
product.setProductId("");
|
||||
product.setDataOrigin("Amazon");
|
||||
product.setDataOrigin(Webshop.Amazon);
|
||||
|
||||
// Act and Assert
|
||||
assertThrows(Exception.class, () -> productWriter.writeProductToPersistence(product));
|
||||
|
||||
Reference in New Issue
Block a user