public void ReturnItemsForQuery() { //Arrange WalmartApiConfig urls = ApiTestDataHelper.GetApiConfig(); IApiRequestBuilder requestbuilder = new ApiRequestBuilder(); var mockWalmartApiRequestManager = new Mock <IHttpApiRequestManager>(); var responseDataSample = ApiTestDataHelper .GetApiResponseDataFromResource("Walmart.Api.Client.Tests.SearchApiSampleResponse.json"); mockWalmartApiRequestManager.Setup(mgr => mgr.GetDataAsync(It.IsAny <String>())) .Returns(Task.FromResult <string>(responseDataSample)); var mockLogger = new Mock <ILogger <ApiServiceBase> >(); IWalmartApiService productService = new WalmartApiService(mockWalmartApiRequestManager.Object, requestbuilder, urls, mockLogger.Object); SearchRequestInput request = new SearchRequestInput { query = "Ben & Jerry's ice cream", sort = SearchRequestSortType.bestseller }; //Act var result = productService.SearchProductsAsync(request).Result; //Assert Assert.False(result.HasError); Assert.Equal(10, result.Response.items.Count); mockWalmartApiRequestManager.VerifyAll(); }
public void ReturnItemDetailForSingleProduct() { //Arrange WalmartApiConfig urls = ApiTestDataHelper.GetApiConfig(); IApiRequestBuilder requestbuilder = new ApiRequestBuilder(); var mockWalmartApiRequestManager = new Mock <IHttpApiRequestManager>(); var responseDataSample = ApiTestDataHelper .GetApiResponseDataFromResource("Walmart.Api.Client.Tests.ProductLookupSingleItemSampleResponse.json"); mockWalmartApiRequestManager.Setup(mgr => mgr.GetDataAsync(It.IsAny <String>())) .Returns(Task.FromResult <string>(responseDataSample)); var mockLogger = new Mock <ILogger <ApiServiceBase> >(); IWalmartApiService productService = new WalmartApiService(mockWalmartApiRequestManager.Object, requestbuilder, urls, mockLogger.Object); var itemId = 10294196; ProductLookupRequestInput request = new ProductLookupRequestInput { ids = new List <int> { itemId } }; //Act var result = productService.GetProductDetailAsync(request).Result; //Assert Assert.False(result.HasError); Assert.Single <FullResponseItem>(result.Response.items); Assert.Equal(itemId, result.Response.items[0].ItemId); mockWalmartApiRequestManager.VerifyAll(); }
public void ReturnEmptyResponseWhenRecommendationServiceFails() { //Arrange WalmartApiConfig urls = ApiTestDataHelper.GetApiConfig(); IApiRequestBuilder requestbuilder = new ApiRequestBuilder(); var mockWalmartApiRequestManager = new Mock <IHttpApiRequestManager>(); var responseDataSample = "{\"errors\":[{\"code\":4022,\"message\":\"No recommendations found for item 36461211\"}]}"; mockWalmartApiRequestManager.Setup(mgr => mgr.GetDataAsync(It.IsAny <String>())) .Returns(Task.FromResult <string>(responseDataSample)); var mockLogger = new Mock <ILogger <ApiServiceBase> >(); IWalmartApiService productService = new WalmartApiService(mockWalmartApiRequestManager.Object, requestbuilder, urls, mockLogger.Object); var itemId = 36461211; //Act var result = productService.GetProductRecommendationAsync(itemId).Result; //Assert Assert.False(result.HasError); Assert.Null(result.Response); mockWalmartApiRequestManager.VerifyAll(); }
public void ReturnRecommendationsForProduct() { //Arrange WalmartApiConfig urls = ApiTestDataHelper.GetApiConfig(); IApiRequestBuilder requestbuilder = new ApiRequestBuilder(); var mockWalmartApiRequestManager = new Mock <IHttpApiRequestManager>(); var responseDataSample = ApiTestDataHelper .GetApiResponseDataFromResource("Walmart.Api.Client.Tests.ProductRecommendationSampleResponse.json"); mockWalmartApiRequestManager.Setup(mgr => mgr.GetDataAsync(It.IsAny <String>())) .Returns(Task.FromResult <string>(responseDataSample)); var mockLogger = new Mock <ILogger <ApiServiceBase> >(); IWalmartApiService productService = new WalmartApiService(mockWalmartApiRequestManager.Object, requestbuilder, urls, mockLogger.Object); var itemId = 36461211; //Act var result = productService.GetProductRecommendationAsync(itemId).Result; //Assert Assert.False(result.HasError); Assert.Equal(11, result.Response.Count); mockWalmartApiRequestManager.VerifyAll(); }
public static void Initialize(TestContext testContext) //https://docs.microsoft.com/en-us/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file?view=vs-2017 { walmartApiConfig = new WalmartApiConfig() { API_KEY = testContext.Properties["API_KEY"].ToString(), BASE_API_URI = testContext.Properties["BASE_API_URI"].ToString() }; }
public WalmartApiService(IHttpApiRequestManager apiRequestManager, IApiRequestBuilder searchRequestBuilder, WalmartApiConfig walmartApiConfig, ILogger <ApiServiceBase> logger) : base(logger) { _apiRequestManager = apiRequestManager; _apiRequestBuilder = searchRequestBuilder; _walmartApiConfig = walmartApiConfig; }
public async Task GetItemByItemId_ShouldReturnItemForGivenItemId() { var walmartConfig = new WalmartApiConfig() { API_KEY = "52txne3qyx4pnke2wxacsxff", BASE_API_URI = "http://api.walmartlabs.com/v1/" }; var mock = new Mock <IOptions <WalmartApiConfig> >(); mock.Setup(m => m.Value).Returns(walmartConfig); walmartService = new WalmartService(mock.Object); var itemId = "12417832"; var result = await walmartService.GetItemByItemIdAsync(itemId); Assert.AreEqual(result[0].itemId, itemId); }
public void ReturnItemDetailsForMultipleProducts() { //Arrange WalmartApiConfig urls = ApiTestDataHelper.GetApiConfig(); IApiRequestBuilder requestbuilder = new ApiRequestBuilder(); var mockWalmartApiRequestManager = new Mock <IHttpApiRequestManager>(); var responseDataSample = ApiTestDataHelper .GetApiResponseDataFromResource("Walmart.Api.Client.Tests.ProductLookupMultiItemSampleResponse.json"); mockWalmartApiRequestManager.Setup(mgr => mgr.GetDataAsync(It.IsAny <String>())) .Returns(Task.FromResult <string>(responseDataSample)); var mockLogger = new Mock <ILogger <ApiServiceBase> >(); IWalmartApiService productService = new WalmartApiService(mockWalmartApiRequestManager.Object, requestbuilder, urls, mockLogger.Object); var itemIds = new List <int> { 10294196, 893337, 817612485, 39661524, 654023063, 10294197, 10403812, 156205102, 20691516, 10324477 }; ProductLookupRequestInput request = new ProductLookupRequestInput { ids = itemIds }; //Act var result = productService.GetProductDetailAsync(request).Result; //Assert Assert.False(result.HasError); Assert.Equal(10, result.Response.items.Count); itemIds.ForEach(item => { Assert.Single(result.Response.items, p => p.ItemId == item); }); mockWalmartApiRequestManager.VerifyAll(); }
public void ReturnErrorCodeWhenApiCallFails() { //Arrange WalmartApiConfig urls = ApiTestDataHelper.GetApiConfig(); IApiRequestBuilder requestbuilder = new ApiRequestBuilder(); var mockWalmartApiRequestManager = new Mock <IHttpApiRequestManager>(); mockWalmartApiRequestManager.Setup(mgr => mgr.GetDataAsync(It.IsAny <String>())) .Returns(Task.FromResult <string>("")); var mockWebResponse = new Mock <HttpWebResponse>(); mockWebResponse.Setup(res => res.StatusCode).Returns(HttpStatusCode.BadRequest); mockWalmartApiRequestManager.Setup(mgr => mgr.GetDataAsync(It.IsAny <String>())) .Throws( new WebException("Missing search query", null, WebExceptionStatus.UnknownError, mockWebResponse.Object)); var mockLogger = new Mock <ILogger <ApiServiceBase> >(); IWalmartApiService productService = new WalmartApiService(mockWalmartApiRequestManager.Object, requestbuilder, urls, mockLogger.Object); SearchRequestInput request = new SearchRequestInput { query = "Ben & Jerry's ice cream", sort = SearchRequestSortType.bestseller }; //Act var result = productService.SearchProductsAsync(request).Result; //Assert Assert.True(result.HasError); Assert.Equal("400", result.ErrorCode); mockWalmartApiRequestManager.VerifyAll(); mockWebResponse.VerifyAll(); }
public WalmartService(IOptions <WalmartApiConfig> walmartApiConfig) { this.walmartApiConfig = walmartApiConfig.Value; }