Пример #1
0
        public void Can_Rebuild_Product_Index()
        {
            // Arrange
            PreTestDataWorker.DeleteAllProducts();
            var products = MockProductDataMaker.MockProductCollectionForInserting(ProductCount);

            _productService.Save(products);

            //// Act
            var timer = new Stopwatch();

            timer.Start();
            ExamineManager.Instance.IndexProviderCollection["MerchelloProductIndexer"].RebuildIndex();
            timer.Stop();
            Console.Write("Time to index: " + timer.Elapsed.ToString());

            //// Assert
            var searcher = ExamineManager.Instance.SearchProviderCollection["MerchelloProductSearcher"];

            var criteria = searcher.CreateSearchCriteria(Merchello.Examine.IndexTypes.ProductVariant);

            criteria.Field("allDocs", "1");
            var results = searcher.Search(criteria);

            Assert.AreEqual(products.Count(), results.Count());
        }
Пример #2
0
        public void Can_Retrieve_A_Product_From_The_Index_By_Sku()
        {
            //// Arrange

            var merchello = new MerchelloHelper(MerchelloContext.Current.Services, false);

            var productService = this.PreTestDataWorker.ProductService;

            var product = MockProductDataMaker.MockProductCollectionForInserting(1).First();

            product.Height      = 11M;
            product.Width       = 11M;
            product.Length      = 11M;
            product.CostOfGoods = 15M;
            product.OnSale      = true;
            product.SalePrice   = 18M;
            productService.Save(product);


            this._provider.AddProductToIndex(product);

            //// Act
            var productDisplay = merchello.Query.Product.GetBySku(product.Sku);

            //// Assert
            Assert.NotNull(productDisplay);
            Assert.AreEqual(product.Key, productDisplay.Key);
        }
Пример #3
0
        public void Sum_Of_Product_Prices_Mulitplied_By_Quantity_Equals_Baskets_TotalBasketPrice()
        {
            //// Arrange
            decimal expectedPrice = 0;
            var     basket        = Basket.GetBasket(_customer, _itemCache);
            var     product1      = MockProductDataMaker.MockProductComplete(Guid.NewGuid());
            var     product2      = MockProductDataMaker.MockProductComplete(Guid.NewGuid());
            var     product3      = MockProductDataMaker.MockProductComplete(Guid.NewGuid());
            var     product4      = MockProductDataMaker.MockProductComplete(Guid.NewGuid());

            basket.AddItem(product1, product1.Name, 1);
            expectedPrice += product1.Price;

            basket.AddItem(product2, product2.Name, 2);
            expectedPrice += (product2.Price * 2);

            basket.AddItem(product3, product3.Name, 3);
            expectedPrice += (product3.Price * 3);

            basket.AddItem(product4, product4.Name, 4);
            expectedPrice += (product4.Price * 4);

            //// Act
            var basketTotal = basket.TotalBasketPrice;

            //// Assert
            Assert.AreEqual(expectedPrice, basketTotal);
        }
Пример #4
0
        public void Init()
        {
            _extendedData = new ExtendedDataCollection();
            var product = MockProductDataMaker.MockProductComplete(Guid.NewGuid());

            _extendedData.AddProductVariantValues(((Product)product).MasterVariant);
        }
