Updated tests accordingly

This commit is contained in:
Leonie Eitze
2023-06-27 02:56:48 +02:00
parent 463932f8e9
commit 956223bea7
21 changed files with 126 additions and 220 deletions

View File

@@ -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");

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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());
}
}

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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