public void ConvertToShoppingCartItems_NoResultTest()
        {
            var client = new ProductCatalogClient(null);
            var result = client.ConvertToShoppingCartItems("[]");

            Assert.IsFalse(result.Any());
        }
        public void PartsCanBeFound()
        {
            ProductCatalogClient client = new ProductCatalogClient();
            IList <Part>         parts  = client.GetPartsByProductSku("1000000000");

            Assert.AreEqual(2, parts.Count);
        }
        public void AddToCache_NoCacheControlTest()
        {
            var resource = "Products/products?id=0";
            var payload  = "[{\"productId\":\"0\",\"productName\":\"foo0\",\"productDescription\":\"bar\",\"price\":{}}]";

            var client = new ProductCatalogClient(_mockCache.Object);

            client.AddToCache(resource, null, payload);
        }
        public async Task RequestProductFromProductCatalog_CacheHitTest()
        {
            var cachedResponse = "[{\"productId\":\"0\",\"productName\":\"foo0\",\"productDescription\":\"bar\",\"price\":{}}]";

            _mockCache.Setup(t => t.Get("Products/products?id=0")).Returns(cachedResponse);

            var client   = new ProductCatalogClient(_mockCache.Object);
            var response = await client.RequestProductFromProductCatalog(new[] { 0 });

            Assert.AreEqual(cachedResponse, response);
        }
        public void AddToCache_CacheControlTest()
        {
            var resource = "Products/products?id=0";
            var maxAge   = TimeSpan.FromHours(1);
            var payload  = "[{\"productId\":\"0\",\"productName\":\"foo0\",\"productDescription\":\"bar\",\"price\":{}}]";

            _mockCache.Setup(t => t.Add(resource, maxAge, payload));

            var client = new ProductCatalogClient(_mockCache.Object);

            client.AddToCache(resource, maxAge, payload);
        }
        public void ConvertToShoppingCartItems_SingleTest()
        {
            var client   = new ProductCatalogClient(null);
            var response = "[{\"productId\":\"0\",\"productName\":\"foo0\",\"productDescription\":\"bar\",\"price\":{}}]";
            var result   = client.ConvertToShoppingCartItems(response);
            var product  = result.Single();

            Assert.AreEqual(0, product.ProductCatalogId);
            Assert.AreEqual("foo0", product.ProductName);
            Assert.AreEqual("bar", product.ProductDescription);
            Assert.IsNotNull(product.Price);
            Assert.IsFalse(string.IsNullOrEmpty(product.Price.Currency));
        }
        public async Task GetItemsFromCatalogService_CacheHitTest()
        {
            var cachedResponse = "[{\"productId\":\"0\",\"productName\":\"foo0\",\"productDescription\":\"bar\",\"price\":{}}]";

            _mockCache.Setup(t => t.Get("Products/products?id=0")).Returns(cachedResponse);

            var client   = new ProductCatalogClient(_mockCache.Object);
            var response = await client.GetItemsFromCatalogService(new[] { 0 });

            var product = response.Single();

            Assert.AreEqual(0, product.ProductCatalogId);
            Assert.AreEqual("foo0", product.ProductName);
            Assert.AreEqual("bar", product.ProductDescription);
            Assert.IsNotNull(product.Price);
            Assert.IsFalse(string.IsNullOrEmpty(product.Price.Currency));
        }