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();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 5
0
 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()
     };
 }
Exemplo n.º 6
0
 public WalmartApiService(IHttpApiRequestManager apiRequestManager,
                          IApiRequestBuilder searchRequestBuilder,
                          WalmartApiConfig walmartApiConfig,
                          ILogger <ApiServiceBase> logger) : base(logger)
 {
     _apiRequestManager = apiRequestManager;
     _apiRequestBuilder = searchRequestBuilder;
     _walmartApiConfig  = walmartApiConfig;
 }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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();
        }
Exemplo n.º 10
0
 public WalmartService(IOptions <WalmartApiConfig> walmartApiConfig)
 {
     this.walmartApiConfig = walmartApiConfig.Value;
 }