diff --git a/src/test/java/de/rwu/easydrop/api/client/AbstractDataWriterTest.java b/src/test/java/de/rwu/easydrop/api/client/AbstractDataWriterTest.java index 97b007e..78c610f 100644 --- a/src/test/java/de/rwu/easydrop/api/client/AbstractDataWriterTest.java +++ b/src/test/java/de/rwu/easydrop/api/client/AbstractDataWriterTest.java @@ -44,7 +44,7 @@ class AbstractDataWriterTest { @Override protected Webshop getDataTarget() { - return Webshop.Amazon; + return Webshop.AMAZON; } @Override @@ -57,7 +57,7 @@ class AbstractDataWriterTest { @Test void sendPutRequest_badResponseCode_throwsException() throws IOException { // Set up DTO - ProductDTO dto = new ProductDTO(demoProductId, Webshop.Amazon); + ProductDTO dto = new ProductDTO(demoProductId, Webshop.AMAZON); // Set up Mocks AbstractDataWriter mockWriter = mock(AbstractDataWriter.class); @@ -69,13 +69,13 @@ class AbstractDataWriterTest { writer.sendPutRequest(dto, "Sales"); }); - assertEquals("Amazon 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, Webshop.Amazon); + ProductDTO dto = new ProductDTO(demoProductId, Webshop.AMAZON); // Set up Mocks AbstractDataWriter mockWriter = mock(AbstractDataWriter.class); @@ -86,13 +86,13 @@ class AbstractDataWriterTest { writer.sendPutRequest(dto, "testApiType"); }); - assertEquals("Couldn't fulfill Amazon 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, Webshop.Amazon); + ProductDTO dto = new ProductDTO(demoProductId, Webshop.AMAZON); // Set up Mocks AbstractDataWriter mockWriter = mock(AbstractDataWriter.class); @@ -102,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(Webshop.Amazon); + when(mockWriter.getDataTarget()).thenReturn(Webshop.AMAZON); assertDoesNotThrow(() -> { mockWriter.sendPutRequest(dto, "Purchase"); diff --git a/src/test/java/de/rwu/easydrop/api/client/AbstractPurchaserTest.java b/src/test/java/de/rwu/easydrop/api/client/AbstractPurchaserTest.java index 0a62b8e..3bc169a 100644 --- a/src/test/java/de/rwu/easydrop/api/client/AbstractPurchaserTest.java +++ b/src/test/java/de/rwu/easydrop/api/client/AbstractPurchaserTest.java @@ -21,7 +21,7 @@ class AbstractPurchaserTest { @Test void purchaseProduct_CorrectApiTypeInException() throws IOException { // Set up DTO - ProductDTO dto = new ProductDTO("12345", Webshop.Amazon); + ProductDTO dto = new ProductDTO("12345", Webshop.AMAZON); // Set up mocks URL mockURL = mock(URL.class); @@ -30,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(Webshop.Amazon); + when(mockPurchaser.getDataTarget()).thenReturn(Webshop.AMAZON); assertDoesNotThrow(() -> { mockPurchaser.purchaseProduct(dto); diff --git a/src/test/java/de/rwu/easydrop/api/client/AbstractSellerTest.java b/src/test/java/de/rwu/easydrop/api/client/AbstractSellerTest.java index e907a37..aa3c299 100644 --- a/src/test/java/de/rwu/easydrop/api/client/AbstractSellerTest.java +++ b/src/test/java/de/rwu/easydrop/api/client/AbstractSellerTest.java @@ -21,7 +21,7 @@ class AbstractSellerTest { @Test void purchaseProduct_CorrectApiTypeInException() throws IOException { // Set up DTO - ProductDTO dto = new ProductDTO("12345", Webshop.Amazon); + ProductDTO dto = new ProductDTO("12345", Webshop.AMAZON); // Set up mocks URL mockURL = mock(URL.class); @@ -30,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(Webshop.Amazon); + when(mockSeller.getDataTarget()).thenReturn(Webshop.AMAZON); assertDoesNotThrow(() -> { mockSeller.sellProduct(dto); diff --git a/src/test/java/de/rwu/easydrop/api/client/AmazonProductDataSourceTest.java b/src/test/java/de/rwu/easydrop/api/client/AmazonProductDataSourceTest.java index 7735bd9..ba3bfa9 100644 --- a/src/test/java/de/rwu/easydrop/api/client/AmazonProductDataSourceTest.java +++ b/src/test/java/de/rwu/easydrop/api/client/AmazonProductDataSourceTest.java @@ -29,7 +29,7 @@ class AmazonProductDataSourceTest { private static String demoApiKey = "my-api-key"; private static String demoApiUrl = "https://www.example.com/api"; - private static Webshop demoDataOrigin = Webshop.Amazon; + private static Webshop demoDataOrigin = Webshop.AMAZON; private static String demoProductId = "whateverId"; @BeforeEach @@ -139,7 +139,7 @@ class AmazonProductDataSourceTest { // Verify the product DTO properties assertEquals(demoProductId, result.getProductId()); - assertEquals(Webshop.Amazon, result.getDataOrigin()); + assertEquals(Webshop.AMAZON, result.getDataOrigin()); assertEquals(true, result.isAvailable()); assertEquals(10.0, result.getCurrentPrice()); assertEquals(2.5, result.getDeliveryPrice()); @@ -165,7 +165,7 @@ class AmazonProductDataSourceTest { }); // Verify the exception message - assertEquals("Nothing found: Amazon API responded with error code 404", exception.getMessage()); + assertEquals("Nothing found: AMAZON API responded with error code 404", exception.getMessage()); } @Test @@ -188,7 +188,7 @@ class AmazonProductDataSourceTest { }); // Verify the exception message - assertEquals("Couldn't fulfill Amazon API request", exception.getMessage()); + assertEquals("Couldn't fulfill AMAZON API request", exception.getMessage()); } @Test diff --git a/src/test/java/de/rwu/easydrop/api/client/AmazonPurchaserTest.java b/src/test/java/de/rwu/easydrop/api/client/AmazonPurchaserTest.java index 1386e97..788fe5e 100644 --- a/src/test/java/de/rwu/easydrop/api/client/AmazonPurchaserTest.java +++ b/src/test/java/de/rwu/easydrop/api/client/AmazonPurchaserTest.java @@ -18,7 +18,7 @@ class AmazonPurchaserTest { private static String demoApiKey = "my-api-key"; private static String demoApiUrl = "https://www.example.com/api"; - private static Webshop demoDataTarget = Webshop.Amazon; + private static Webshop demoDataTarget = Webshop.AMAZON; @BeforeEach void setup() { diff --git a/src/test/java/de/rwu/easydrop/api/client/AmazonSellerTest.java b/src/test/java/de/rwu/easydrop/api/client/AmazonSellerTest.java index 4ff6d55..d63d89c 100644 --- a/src/test/java/de/rwu/easydrop/api/client/AmazonSellerTest.java +++ b/src/test/java/de/rwu/easydrop/api/client/AmazonSellerTest.java @@ -18,7 +18,7 @@ class AmazonSellerTest { private static String demoApiKey = "my-api-key"; private static String demoApiUrl = "https://www.example.com/api"; - private static Webshop demoDataTarget = Webshop.Amazon; + private static Webshop demoDataTarget = Webshop.AMAZON; @BeforeEach void setup() { diff --git a/src/test/java/de/rwu/easydrop/api/client/DataSourceFactoryTest.java b/src/test/java/de/rwu/easydrop/api/client/DataSourceFactoryTest.java index 5196c8b..c152e5f 100644 --- a/src/test/java/de/rwu/easydrop/api/client/DataSourceFactoryTest.java +++ b/src/test/java/de/rwu/easydrop/api/client/DataSourceFactoryTest.java @@ -1,8 +1,6 @@ package de.rwu.easydrop.api.client; -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.when; import javax.naming.ConfigurationException; @@ -11,10 +9,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.sqlite.SQLiteDataSource; -import de.rwu.easydrop.data.connector.SQLiteConnector; -import de.rwu.easydrop.exception.PersistenceException; import de.rwu.easydrop.util.Config; class DataSourceFactoryTest { @@ -50,20 +45,4 @@ class DataSourceFactoryTest { // Assert assertEquals("ebay-api-key", DataSource.getApiKey()); } - - @Test - void createProductPersistenceDataSource_NullPersistence() { - PersistenceException exception = assertThrows(PersistenceException.class, () -> { - DataSourceFactory.createProductPersistenceDataSource(); - }); - - assertEquals("Persistence is not set", exception.getMessage()); - } - - @Test - void createProductPersistenceDataSource_WorkingPersistence() { - DataSourceFactory.setPersistence(new SQLiteConnector(new SQLiteDataSource())); - - assertDoesNotThrow(() -> DataSourceFactory.createProductPersistenceDataSource()); - } } diff --git a/src/test/java/de/rwu/easydrop/api/client/EbayItemDataSourceTest.java b/src/test/java/de/rwu/easydrop/api/client/EbayItemDataSourceTest.java index a311c73..1615b44 100644 --- a/src/test/java/de/rwu/easydrop/api/client/EbayItemDataSourceTest.java +++ b/src/test/java/de/rwu/easydrop/api/client/EbayItemDataSourceTest.java @@ -26,7 +26,7 @@ class EbayItemDataSourceTest { private static String demoApiKey = "my-api-key"; private static String demoApiUrl = "https://www.example.com/api"; - private static Webshop demoDataOrigin = Webshop.eBay; + private static Webshop demoDataOrigin = Webshop.EBAY; private static String demoQuery = "iPhone"; @BeforeEach @@ -83,7 +83,7 @@ class EbayItemDataSourceTest { ProductDTO result = demoDataSource.buildProductDTO(product, json); - assertEquals(Webshop.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 @@ -121,6 +121,6 @@ class EbayItemDataSourceTest { }); // Verify the exception message - assertEquals("Nothing found: eBay API responded with error code 404", exception.getMessage()); + assertEquals("Nothing found: EBAY API responded with error code 404", exception.getMessage()); } } diff --git a/src/test/java/de/rwu/easydrop/api/client/EbayPurchaserTest.java b/src/test/java/de/rwu/easydrop/api/client/EbayPurchaserTest.java index 2b2104c..d303e0b 100644 --- a/src/test/java/de/rwu/easydrop/api/client/EbayPurchaserTest.java +++ b/src/test/java/de/rwu/easydrop/api/client/EbayPurchaserTest.java @@ -18,7 +18,7 @@ class EbayPurchaserTest { private static String demoApiKey = "my-api-key"; private static String demoApiUrl = "https://www.example.com/api"; - private static Webshop demoDataTarget = Webshop.eBay; + private static Webshop demoDataTarget = Webshop.EBAY; @BeforeEach void setup() { diff --git a/src/test/java/de/rwu/easydrop/api/client/EbaySellerTest.java b/src/test/java/de/rwu/easydrop/api/client/EbaySellerTest.java index 0fe0df0..e9f38ac 100644 --- a/src/test/java/de/rwu/easydrop/api/client/EbaySellerTest.java +++ b/src/test/java/de/rwu/easydrop/api/client/EbaySellerTest.java @@ -18,7 +18,7 @@ class EbaySellerTest { private static String demoApiKey = "my-api-key"; private static String demoApiUrl = "https://www.example.com/api"; - private static Webshop demoDataTarget = Webshop.eBay; + private static Webshop demoDataTarget = Webshop.EBAY; @BeforeEach void setup() { diff --git a/src/test/java/de/rwu/easydrop/api/dto/ProductDTOTest.java b/src/test/java/de/rwu/easydrop/api/dto/ProductDTOTest.java index 647babb..3c19d29 100644 --- a/src/test/java/de/rwu/easydrop/api/dto/ProductDTOTest.java +++ b/src/test/java/de/rwu/easydrop/api/dto/ProductDTOTest.java @@ -14,7 +14,7 @@ class ProductDTOTest { void constructor_SetsProductIdAndDataOrigin() { // Arrange String productId = "12345"; - Webshop dataOrigin = Webshop.Amazon; + Webshop dataOrigin = Webshop.AMAZON; // Act ProductDTO productDTO = new ProductDTO(productId, dataOrigin); @@ -27,19 +27,19 @@ class ProductDTOTest { @Test void gettersAndSetters_WorkAsExpected() { // Arrange - ProductDTO productDTO = new ProductDTO("12345", Webshop.Amazon); + ProductDTO productDTO = new ProductDTO("12345", Webshop.AMAZON); // Act and Assert assertEquals("12345", productDTO.getProductId()); - assertEquals(Webshop.Amazon, productDTO.getDataOrigin()); + assertEquals(Webshop.AMAZON, productDTO.getDataOrigin()); // Modify fields productDTO.setProductId("54321"); - productDTO.setDataOrigin(Webshop.eBay); + productDTO.setDataOrigin(Webshop.EBAY); // Assert assertEquals("54321", productDTO.getProductId()); - assertEquals(Webshop.eBay, productDTO.getDataOrigin()); + assertEquals(Webshop.EBAY, productDTO.getDataOrigin()); } @Test diff --git a/src/test/java/de/rwu/easydrop/core/OfferIdentifierTest.java b/src/test/java/de/rwu/easydrop/core/OfferIdentifierTest.java deleted file mode 100644 index 92d7876..0000000 --- a/src/test/java/de/rwu/easydrop/core/OfferIdentifierTest.java +++ /dev/null @@ -1,10 +0,0 @@ -package de.rwu.easydrop.core; - -import org.junit.jupiter.api.Test; - -public class OfferIdentifierTest { - @Test - void testRunIdentifier() { - - } -} diff --git a/src/test/java/de/rwu/easydrop/core/OfferProvisionerTest.java b/src/test/java/de/rwu/easydrop/core/OfferProvisionerTest.java deleted file mode 100644 index 6b3b26a..0000000 --- a/src/test/java/de/rwu/easydrop/core/OfferProvisionerTest.java +++ /dev/null @@ -1,10 +0,0 @@ -package de.rwu.easydrop.core; - -import org.junit.jupiter.api.Test; - -public class OfferProvisionerTest { - @Test - void testRunProvisioner() { - - } -} diff --git a/src/test/java/de/rwu/easydrop/core/OfferReviewerTest.java b/src/test/java/de/rwu/easydrop/core/OfferReviewerTest.java deleted file mode 100644 index 9c03f5c..0000000 --- a/src/test/java/de/rwu/easydrop/core/OfferReviewerTest.java +++ /dev/null @@ -1,10 +0,0 @@ -package de.rwu.easydrop.core; - -import org.junit.jupiter.api.Test; - -public class OfferReviewerTest { - @Test - void testRunReviewer() { - - } -} diff --git a/src/test/java/de/rwu/easydrop/core/OfferUpdaterTest.java b/src/test/java/de/rwu/easydrop/core/OfferUpdaterTest.java deleted file mode 100644 index b7e46ae..0000000 --- a/src/test/java/de/rwu/easydrop/core/OfferUpdaterTest.java +++ /dev/null @@ -1,10 +0,0 @@ -package de.rwu.easydrop.core; - -import org.junit.jupiter.api.Test; - -public class OfferUpdaterTest { - @Test - void testRunUpdater() { - - } -} diff --git a/src/test/java/de/rwu/easydrop/data/connector/SQLiteConnectorTest.java b/src/test/java/de/rwu/easydrop/data/connector/SQLiteConnectorTest.java index 9c513db..3dcfd84 100644 --- a/src/test/java/de/rwu/easydrop/data/connector/SQLiteConnectorTest.java +++ b/src/test/java/de/rwu/easydrop/data/connector/SQLiteConnectorTest.java @@ -11,11 +11,8 @@ import static org.mockito.Mockito.doThrow; import java.sql.SQLException; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInstance; -import org.junit.jupiter.api.TestInstance.Lifecycle; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.sqlite.SQLiteDataSource; @@ -24,30 +21,24 @@ 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 { private static final String TEST_PRODUCT_ID = "12345"; - private SQLiteConnector sqliteConnector; + private SQLiteConnector sqliteConnector = new SQLiteConnector(new SQLiteDataSource()); @Mock private SQLiteDataSource mockDataSource; - @BeforeAll - public void setup() { - sqliteConnector = new SQLiteConnector(new SQLiteDataSource()); - } - @BeforeEach - public void clearDatabase() { + public void prepare() { MockitoAnnotations.openMocks(this); } @Test - void saveProduct_ValidProduct_SuccessfullySaved() { + void writeProduct_ValidProduct_SuccessfullySaved() { // Arrange sqliteConnector.clearData(); - ProductDTO ProductDTO = new ProductDTO(TEST_PRODUCT_ID, Webshop.Amazon); - ProductDTO.setDataOrigin(Webshop.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"); @@ -55,12 +46,12 @@ class SQLiteConnectorTest { ProductDTO.setAvailable(true); // Act - assertDoesNotThrow(() -> sqliteConnector.saveProduct(ProductDTO)); + assertDoesNotThrow(() -> sqliteConnector.writeProduct(ProductDTO)); // Assert ProductDTO savedProductDTO = sqliteConnector.getProductDTOById(TEST_PRODUCT_ID); assertNotNull(savedProductDTO); - assertEquals(Webshop.Amazon, savedProductDTO.getDataOrigin()); + assertEquals(Webshop.AMAZON, savedProductDTO.getDataOrigin()); assertEquals(TEST_PRODUCT_ID, savedProductDTO.getProductId()); assertEquals(9.99, savedProductDTO.getCurrentPrice()); assertEquals("Sample Merchant", savedProductDTO.getMerchant()); @@ -79,7 +70,7 @@ class SQLiteConnectorTest { // Assert assertNotNull(ProductDTO); - assertEquals(Webshop.Amazon, ProductDTO.getDataOrigin()); + assertEquals(Webshop.AMAZON, ProductDTO.getDataOrigin()); assertEquals(TEST_PRODUCT_ID, ProductDTO.getProductId()); assertEquals(9.99, ProductDTO.getCurrentPrice()); assertEquals("Sample Merchant", ProductDTO.getMerchant()); @@ -112,14 +103,14 @@ class SQLiteConnectorTest { } @Test - void saveProduct_ThrowsPersistenceException_OnSQLException() throws SQLException { + void writeProduct_ThrowsPersistenceException_OnSQLException() throws SQLException { // Arrange - ProductDTO ProductDTO = new ProductDTO(TEST_PRODUCT_ID, Webshop.Amazon); + ProductDTO ProductDTO = new ProductDTO(TEST_PRODUCT_ID, Webshop.AMAZON); sqliteConnector.setDb(mockDataSource); doThrow(SQLException.class).when(mockDataSource).getConnection(); // Act and Assert - assertThrows(PersistenceException.class, () -> sqliteConnector.saveProduct(ProductDTO)); + assertThrows(PersistenceException.class, () -> sqliteConnector.writeProduct(ProductDTO)); } @Test @@ -144,41 +135,11 @@ class SQLiteConnectorTest { } private void insertSampleProduct() { - ProductDTO ProductDTO = new ProductDTO(TEST_PRODUCT_ID, Webshop.Amazon); + ProductDTO ProductDTO = new ProductDTO(TEST_PRODUCT_ID, Webshop.AMAZON); ProductDTO.setCurrentPrice(9.99); ProductDTO.setMerchant("Sample Merchant"); ProductDTO.setDeliveryPrice(2.50); ProductDTO.setAvailable(true); - sqliteConnector.saveProduct(ProductDTO); - } - - @Test - void getApiKey_UnsupportedOperationExceptionThrown() { - // Arrange - SQLiteConnector connector = new SQLiteConnector(new SQLiteDataSource()); - - // Act and Assert - assertThrows(UnsupportedOperationException.class, connector::getApiKey); - } - - @Test - void buildProductDTO_UnsupportedOperationExceptionThrown() { - // Arrange - SQLiteConnector connector = new SQLiteConnector(new SQLiteDataSource()); - ProductDTO product = new ProductDTO("ASIN123", Webshop.Amazon); - String json = "{\"productId\":\"ASIN123\",\"dataOrigin\":\"Amazon\"}"; - - // Act and Assert - assertThrows(UnsupportedOperationException.class, () -> connector.buildProductDTO(product, json)); - } - - @Test - void createApiUrl_UnsupportedOperationExceptionThrown() { - // Arrange - SQLiteConnector connector = new SQLiteConnector(new SQLiteDataSource()); - String productIdentifier = "ASIN123"; - - // Act and Assert - assertThrows(UnsupportedOperationException.class, () -> connector.createApiUrl(productIdentifier)); + sqliteConnector.writeProduct(ProductDTO); } } diff --git a/src/test/java/de/rwu/easydrop/model/ProductCatalogueTest.java b/src/test/java/de/rwu/easydrop/model/ProductCatalogueTest.java index c83f84f..ebdcab4 100644 --- a/src/test/java/de/rwu/easydrop/model/ProductCatalogueTest.java +++ b/src/test/java/de/rwu/easydrop/model/ProductCatalogueTest.java @@ -1,5 +1,7 @@ package de.rwu.easydrop.model; +import static org.mockito.Mockito.description; + import java.util.List; import org.junit.jupiter.api.Assertions; @@ -19,7 +21,7 @@ class ProductCatalogueTest { Product product = new Product(); product.setProductId("12345"); product.setMerchant("AmazonSeller"); - product.setDataOrigin(Webshop.Amazon); + product.setDataOrigin(Webshop.AMAZON); productCatalogue.addProduct(product); List products = productCatalogue.getProducts(); @@ -32,13 +34,13 @@ class ProductCatalogueTest { Product product1 = new Product(); product1.setProductId("12345"); product1.setMerchant("AmazonSeller"); - product1.setDataOrigin(Webshop.Amazon); + product1.setDataOrigin(Webshop.AMAZON); productCatalogue.addProduct(product1); Product product2 = new Product(); product2.setProductId("54321"); product2.setMerchant("eBaySeller"); - product2.setDataOrigin(Webshop.eBay); + product2.setDataOrigin(Webshop.EBAY); productCatalogue.addProduct(product2); productCatalogue.removeProduct(product1); @@ -53,13 +55,13 @@ class ProductCatalogueTest { Product product1 = new Product(); product1.setProductId("12345"); product1.setMerchant("AmazonSeller"); - product1.setDataOrigin(Webshop.Amazon); + product1.setDataOrigin(Webshop.AMAZON); productCatalogue.addProduct(product1); Product product2 = new Product(); product2.setProductId("54321"); product2.setMerchant("ebayMerchant"); - product2.setDataOrigin(Webshop.eBay); + product2.setDataOrigin(Webshop.EBAY); productCatalogue.addProduct(product2); productCatalogue.clearProducts(); @@ -73,20 +75,23 @@ class ProductCatalogueTest { Product product1 = new Product(); product1.setProductId("12345"); product1.setMerchant("AmazonSeller"); - product1.setDataOrigin(Webshop.Amazon); + product1.setDataOrigin(Webshop.AMAZON); productCatalogue.addProduct(product1); Product product2 = new Product(); product2.setProductId("54321"); product2.setMerchant("eBaySeller"); - product2.setDataOrigin(Webshop.eBay); + product2.setDataOrigin(Webshop.EBAY); productCatalogue.addProduct(product2); - String expectedString = "Product Catalogue: GPU\n" + - "Description: Graphics Processing Units\n" + - "Products:\n" + - "Product: [12345 from AmazonSeller (Amazon) at 0,00 Euro (available: no)]\n" + - "Product: [54321 from eBaySeller (eBay) at 0,00 Euro (available: no)]\n"; + StringBuilder sb = new StringBuilder(); + sb.append(String.format("Catalogue Name: %s%n", "GPU")); + sb.append(String.format("Description: %s%n", "Graphics Processing Units")); + sb.append("Products:\n"); + sb.append(String.format("%s%n", product1.toString())); + sb.append(String.format("%s%n", product2.toString())); + + String expectedString = sb.toString(); Assertions.assertEquals(expectedString, productCatalogue.toString()); } diff --git a/src/test/java/de/rwu/easydrop/model/ProductTest.java b/src/test/java/de/rwu/easydrop/model/ProductTest.java index 2c5c1c2..10c8278 100644 --- a/src/test/java/de/rwu/easydrop/model/ProductTest.java +++ b/src/test/java/de/rwu/easydrop/model/ProductTest.java @@ -10,13 +10,13 @@ class ProductTest { @Test void testToString1() { Product product1 = new Product(); - product1.setDataOrigin(Webshop.Amazon); + product1.setDataOrigin(Webshop.AMAZON); product1.setProductId("12345"); product1.setMerchant("Merchant A"); product1.setCurrentPrice(19.99); product1.setAvailable(true); - String expectedString1 = "Product: [12345 from Merchant A (Amazon) at 19,99 Euro (available: yes)]"; + String expectedString1 = "Product: [12345 from Merchant A (AMAZON) at 19,99 Euro (available: yes)]"; String result1 = product1.toString(); assertEquals(expectedString1, result1); @@ -25,13 +25,13 @@ class ProductTest { @Test void testToString2() { Product product2 = new Product(); - product2.setDataOrigin(Webshop.eBay); + product2.setDataOrigin(Webshop.EBAY); product2.setProductId("67890"); product2.setMerchant("Merchant B"); product2.setCurrentPrice(9.99); product2.setAvailable(false); - String expectedString2 = "Product: [67890 from Merchant B (eBay) at 9,99 Euro (available: no)]"; + String expectedString2 = "Product: [67890 from Merchant B (EBAY) at 9,99 Euro (available: no)]"; String result2 = product2.toString(); assertEquals(expectedString2, result2); @@ -41,7 +41,7 @@ class ProductTest { void gettersAndSetters_WorkAsExpected() { // Arrange Product product = new Product(); - product.setDataOrigin(Webshop.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(Webshop.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(Webshop.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(Webshop.eBay, product.getDataOrigin()); + assertEquals(Webshop.EBAY, product.getDataOrigin()); assertEquals("54321", product.getProductId()); assertEquals(19.99, product.getCurrentPrice()); assertEquals("New Merchant", product.getMerchant()); diff --git a/src/test/java/de/rwu/easydrop/service/mapping/ProductMapperTest.java b/src/test/java/de/rwu/easydrop/service/mapping/ProductMapperTest.java index 9212a24..70bae6e 100644 --- a/src/test/java/de/rwu/easydrop/service/mapping/ProductMapperTest.java +++ b/src/test/java/de/rwu/easydrop/service/mapping/ProductMapperTest.java @@ -48,7 +48,7 @@ class ProductMapperTest { } private ProductDTO createProductDTO() { - ProductDTO dto = new ProductDTO("12345", Webshop.Amazon); + ProductDTO dto = new ProductDTO("12345", Webshop.AMAZON); dto.setAvailable(true); dto.setCurrentPrice(9.99); dto.setDeliveryPrice(2.50); @@ -61,7 +61,7 @@ class ProductMapperTest { // Arrange Product product = new Product(); product.setProductId("12345"); - product.setDataOrigin(Webshop.Amazon); + product.setDataOrigin(Webshop.AMAZON); product.setAvailable(true); product.setCurrentPrice(9.99); product.setDeliveryPrice(2.50); @@ -72,7 +72,7 @@ class ProductMapperTest { // Assert assertEquals("12345", dto.getProductId()); - assertEquals(Webshop.Amazon, dto.getDataOrigin()); + assertEquals(Webshop.AMAZON, dto.getDataOrigin()); assertTrue(dto.isAvailable()); assertEquals(9.99, dto.getCurrentPrice()); assertEquals(2.50, dto.getDeliveryPrice()); diff --git a/src/test/java/de/rwu/easydrop/service/processing/OrderManagerTest.java b/src/test/java/de/rwu/easydrop/service/processing/OrderManagerTest.java deleted file mode 100644 index 2ffb76a..0000000 --- a/src/test/java/de/rwu/easydrop/service/processing/OrderManagerTest.java +++ /dev/null @@ -1,130 +0,0 @@ -package de.rwu.easydrop.service.processing; - -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.List; - -import org.junit.jupiter.api.Test; - -import de.rwu.easydrop.exception.InvalidCatalogueException; -import de.rwu.easydrop.model.Product; -import de.rwu.easydrop.model.ProductCatalogue; -import de.rwu.easydrop.model.ProductPair; - -class OrderManagerTest { - - @Test - void testConstructorIsPrivate() - throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { - // Check for private constructor - Constructor constructor = OrderManager.class.getDeclaredConstructor(); - assertTrue(Modifier.isPrivate(constructor.getModifiers())); - - // Make sure exception is thrown when instantiating - constructor.setAccessible(true); - assertThrows(InvocationTargetException.class, () -> { - constructor.newInstance(); - }); - } - - @Test - void testCreateOrders_ValidCatalogues_OrdersCreated() { - // Arrange - List catalogues = createSampleCatalogues(); - - // Act - assertDoesNotThrow(() -> { - OrderManager.createOrders(catalogues); - }); - } - - @Test - void testGetHighestMarginProducts_ValidCatalogue_CheapestAndMostExpensiveProductsReturned() { - // Arrange - ProductCatalogue catalogue = createSampleCatalogue(); - - // Act - ProductPair pair = OrderManager.getHighestMarginProducts(catalogue); - - // Assert - assertNotNull(pair); - assertNotNull(pair.getProduct1()); - assertNotNull(pair.getProduct2()); - assertEquals("Product2", pair.getProduct1().getProductId()); - assertEquals("Product3", pair.getProduct2().getProductId()); - } - - @Test - void testGetHighestMarginProducts_InvalidCatalogue_ThrowsInvalidCatalogueException() { - // Arrange - ProductCatalogue catalogue = new ProductCatalogue("Catalogue1", "Sample catalogue"); - catalogue.addProduct(new Product()); - // The catalogue has only one product, which is invalid - - // Act & Assert - Exception e = assertThrows(InvalidCatalogueException.class, - () -> OrderManager.getHighestMarginProducts(catalogue)); - - assertEquals("Product Catalogue holds less than 2 products!", e.getMessage()); - } - - @Test - void testGetHighestMarginProducts_InvalidCatalogue_NoMargin() { - // Arrange - ProductCatalogue catalogue = new ProductCatalogue("Catalogue1", "Sample catalogue"); - catalogue.addProduct(new Product()); - catalogue.addProduct(new Product()); - // The catalogue has only one product, which is invalid - - // Act & Assert - Exception e = assertThrows(InvalidCatalogueException.class, - () -> OrderManager.getHighestMarginProducts(catalogue)); - - assertEquals("Price margin is zero!", e.getMessage()); - } - - private List createSampleCatalogues() { - List catalogues = new ArrayList<>(); - - ProductCatalogue catalogue1 = createSampleCatalogue(); - catalogues.add(catalogue1); - - ProductCatalogue catalogue2 = new ProductCatalogue("Catalogue2", "Sample catalogue 2"); - Product product4 = new Product(); - product4.setProductId("Product4"); - product4.setCurrentPrice(6.78); - catalogue2.addProduct(product4); - Product product5 = new Product(); - product5.setProductId("Product5"); - product5.setCurrentPrice(7.89); - catalogue2.addProduct(product5); - catalogues.add(catalogue2); - - return catalogues; - } - - private ProductCatalogue createSampleCatalogue() { - ProductCatalogue catalogue = new ProductCatalogue("Catalogue1", "Sample catalogue"); - Product product1 = new Product(); - product1.setProductId("Product1"); - product1.setCurrentPrice(1.23); - catalogue.addProduct(product1); - Product product2 = new Product(); - product2.setProductId("Product2"); - product2.setCurrentPrice(0.89); - catalogue.addProduct(product2); - Product product3 = new Product(); - product3.setProductId("Product3"); - product3.setCurrentPrice(4.56); - catalogue.addProduct(product3); - return catalogue; - } -} diff --git a/src/test/java/de/rwu/easydrop/service/retriever/CatalogueRetrieverTest.java b/src/test/java/de/rwu/easydrop/service/retriever/CatalogueRetrieverTest.java index edd772a..b13c571 100644 --- a/src/test/java/de/rwu/easydrop/service/retriever/CatalogueRetrieverTest.java +++ b/src/test/java/de/rwu/easydrop/service/retriever/CatalogueRetrieverTest.java @@ -38,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(Webshop.Amazon); + product1.setDataOrigin(Webshop.AMAZON); product1.setProductId("ASIN1"); productCatalogue.addProduct(product1); Product product2 = new Product(); - product2.setDataOrigin(Webshop.eBay); + product2.setDataOrigin(Webshop.EBAY); product2.setProductId("ProductID2"); productCatalogue.addProduct(product2); productCatalogues.add(productCatalogue); // Mock the methods when(productsConfig.getProductCatalogues()).thenReturn(productCatalogues); - when(productRetriever.getProductFromWebshop(Webshop.Amazon, "ASIN1")).thenReturn(product1); - when(productRetriever.getProductFromWebshop(Webshop.eBay, "ProductID2")).thenReturn(product2); + when(productRetriever.getProductFromWebshop(Webshop.AMAZON, "ASIN1")).thenReturn(product1); + when(productRetriever.getProductFromWebshop(Webshop.EBAY, "ProductID2")).thenReturn(product2); // Act catalogueRetriever.loadCatalogues(); @@ -70,7 +70,7 @@ class CatalogueRetrieverTest { // Verify the method invocations verify(productsConfig).loadConfig(); - verify(productRetriever).getProductFromWebshop(Webshop.Amazon, "ASIN1"); - verify(productRetriever).getProductFromWebshop(Webshop.eBay, "ProductID2"); + verify(productRetriever).getProductFromWebshop(Webshop.AMAZON, "ASIN1"); + verify(productRetriever).getProductFromWebshop(Webshop.EBAY, "ProductID2"); } } diff --git a/src/test/java/de/rwu/easydrop/service/retriever/ProductRetrieverTest.java b/src/test/java/de/rwu/easydrop/service/retriever/ProductRetrieverTest.java index 5fee30f..da42da6 100644 --- a/src/test/java/de/rwu/easydrop/service/retriever/ProductRetrieverTest.java +++ b/src/test/java/de/rwu/easydrop/service/retriever/ProductRetrieverTest.java @@ -17,7 +17,7 @@ import de.rwu.easydrop.api.client.AmazonProductDataSource; import de.rwu.easydrop.api.client.DataSourceFactory; 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.data.connector.ProductPersistenceInterface; import de.rwu.easydrop.model.Product; import de.rwu.easydrop.model.Webshop; import de.rwu.easydrop.util.Config; @@ -26,7 +26,7 @@ class ProductRetrieverTest { @Mock private Config config; @Mock - private DataSourceFactory DataSourceFactory; + private DataSourceFactory dataSourceFactory; @Mock private AmazonProductDataSource amazonDataSource; @Mock @@ -36,7 +36,7 @@ class ProductRetrieverTest { @Mock private Product product; @Mock - private AbstractProductPersistence persistence; + private ProductPersistenceInterface persistence; private ProductRetriever productRetriever; @@ -45,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, persistence); } @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(Webshop.Amazon); + when(productDTO.getDataOrigin()).thenReturn(Webshop.AMAZON); // Act Product result = productRetriever.getProductFromAmazon(asin); @@ -73,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(Webshop.eBay); + when(productDTO.getDataOrigin()).thenReturn(Webshop.EBAY); // Act Product result = productRetriever.getProductFromEbay(productQuery); @@ -93,11 +93,10 @@ class ProductRetrieverTest { void getProductFromPersistence_ValidProductId_ReturnsProduct() { // Arrange String productId = "123"; - 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(Webshop.Amazon); + when(productDTO.getDataOrigin()).thenReturn(Webshop.AMAZON); // Act Product result = productRetriever.getProductFromPersistence(productId); diff --git a/src/test/java/de/rwu/easydrop/service/validation/ProductValidatorTest.java b/src/test/java/de/rwu/easydrop/service/validation/ProductValidatorTest.java index 1ad2f6b..4058ea7 100644 --- a/src/test/java/de/rwu/easydrop/service/validation/ProductValidatorTest.java +++ b/src/test/java/de/rwu/easydrop/service/validation/ProductValidatorTest.java @@ -38,7 +38,7 @@ class ProductValidatorTest { // Arrange Product product = new Product(); product.setCurrentPrice(9.99); - product.setDataOrigin(Webshop.Amazon); + product.setDataOrigin(Webshop.AMAZON); product.setProductId("12345"); // Act and Assert @@ -61,7 +61,7 @@ class ProductValidatorTest { private static Product createProductWithZeroPrice() { Product product = new Product(); product.setCurrentPrice(0.00); - product.setDataOrigin(Webshop.Amazon); + product.setDataOrigin(Webshop.AMAZON); product.setProductId("12345"); return product; } @@ -69,7 +69,7 @@ class ProductValidatorTest { private static Product createProductWithEmptyProductId() { Product product = new Product(); product.setCurrentPrice(9.99); - product.setDataOrigin(Webshop.Amazon); + product.setDataOrigin(Webshop.AMAZON); product.setProductId(""); return product; } diff --git a/src/test/java/de/rwu/easydrop/service/writer/CatalogueWriterTest.java b/src/test/java/de/rwu/easydrop/service/writer/CatalogueWriterTest.java index c590733..22eb73b 100644 --- a/src/test/java/de/rwu/easydrop/service/writer/CatalogueWriterTest.java +++ b/src/test/java/de/rwu/easydrop/service/writer/CatalogueWriterTest.java @@ -13,7 +13,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import de.rwu.easydrop.api.dto.ProductDTO; -import de.rwu.easydrop.data.connector.AbstractProductPersistence; +import de.rwu.easydrop.data.connector.ProductPersistenceInterface; import de.rwu.easydrop.model.Product; import de.rwu.easydrop.model.ProductCatalogue; import de.rwu.easydrop.model.Webshop; @@ -21,7 +21,7 @@ import de.rwu.easydrop.model.Webshop; class CatalogueWriterTest { @Mock - private AbstractProductPersistence persistenceMock; + private ProductPersistenceInterface persistenceMock; private CatalogueWriter catalogueWriter; @@ -40,19 +40,19 @@ class CatalogueWriterTest { catalogueWriter.writeCatalogues(catalogues); // Assert - verify(persistenceMock, times(4)).saveProduct(any(ProductDTO.class)); + verify(persistenceMock, times(4)).writeProduct(any(ProductDTO.class)); } private List createSampleCatalogues() { List catalogues = new ArrayList<>(); ProductCatalogue catalogue1 = new ProductCatalogue("Catalogue 1", "Sample catalogue 1"); - catalogue1.addProduct(createSampleProduct(Webshop.Amazon, "ID 1")); - catalogue1.addProduct(createSampleProduct(Webshop.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(Webshop.Amazon, "ID 3")); - catalogue2.addProduct(createSampleProduct(Webshop.eBay, "ID 4")); + catalogue2.addProduct(createSampleProduct(Webshop.AMAZON, "ID 3")); + catalogue2.addProduct(createSampleProduct(Webshop.EBAY, "ID 4")); catalogues.add(catalogue1); catalogues.add(catalogue2); diff --git a/src/test/java/de/rwu/easydrop/service/writer/ProductWriterTest.java b/src/test/java/de/rwu/easydrop/service/writer/ProductWriterTest.java index e2bd870..60f9198 100644 --- a/src/test/java/de/rwu/easydrop/service/writer/ProductWriterTest.java +++ b/src/test/java/de/rwu/easydrop/service/writer/ProductWriterTest.java @@ -10,22 +10,21 @@ import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import de.rwu.easydrop.api.dto.ProductDTO; -import de.rwu.easydrop.data.connector.AbstractProductPersistence; +import de.rwu.easydrop.data.connector.ProductPersistenceInterface; import de.rwu.easydrop.model.Product; import de.rwu.easydrop.model.Webshop; class ProductWriterTest { @Mock - private AbstractProductPersistence persistence; + private ProductPersistenceInterface persistence; private ProductWriter productWriter; @BeforeEach public void setup() { MockitoAnnotations.openMocks(this); - productWriter = new ProductWriter(); - productWriter.setPersistence(persistence); + productWriter = new ProductWriter(persistence); } @Test @@ -33,14 +32,14 @@ class ProductWriterTest { // Arrange Product product = new Product(); product.setProductId("12345"); - product.setDataOrigin(Webshop.Amazon); + product.setDataOrigin(Webshop.AMAZON); product.setCurrentPrice(9.99); // Act productWriter.writeProductToPersistence(product); // Assert - Mockito.verify(persistence).saveProduct(any(ProductDTO.class)); + Mockito.verify(persistence).writeProduct(any(ProductDTO.class)); } @Test @@ -48,7 +47,7 @@ class ProductWriterTest { // Arrange Product product = new Product(); product.setProductId(""); - product.setDataOrigin(Webshop.Amazon); + product.setDataOrigin(Webshop.AMAZON); // Act and Assert assertThrows(Exception.class, () -> productWriter.writeProductToPersistence(product)); diff --git a/src/test/resources/test.malformed.products-config.json b/src/test/resources/test.malformed.products-config.json index 00d0092..1d7c6fe 100644 --- a/src/test/resources/test.malformed.products-config.json +++ b/src/test/resources/test.malformed.products-config.json @@ -5,10 +5,10 @@ description: "Integration Testing Product", "identifiers": [ { - "Amazon": "DEMO-AMAZON-001" + "AMAZON": "DEMO-AMAZON-001" }, { - "eBay": "DEMO-EBAY-001" + "EBAY": "DEMO-EBAY-001" } ] ] diff --git a/src/test/resources/test.products-config.json b/src/test/resources/test.products-config.json index 44262c8..c48cfc6 100644 --- a/src/test/resources/test.products-config.json +++ b/src/test/resources/test.products-config.json @@ -5,10 +5,10 @@ "description": "Integration Testing Product", "identifiers": [ { - "Amazon": "DEMO-AMAZON-001" + "AMAZON": "DEMO-AMAZON-001" }, { - "eBay": "DEMO-EBAY-001" + "EBAY": "DEMO-EBAY-001" } ] }