Пример #5
0
        public void Can_Add_A_New_Product_To_The_Index()
        {
            PreTestDataWorker.DeleteAllProducts();

            //// Arrange
            var provider = (ProductIndexer)ExamineManager.Instance.IndexProviderCollection["MerchelloProductIndexer"];

            provider.RebuildIndex();

            var searcher = ExamineManager.Instance.SearchProviderCollection["MerchelloProductSearcher"];

            var productVariantService = PreTestDataWorker.ProductVariantService;

            //// Act
            var product = MockProductDataMaker.MockProductCollectionForInserting(1).First();

            product.ProductOptions.Add(new ProductOption("Color"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Blue", "Blue"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Red", "Red"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Green", "Green"));
            product.ProductOptions.Add(new ProductOption("Size"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Small", "Sm"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Medium", "Med"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Large", "Lg"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("X-Large", "XL"));
            product.Height      = 11M;
            product.Width       = 11M;
            product.Length      = 11M;
            product.CostOfGoods = 15M;
            product.OnSale      = true;
            product.SalePrice   = 18M;
            _productService.Save(product);


            var attributes = new ProductAttributeCollection()
            {
                product.ProductOptions.First(x => x.Name == "Color").Choices.First(x => x.Sku == "Blue"),
                product.ProductOptions.First(x => x.Name == "Size").Choices.First(x => x.Sku == "XL")
            };

            productVariantService.CreateProductVariantWithKey(product, attributes);

            provider.AddProductToIndex(product);

            //// Assert
            var criteria = searcher.CreateSearchCriteria("productvariant", BooleanOperation.And);

            criteria.Field("productKey", product.Key.ToString()).And().Field("master", "true");

            ISearchResults results = searcher.Search(criteria);

            Assert.IsTrue(results.Count() == 1);
            var result = results.First();

            Assert.NotNull(result.Fields["productOptions"]);

            provider.RebuildIndex();
        }
Пример #6
0
        /// <summary>
        /// Saves a product record to the database and returns and instance of <see cref="IProduct"/> represents that record
        /// </summary>
        /// <returns><see cref="IProduct"/></returns>
        public IProduct MakeExistingProduct(bool shippable = true, decimal weight = 0, decimal price = 0, bool taxable = true)
        {
            var product = MockProductDataMaker.MockProductForInserting(shippable, weight, price, taxable);

            ProductService.Save(product);
            product.AddToCatalogInventory(WarehouseCatalog);
            ProductService.Save(product);
            return(product);
        }
Пример #7
0
        public void Can_RetrieveProductOptions_From_ProductInIndex()
        {
            //// Arrange

            var merchello = new MerchelloHelper(MerchelloContext.Current.Services, false);

            var productService = this.PreTestDataWorker.ProductService;

            var product = MockProductDataMaker.MockProductCollectionForInserting(1).First();

            product.ProductOptions.Add(new ProductOption("Color"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Blue", "Blue"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Red", "Red"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Green", "Green"));
            product.ProductOptions.Add(new ProductOption("Size"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Small", "Sm"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Medium", "Med"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Large", "Lg"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("X-Large", "XL"));
            product.Height         = 11M;
            product.Width          = 11M;
            product.Length         = 11M;
            product.CostOfGoods    = 15M;
            product.OnSale         = true;
            product.SalePrice      = 18M;
            product.TrackInventory = true;
            product.AddToCatalogInventory(this._warehouse.WarehouseCatalogs.First());
            productService.Save(product);

            foreach (var variant in product.ProductVariants)
            {
                variant.CatalogInventories.First().Count = 1;
            }
            productService.Save(product);

            foreach (var p in product.ProductVariants)
            {
                Assert.AreEqual(1, p.TotalInventoryCount, "Preindexed product variant count");
            }

            this._provider.AddProductToIndex(product);

            //// Act
            var productDisplay = merchello.Query.Product.GetByKey(product.Key);

            //// Assert
            Assert.NotNull(productDisplay);
            Assert.IsTrue(productDisplay.ProductOptions.Any());

            //http://issues.merchello.com/youtrack/issue/M-604
            foreach (var variant in productDisplay.ProductVariants)
            {
                Assert.AreEqual(1, variant.TotalInventoryCount);
            }
            Assert.AreEqual(12, productDisplay.TotalInventoryCount, "Total inventory count failed");
        }
Пример #8
0
        /// <summary>
        /// Saves a collection of products to the database and return a collection of <see cref="IProduct"/> representing that collection
        /// </summary>
        /// <param name="count"></param>
        /// <returns></returns>
        public IEnumerable <IProduct> MakeExistingProductCollection(int count)
        {
            var products = MockProductDataMaker.MockProductCollectionForInserting(count);

            foreach (var p in products)
            {
                ProductService.Save(p);
                yield return(p);
            }
        }
        public void Can_Filter_CollectionProducts()
        {
            //// Arrange
            var products = new List <IProduct>();
            var p1       = MockProductDataMaker.MockProductForInserting("Tester one", "tester-one", 10M);
            var p2       = MockProductDataMaker.MockProductForInserting("Tester two ", "tester-two", 10M);
            var p3       = MockProductDataMaker.MockProductForInserting("Mock one", "mock-two", 10M);
            var p4       = MockProductDataMaker.MockProductForInserting("Cat", "cat", 10M);
            var p5       = MockProductDataMaker.MockProductForInserting("Excluded on", "excluded-one", 10M);

            products.Add(p1);
            products.Add(p2);
            products.Add(p3);
            products.Add(p4);

            _productService.Save(products);
            _productService.Save(p5);

            var collection = _entityCollectionService.CreateEntityCollectionWithKey(
                EntityType.Product,
                _providerKey,
                "Filter Collection Test");

            //// Act
            foreach (var p in products)
            {
                p.AddToCollection(collection.Key);
            }

            //// Act
            var cats    = new List <IProduct>();
            var testers = _productService.GetFromCollection(collection.Key, "tester", 1, long.MaxValue);

            Assert.IsTrue(testers.Items.Any());
            cats.AddRange(testers.Items.Where(x => x.Sku == "cat"));

            var ones = _productService.GetFromCollection(collection.Key, "one", 1, long.MaxValue);

            Assert.IsTrue(ones.Items.Any());
            cats.AddRange(ones.Items.Where(x => x.Sku == "cat"));

            var notOnes = ((ProductService)_productService).GetKeysNotInCollection(
                collection.Key,
                "one",
                1,
                long.MaxValue);


            //// Assert
            Assert.AreEqual(2, testers.TotalItems);
            Assert.AreEqual(2, ones.TotalItems);
            Assert.AreEqual(1, notOnes.TotalItems);
            Assert.IsFalse(cats.Any());
        }
        public void Can_Add_Products_To_Collections()
        {
            //// Arrange
            var products = MockProductDataMaker.MockProductCollectionForInserting(10).ToArray();

            _productService.Save(products);

            var collection1 = _entityCollectionService.CreateEntityCollectionWithKey(
                EntityType.Product,
                _providerKey,
                "Product Collection1");

            var provider1 = collection1.ResolveProvider <StaticProductCollectionProvider>();

            Assert.NotNull(provider1);
            Assert.AreEqual(typeof(StaticProductCollectionProvider), provider1.GetType());

            var collection2 = _entityCollectionService.CreateEntityCollectionWithKey(
                EntityType.Product,
                _providerKey,
                "Product Collection2");

            var provider2 = collection2.ResolveProvider <StaticProductCollectionProvider>();

            Assert.NotNull(provider2);
            Assert.AreEqual(typeof(StaticProductCollectionProvider), provider2.GetType());


            //// Act
            var odd = false;

            foreach (var p in products)
            {
                odd = !odd;
                p.AddToCollection(collection1.Key);
                if (odd)
                {
                    p.AddToCollection(collection2.Key);
                }
            }

            //// Assert
            var c1Products = collection1.GetEntities <IProduct>().ToArray();
            var c2Products = collection2.GetEntities <IProduct>().ToArray();

            Assert.IsTrue(c1Products.Any());
            Assert.IsTrue(c2Products.Any());

            Assert.Greater(c1Products.Count(), c2Products.Count());

            var p1 = c1Products.First();

            Assert.IsTrue(p1.GetCollectionsContaining().Any());
        }
Пример #11
0
        public void Can_Find_ProductDisplay_Price_Property()
        {
            //// Arrange
            var product = MockProductDataMaker.MockProductDisplayForInserting();

            //// Act
            var prop = product.GetType().GetProperty("Price", BindingFlags.Public | BindingFlags.Instance);

            //// Assert
            Assert.NotNull(prop);
        }
Пример #12
0
        public void Can_Save_A_Product()
        {
            //// Arrange
            var product = MockProductDataMaker.MockProductForInserting();

            //// Act
            _productService.Save(product);

            //// Assert
            Assert.IsTrue(product.HasIdentity);
        }
Пример #13
0
        public void Can_Create_A_Product()
        {
            //// Arrage
            var sku      = MockDataMakerBase.MockSku();
            var expected = MockProductDataMaker.MockProductForInserting("fake product", sku, 15.00m);

            //// Act
            var product = _productService.CreateProduct("fake product", sku, 15.00m);

            //// Assert
            Assert.AreEqual(expected.Name, product.Name);
        }
Пример #14
0
        public void Can_Add_A_Product_From_New_Product_Display()
        {
            //// Arrange
            var display = MockProductDataMaker.MockProductDisplayForInserting();

            //// Act
            var product = AddProduct(display);

            //// Assert
            Assert.NotNull(product);
            Assert.IsTrue(product.HasIdentity);
        }
Пример #15
0
        public void ProductIndex_Is_Updated_With_Product_Save()
        {
            //// Arrange
            var product = MockProductDataMaker.MockProductCollectionForInserting(1).First();


            //// Act
            _productService.Save(product);

            //// Assert
            Assert.IsTrue(_productSavedEventTriggered);
        }
Пример #16
0
        public void Init()
        {
            _customer = new AnonymousCustomer()
            {
                Key = Guid.NewGuid()
            };
            _itemCache = new ItemCache(_customer.Key, ItemCacheType.Basket)
            {
                Key = Guid.NewGuid()
            };

            _product = MockProductDataMaker.MockProductComplete(Guid.NewGuid());
        }
Пример #17
0
        public void Can_Add_A_ProductVariant_To_A_Basket_And_IsEmpty_Returns_False()
        {
            //// Arrange
            var basket  = Basket.GetBasket(_customer, _itemCache);
            var product = MockProductDataMaker.MockProductComplete(Guid.NewGuid());

            //// Act
            basket.AddItem(product.GetProductVariantForPurchase());

            //// Assert
            Assert.IsTrue(basket.Items.Any());
            Assert.IsFalse(basket.IsEmpty);
        }
Пример #18
0
        public void Init()
        {
            var warehouseService = PreTestDataWorker.WarehouseService;

            _warehouse = warehouseService.GetDefaultWarehouse();

            var productVariantService = PreTestDataWorker.ProductVariantService;
            var productService        = PreTestDataWorker.ProductService;

            var product = MockProductDataMaker.MockProductCollectionForInserting(1).First();

            product.ProductOptions.Add(new ProductOption("Color"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Blue", "Blue"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Red", "Red"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Green", "Green"));
            product.ProductOptions.Add(new ProductOption("Size"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Small", "Sm"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Medium", "Med"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Large", "Lg"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("X-Large", "XL"));
            product.Height                  = 11M;
            product.Width                   = 11M;
            product.Length                  = 11M;
            product.CostOfGoods             = 15M;
            product.OnSale                  = true;
            product.SalePrice               = 18M;
            product.Manufacturer            = "Nike";
            product.ManufacturerModelNumber = "N01-012021-A";
            product.TrackInventory          = true;
            productService.Save(product);

            _productKey = product.Key;

            var attributes = new ProductAttributeCollection()
            {
                product.ProductOptions.First(x => x.Name == "Color").Choices.First(x => x.Sku == "Blue"),
                product.ProductOptions.First(x => x.Name == "Size").Choices.First(x => x.Sku == "XL")
            };

            var variant = productVariantService.CreateProductVariantWithKey(product, attributes);

            variant.AddToCatalogInventory(_warehouse.DefaultCatalog());
            productVariantService.Save(variant);
            _productVariantKey = variant.Key;
            _examineId         = ((ProductVariant)variant).ExamineId;

            var provider = (ProductIndexer)ExamineManager.Instance.IndexProviderCollection["MerchelloProductIndexer"];

            provider.AddProductToIndex(product);
        }
Пример #19
0
        public void Can_Save_Multiple_Products()
        {
            //// Arrange
            var expected  = 10;
            var generated = MockProductDataMaker.MockProductCollectionForInserting(expected);

            //// Act
            _productService.Save(generated);

            //// Assert
            var retrieved = ((ProductService)_productService).GetAll();

            Assert.IsTrue(retrieved.Any());
            Assert.AreEqual(expected, retrieved.Count());
        }
Пример #20
0
        public void Can_RetrieveProductOptions_From_ProductInIndex()
        {
            //// Arrange

            var merchello = new MerchelloHelper(MerchelloContext.Services);

            var productVariantService = PreTestDataWorker.ProductVariantService;
            var productService        = PreTestDataWorker.ProductService;

            var product = MockProductDataMaker.MockProductCollectionForInserting(1).First();

            product.ProductOptions.Add(new ProductOption("Color"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Blue", "Blue"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Red", "Red"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Green", "Green"));
            product.ProductOptions.Add(new ProductOption("Size"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Small", "Sm"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Medium", "Med"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Large", "Lg"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("X-Large", "XL"));
            product.Height      = 11M;
            product.Width       = 11M;
            product.Length      = 11M;
            product.CostOfGoods = 15M;
            product.OnSale      = true;
            product.SalePrice   = 18M;
            productService.Save(product);


            var attributes = new ProductAttributeCollection()
            {
                product.ProductOptions.First(x => x.Name == "Color").Choices.First(x => x.Sku == "Blue"),
                product.ProductOptions.First(x => x.Name == "Size").Choices.First(x => x.Sku == "XL")
            };

            productVariantService.CreateProductVariantWithKey(product, attributes);

            _provider.AddProductToIndex(product);

            //// Act
            var productDisplay = merchello.Query.Product.GetByKey(product.Key);

            //// Assert
            Assert.NotNull(productDisplay);
            Assert.IsTrue(productDisplay.ProductOptions.Any());
        }
Пример #21
0
        public void Can_Convert_A_LineItem_Of_Type_ItemCacheLineItem_To_A_InvoiceLineItem()
        {
            //// Arrange
            var product      = MockProductDataMaker.MockProductForInserting();
            var extendedData = new ExtendedDataCollection();

            extendedData.AddProductVariantValues(((Product)product).MasterVariant);
            var itemCacheLineItem = new ItemCacheLineItem(LineItemType.Product, product.Name,
                                                          product.Sku, 2, 2 * product.Price, extendedData);

            //// Act
            var invoiceLineItem = itemCacheLineItem.AsLineItemOf <InvoiceLineItem>();

            //// Assert
            Assert.NotNull(invoiceLineItem);
            Assert.AreEqual(Guid.Empty, invoiceLineItem.ContainerKey);
            Assert.AreEqual(typeof(InvoiceLineItem), invoiceLineItem.GetType());
        }
Пример #22
0
        public void Can_Map_ProductDisplay_To_ProductVariantDisplay()
        {
            //// Arrange
            var product    = MockProductDataMaker.MockProductDisplayForInserting();
            var key        = Guid.NewGuid();
            var variantKey = Guid.NewGuid();

            product.Key = key;
            product.ProductVariantKey = variantKey;

            //// Act
            var variant = AutoMapper.Mapper.Map <ProductVariantDisplay>(product);

            //// Assert
            Assert.NotNull(variant);
            Assert.AreEqual(variantKey, variant.Key, "Variant key did not match");
            Assert.AreEqual(key, variant.ProductKey, "Product key did not match");
        }
Пример #23
0
        public void Can_Find_An_Update_ProductDisplay_Price()
        {
            //// Arrange
            var product  = MockProductDataMaker.MockProductDisplayForInserting();
            var oldPrice = product.Price;

            //// Act
            var propInfo = product.GetType().GetProperty("Price", BindingFlags.Public | BindingFlags.Instance);

            if (propInfo != null && propInfo.CanRead)
            {
                propInfo.SetValue(product, 20M, null);
            }

            //// Assert
            Console.WriteLine("Old price: {0}", oldPrice);
            Assert.AreNotEqual(oldPrice, product.Price);
            Assert.AreEqual(20M, product.Price);
        }
Пример #24
0
        public void GetProductByKeyReturnsCorrectItemFromRepository()
        {
            //// Arrange
            Guid          productKey    = Guid.NewGuid();
            ProductActual productActual = MockProductDataMaker.MockProductComplete(productKey) as ProductActual;

            var MockProductService = new Mock <IProductService>();

            MockProductService.Setup(cs => cs.GetByKey(productKey)).Returns(productActual);

            MerchelloContext merchelloContext = GetMerchelloContext(MockProductService.Object);

            ProductApiController ctrl = new ProductApiController(merchelloContext, tempUmbracoContext);

            //// Act
            var result = ctrl.GetProduct(productKey);

            //// Assert
            Assert.AreEqual(productActual, result);
        }
Пример #25
0
        public void Can_Update_Product_Options_Without_Breaking_Choices()
        {
            //// Arrange
            var product = MockProductDataMaker.MockProductForInserting(weight: 10M);

            product.ProductOptions.Add(new ProductOption("Color"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Color1", "Color1"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Color2", "Color2"));
            product.ProductOptions.Add(new ProductOption("Size"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Size1", "Size1"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Size2", "Size2"));

            //// Act
            _productService.Save(product);
            Assert.IsTrue(product.ProductVariants.Any());
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Color3", "Color3"));
            _productService.Save(product);

            Assert.IsTrue(product.ProductVariants.Any());
        }
        public override void FixtureSetup()
        {
            base.FixtureSetup();


            var defaultWarehouse = DbPreTestDataWorker.WarehouseService.GetDefaultWarehouse();
            var defaultCatalog   = defaultWarehouse.WarehouseCatalogs.FirstOrDefault();

            if (defaultCatalog == null)
            {
                Assert.Ignore("Default WarehouseCatalog is null");
            }

            DbPreTestDataWorker.DeleteAllShipCountries();
            var uk        = MerchelloContext.Current.Services.StoreSettingService.GetCountryByCode("GB");
            var ukCountry = new ShipCountry(defaultCatalog.Key, uk);

            ((ServiceContext)MerchelloContext.Current.Services).ShipCountryService.Save(ukCountry);

            this._settingService = MerchelloContext.Current.Services.StoreSettingService;
            var setting = this._settingService.GetByKey(Core.Constants.StoreSetting.GlobalTaxationApplicationKey);

            setting.Value = "Product";
            this._settingService.Save(setting);

            var taxProvider = MerchelloContext.Current.Gateways.Taxation.GetProviderByKey(Constants.ProviderKeys.Taxation.FixedRateTaxationProviderKey);

            taxProvider.DeleteAllTaxMethods();
            var gwTaxMethod = taxProvider.CreateTaxMethod("GB", 25);

            gwTaxMethod.TaxMethod.ProductTaxMethod = true;
            taxProvider.SaveTaxMethod(gwTaxMethod);
            ((TaxationContext)MerchelloContext.Current.Gateways.Taxation).ClearProductPricingMethod();

            DbPreTestDataWorker.DeleteAllProducts();
            var product = MockProductDataMaker.MockProductForInserting("Product", "PR", 16M);

            product.SalePrice = 12M;
            MerchelloContext.Current.Services.ProductService.Save(product);
            _productKey = product.Key;
        }
        public void Can_Remove_Products_From_A_Collection()
        {
            //// Arrange
            var products = MockProductDataMaker.MockProductCollectionForInserting(4).ToArray();

            _productService.Save(products);

            var collection1 = _entityCollectionService.CreateEntityCollectionWithKey(
                EntityType.Product,
                _providerKey,
                "Product Collection1");

            //// Act
            foreach (var p in products)
            {
                p.AddToCollection(collection1.Key);
            }

            var provider = collection1.ResolveProvider <StaticProductCollectionProvider>();

            Assert.NotNull(provider);

            var cproducts = collection1.GetEntities <IProduct>().ToArray();

            Assert.AreEqual(4, cproducts.Count());

            var remove = cproducts.First();
            var key    = remove.Key;

            remove.RemoveFromCollection(collection1);

            //// Assert
            var afterRemove = collection1.GetEntities <IProduct>().ToArray();

            Assert.AreEqual(3, afterRemove.Count());
            Assert.False(afterRemove.Any(x => x.Key == key));
            Assert.IsFalse(collection1.Exists(remove));
            Assert.IsFalse(remove.GetCollectionsContaining().Any());

            Assert.IsFalse(collection1.ChildCollections().Any());
        }
Пример #28
0
        public void Sum_Of_Basket_Item_Quanities_Equals_Baskets_TotalQuantityCount()
        {
            //// Arrange
            const int expected = 10;
            var       basket   = Basket.GetBasket(_customer, _itemCache);
            var       product1 = MockProductDataMaker.MockProductComplete(Guid.NewGuid());
            var       product2 = MockProductDataMaker.MockProductComplete(Guid.NewGuid());
            var       product3 = MockProductDataMaker.MockProductComplete(Guid.NewGuid());
            var       product4 = MockProductDataMaker.MockProductComplete(Guid.NewGuid());

            basket.AddItem(product1, product1.Name, 1);
            basket.AddItem(product2, product2.Name, 2);
            basket.AddItem(product3, product3.Name, 3);
            basket.AddItem(product4, product4.Name, 4);

            //// Act
            var sum = basket.TotalQuantityCount;

            //// Assert
            Assert.AreEqual(expected, sum);
        }
Пример #29
0
        public void Can_Create_OrderDisplay_From_Index_Document()
        {
            //// Arrange
            MockProductDataMaker.MockProductForInserting();
            var invoice = MockInvoiceDataMaker.InvoiceForInserting(_address, 300);

            invoice.Items.Add(new InvoiceLineItem(LineItemType.Product, "test", "test", 1, 100));
            invoice.Items.Add(new InvoiceLineItem(LineItemType.Product, "test2", "test2", 2, 100));
            PreTestDataWorker.InvoiceService.Save(invoice);

            var order = invoice.PrepareOrder();

            Core.MerchelloContext.Current.Services.OrderService.Save(order);

            //// Act
            var orderDisplay = OrderQuery.GetByKey(order.Key);

            //// Assert
            Assert.NotNull(orderDisplay);
            // Fails becuase the products are not shippable and we made the change to automatically fulfill
            //Assert.AreEqual(Constants.DefaultKeys.OrderStatus.NotFulfilled, orderDisplay.OrderStatus.Key);
            Assert.AreEqual(order.Items.Count, orderDisplay.Items.Count());
        }
Пример #30
0
        public void Can_Retrieve_A_ProductVariant_From_The_Index()
        {
            //// Arrange
            var merchello = new MerchelloHelper(MerchelloContext.Current.Services, false);

            var productService = this.PreTestDataWorker.ProductService;

            var product = MockProductDataMaker.MockProductCollectionForInserting(1).First();

            product.ProductOptions.Add(new ProductOption("Color"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Blue", "Blue"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Red", "Red"));
            product.ProductOptions.First(x => x.Name == "Color").Choices.Add(new ProductAttribute("Green", "Green"));
            product.ProductOptions.Add(new ProductOption("Size"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Small", "Sm"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Medium", "Med"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("Large", "Lg"));
            product.ProductOptions.First(x => x.Name == "Size").Choices.Add(new ProductAttribute("X-Large", "XL"));
            product.Height      = 11M;
            product.Width       = 11M;
            product.Length      = 11M;
            product.CostOfGoods = 15M;
            product.OnSale      = true;
            product.SalePrice   = 18M;
            productService.Save(product);
            this._provider.AddProductToIndex(product);

            Assert.IsTrue(product.ProductVariants.Any());
            var variant = product.ProductVariants.First();

            //// Act
            var productVariantDisplay = merchello.Query.Product.GetProductVariantBySku(variant.Sku);

            //// Assert
            Assert.NotNull(productVariantDisplay);
            Assert.AreEqual(variant.Key, productVariantDisplay.Key);
        }