public void QuantityUpdate_SkuNotFound()
        {
            var testsku        = Testsku;
            var skusQuantities = new Dictionary <string, int>
            {
                { testsku, 3 }
            };
            var variation = new WooCommerceVariation
            {
                Id            = 1,
                Sku           = "another sku",
                Quantity      = 1,
                ManagingStock = true
            };

            var result = new QuantityUpdate(variation, skusQuantities);

            Assert.IsFalse(result.IsUpdateNeeded);
        }
        public void VariationsToUpdate_Dictionary_ToJson()
        {
            var          productId = new ProductId(3);
            const string sku       = "testsku";
            const int    quantity  = 213;
            var          variation = new WooCommerceVariation
            {
                Sku      = sku,
                Quantity = quantity
            };
            var skusQuantities = new Dictionary <string, int>
            {
                {
                    sku, quantity
                }
            };
            IEnumerable <QuantityUpdate> quantityUpdate = new List <QuantityUpdate>
            {
                new QuantityUpdate(variation, skusQuantities)
            };
            var variationsToUpdate = new Dictionary <ProductId, IEnumerable <QuantityUpdate> >
            {
                {
                    productId, quantityUpdate
                }
            };

            var json = variationsToUpdate.Select(x => new { ProductId = x.Key.Id, Variations = x.Value }).ToJson();

            var deserialized = JsonConvert.DeserializeObject <IEnumerable <ProductVariationsForJson> >(json).ToList();

            deserialized.Count.Should().Be(variationsToUpdate.Count);
            var firstItem = deserialized.First();

            firstItem.ProductId.Should().Be(productId.Id);
            var firstVariation = firstItem.Variations.First();

            firstVariation.Should().BeEquivalentTo(quantityUpdate.First());
        }
        public void QuantityUpdate_CaseInsensitiveSkuUpdatesInventory()
        {
            var skusQuantities = new Dictionary <string, int>
            {
                { Testsku, 3 }
            };
            var testSkuUpper = Testsku.ToUpper();
            var variation    = new WooCommerceVariation
            {
                Id            = 1,
                Sku           = testSkuUpper,
                Quantity      = 1,
                ManagingStock = true
            };

            var result = new QuantityUpdate(variation, skusQuantities);

            Assert.IsTrue(result.IsUpdateNeeded);
            Assert.AreEqual(variation.Id, result.Id);
            Assert.AreEqual(variation.Sku.ToLower(), result.Sku.ToLower());
            Assert.AreEqual(skusQuantities[Testsku], result.Quantity);
        }
        public void QuantityUpdate_BlankQuantityInWooCommerce()
        {
            var testsku        = Testsku;
            var skusQuantities = new Dictionary <string, int>
            {
                { testsku, 3 }
            };
            var variation = new WooCommerceVariation
            {
                Id            = 1,
                Sku           = testsku,
                Quantity      = null,
                ManagingStock = true
            };

            var result = new QuantityUpdate(variation, skusQuantities);

            Assert.IsTrue(result.IsUpdateNeeded);
            Assert.AreEqual(variation.Id, result.Id);
            Assert.AreEqual(variation.Sku, result.Sku);
            Assert.AreEqual(skusQuantities[testsku], result.Quantity);
        }