#37 Added tests for ebay data source
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
package de.rwu.easydrop.api.client;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
import com.jayway.jsonpath.JsonPath;
|
||||
import com.jayway.jsonpath.ReadContext;
|
||||
|
||||
import de.rwu.easydrop.api.dto.ProductDTO;
|
||||
|
||||
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 String demoQuery = "iPhone";
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
demoDataSource = new EbayItemDataSource(demoApiUrl, demoApiKey);
|
||||
MockitoAnnotations.openMocks(this);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testConstructor() {
|
||||
// Assert
|
||||
try {
|
||||
Field baseUrlField = EbayItemDataSource.class.getDeclaredField("baseUrl");
|
||||
baseUrlField.setAccessible(true);
|
||||
Assertions.assertEquals(demoApiUrl, baseUrlField.get(demoDataSource));
|
||||
|
||||
Field apiKeyField = EbayItemDataSource.class.getDeclaredField("apiKey");
|
||||
apiKeyField.setAccessible(true);
|
||||
Assertions.assertEquals(demoApiKey, apiKeyField.get(demoDataSource));
|
||||
} catch (NoSuchFieldException e) {
|
||||
Assertions.fail();
|
||||
} catch (IllegalAccessException e) {
|
||||
Assertions.fail();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void createApiUrl_ValidSearchQuery_ReturnsValidUrl() throws MalformedURLException {
|
||||
String searchQuery = demoQuery;
|
||||
URL apiUrl = demoDataSource.createApiUrl(searchQuery);
|
||||
|
||||
assertNotNull(apiUrl);
|
||||
assertEquals("https://www.example.com/api/buy/browse/v1/item_summary/search?q=iPhone&limit=1&offset=0",
|
||||
apiUrl.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
void buildProductDTO_ValidJson_ReturnsValidProductDTO() {
|
||||
ProductDTO product = new ProductDTO(demoQuery, demoDataOrigin);
|
||||
String json = "{\"itemSummaries\":[{\"shippingOptions\":[{\"guaranteedDelivery\":true,\"shippingCost\":{\"value\":10}}],\"price\":{\"value\":999.99},\"seller\":{\"username\":\"seller123\"}}]}";
|
||||
|
||||
ProductDTO result = demoDataSource.buildProductDTO(product, json);
|
||||
|
||||
assertEquals(demoDataOrigin, result.getDataOrigin());
|
||||
assertEquals(true, result.isAvailable());
|
||||
assertEquals(999.99, result.getCurrentPrice());
|
||||
assertEquals(10.0, result.getDeliveryPrice());
|
||||
assertEquals("seller123", result.getMerchant());
|
||||
}
|
||||
|
||||
@Test
|
||||
void buildProductDTO_InvalidJson_ReturnsProductDTOWithDefaults() {
|
||||
ProductDTO product = new ProductDTO(demoQuery, demoDataOrigin);
|
||||
String json = "{\"itemSummaries\":[]}"; // Empty JSON to simulate missing data
|
||||
|
||||
ProductDTO result = demoDataSource.buildProductDTO(product, json);
|
||||
|
||||
assertEquals("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
|
||||
assertEquals(null, result.getMerchant()); // Default value for String
|
||||
}
|
||||
|
||||
@Test
|
||||
void getDataOrigin_ReturnsExpectedDataOrigin() {
|
||||
String dataOrigin = demoDataSource.getDataOrigin();
|
||||
assertEquals(demoDataOrigin, dataOrigin);
|
||||
}
|
||||
|
||||
@Test
|
||||
void getApiKey_ReturnsExpectedApiKey() {
|
||||
String apiKey = demoDataSource.getApiKey();
|
||||
assertEquals(demoApiKey, apiKey);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user