Updated test cases

This commit is contained in:
Marvin Scham
2023-06-27 06:45:25 +02:00
parent 9927b8f959
commit f2993a19a8
27 changed files with 104 additions and 331 deletions

View File

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