public void ProductOptionManager_DeleteSpecificationAttribute_ShouldRemoveAllValues()
        {
            var attribute = new ProductSpecificationAttribute { Name = "Test" };
            var option = new ProductSpecificationAttributeOption() { Name = "Test Value" };
            var product = new Product();
            var productSpecificationAttributes =
                Enumerable.Range(1, 10)
                          .Select(
                              i =>
                              new ProductSpecificationValue
                                  {
                                      ProductSpecificationAttributeOption = option,
                                      Product = product
                                  })
                          .ToList();
            option.Values = productSpecificationAttributes;
            Session.Transact(session =>
                                 {
                                     session.Save(product);
                                     session.Save(attribute);
                                     productSpecificationAttributes.ForEach(value => session.Save(value));
                                 });

            _productOptionManager.DeleteSpecificationAttributeOption(option);

            Session.QueryOver<ProductSpecificationValue>().RowCount().Should().Be(0);
        }
        public void ProductOptionManager_AddSpecificationAttribute_SavesOption()
        {
            var option = new ProductSpecificationAttribute { Name = "test" };

            _productOptionManager.AddSpecificationAttribute(option);

            Session.QueryOver<ProductSpecificationAttribute>().List().Should().HaveCount(1);
        }
        public void ProductSpecificationAttributeController_Add_ReturnsRedirectToRouteResult()
        {
            var controller = GetProductSpecificationAttributeController();
            var option = new ProductSpecificationAttribute();

            var add = controller.Add(option);

            add.Should().BeOfType<RedirectToRouteResult>();
        }
        public void ProductOptionManager_DeleteSpecificationAttribute_DeletesOption()
        {
            var option = new ProductSpecificationAttribute { Name = "Test" };
            Session.Transact(session => session.Save(option));

            _productOptionManager.DeleteSpecificationAttribute(option);

            Session.QueryOver<ProductSpecificationAttribute>().RowCount().Should().Be(0);
        }
        public void ProductSpecificationAttributeController_EditGet_ReturnsAPartialViewResult()
        {
            var controller = GetProductSpecificationAttributeController();
            var option = new ProductSpecificationAttribute();

            var edit = controller.Edit(option);

            edit.Should().BeOfType<PartialViewResult>();
        }
        public void ProductSpecificationAttributeController_Add_CallsAddOnTheProductOptionManager()
        {
            var controller = GetProductSpecificationAttributeController();
            var option = new ProductSpecificationAttribute();

            var add = controller.Add(option);

            A.CallTo(() => _productOptionManager.AddSpecificationAttribute(option)).MustHaveHappened();
        }
        public void ProductSpecificationAttributeOptionController_Delete_ReturnsPartialViewResult()
        {
            var controller = GetProductSpecificationAttributeOptionController();
            var attribute = new ProductSpecificationAttribute();
            var option = new ProductSpecificationAttributeOption() { ProductSpecificationAttribute = attribute };

            var delete = controller.Delete(option);

            delete.Should().BeOfType<PartialViewResult>();
        }
        public void ProductSpecificationAttributeOptionController_DeletePOST_CallsDeleteOption()
        {
            var controller = GetProductSpecificationAttributeOptionController();
            var attribute = new ProductSpecificationAttribute();
            var option = new ProductSpecificationAttributeOption() { ProductSpecificationAttribute = attribute };
            
            var delete = controller.Delete_POST(option);

            A.CallTo(() => _productOptionManager.DeleteSpecificationAttributeOption(option)).MustHaveHappened();
        }
        public void ProductSpecificationAttributeOptionController_Delete_ReturnsOptionAsModel()
        {
            var controller = GetProductSpecificationAttributeOptionController();
            var attribute = new ProductSpecificationAttribute();
            var option = new ProductSpecificationAttributeOption() { ProductSpecificationAttribute = attribute };
            
            var delete = controller.Delete(option);

            delete.Model.Should().Be(option);
        }
        public void ProductSpecificationAttributeOptionController_Add_NotHappensIfNotValidAttributeIdIsSent()
        {
            var controller = GetProductSpecificationAttributeOptionController();
            var attribute = new ProductSpecificationAttribute();
            var option = new ProductSpecificationAttributeOption() { ProductSpecificationAttribute = attribute };

            var add = controller.Add(attribute.Id);

            A.CallTo(() => _productOptionManager.AddSpecificationAttributeOption(option)).MustNotHaveHappened();
        }
Exemplo n.º 11
0
        public void ProductOptionManager_UpdateSpecificationAttribute_AllowsNameToBeUpdated()
        {
            var option = new ProductSpecificationAttribute { Name = "Test" };
            Session.Transact(session => session.Save(option));
            option.Name = "Updated";

            _productOptionManager.UpdateSpecificationAttribute(option);

            Session.Evict(option);
            Session.Get<ProductSpecificationAttribute>(1).Name.Should().Be("Updated");
        }
        public bool RemoveSpecificationFromHidden(ProductSpecificationAttribute attribute, int categoryId)
        {
            var category = _session.Get<EcommerceSearchablePage>(categoryId);

            if (category == null)
                return false;
            category.HiddenSearchSpecifications.Remove(attribute);
            attribute.HiddenInSearchpages.Remove(category);
            _session.Transact(session => session.Update(category));
            return true;
        }
        public IEnumerable<ProductSpecificationValue> ImportSpecifications(
            ProductImportDataTransferObject dataTransferObject, Product product)
        {
            List<KeyValuePair<string, string>> specificationsToAdd =
                dataTransferObject.Specifications.Where(
                    s =>
                        !product.SpecificationValues.Select(value => value.SpecificationName)
                            .Contains(s.Key, StringComparer.InvariantCultureIgnoreCase)).ToList();
            List<ProductSpecificationValue> specificationsToRemove =
                product.SpecificationValues.Where(
                    value =>
                        !dataTransferObject.Specifications.Keys.Contains(value.SpecificationName,
                            StringComparer.InvariantCultureIgnoreCase))
                    .ToList();
            List<ProductSpecificationValue> specificationsToUpdate =
                product.SpecificationValues.Where(value => !specificationsToRemove.Contains(value)).ToList();
            foreach (var item in specificationsToAdd)
            {
                ProductSpecificationAttribute attribute =
                    _session.QueryOver<ProductSpecificationAttribute>()
                        .Where(
                            specificationAttribute =>
                                specificationAttribute.Name.IsInsensitiveLike(item.Key, MatchMode.Exact))
                        .Take(1)
                        .SingleOrDefault();
                if (attribute == null)
                {
                    attribute = new ProductSpecificationAttribute {Name = item.Key};
                    _session.Transact(session => session.Save(attribute));
                }

                SetValue(product, attribute, item.Value);
            }

            foreach (ProductSpecificationValue value in specificationsToRemove)
            {
                RemoveValue(product, value);
            }
            foreach (ProductSpecificationValue value in specificationsToUpdate)
            {
                ProductSpecificationAttribute attribute =
                    value.ProductSpecificationAttributeOption.ProductSpecificationAttribute;
                RemoveValue(product, value);

                SetValue(product, attribute, dataTransferObject.Specifications[value.SpecificationName]);
            }

            return dataTransferObject.Specifications.Any() ? product.SpecificationValues : null;
        }
 private static void SetValue(Product product, ProductSpecificationAttribute attribute, string value)
 {
     ProductSpecificationAttributeOption option = attribute.Options.FirstOrDefault(o => o.Name == value);
     if (option == null)
     {
         option = new ProductSpecificationAttributeOption
         {
             Name = value,
             ProductSpecificationAttribute = attribute
         };
         attribute.Options.Add(option);
     }
     product.SpecificationValues.Add(new ProductSpecificationValue
     {
         ProductSpecificationAttributeOption = option,
         Product = product
     });
 }
Exemplo n.º 15
0
        public string ProcessSpecifications(NopCommerceDataReader dataReader,
            NopImportContext nopImportContext)
        {
            var productSpecificationDatas = dataReader.GetProductSpecifications();

            _session.Transact(session =>
            {
                foreach (ProductSpecificationData productSpecificationData in productSpecificationDatas)
                {
                    var specificationAttribute = new ProductSpecificationAttribute
                    {
                        Name = productSpecificationData.Name,
                    };
                    session.Save(specificationAttribute);
                    nopImportContext.AddEntry(productSpecificationData.Id, specificationAttribute);
                }
            });
            return string.Format("{0} product specifications processed", productSpecificationDatas.Count);
        }
        public void ProductSpecificationAttributeController_EditPost_CallsUpdateOptionOnTheManager()
        {
            var controller = GetProductSpecificationAttributeController();
            var option = new ProductSpecificationAttribute();

            var editPost = controller.Edit_POST(option);

            A.CallTo(() => _productOptionManager.UpdateSpecificationAttribute(option)).MustHaveHappened();
        }
Exemplo n.º 17
0
 public void AddSpecificationAttribute(ProductSpecificationAttribute option)
 {
     if (option == null || string.IsNullOrWhiteSpace(option.Name))
         return;
     _session.Transact(session => session.Save(option));
 }
Exemplo n.º 18
0
 public void DeleteSpecificationAttribute(ProductSpecificationAttribute option)
 {
     _session.Transact(session => session.Delete(option));
 }
Exemplo n.º 19
0
 private ProductSpecificationValue CreateValue(Product product, ProductSpecificationAttribute option, string value)
 {
     var specValue = new ProductSpecificationValue
                         {
                             Product = product,
                             ProductSpecificationAttributeOption = new ProductSpecificationAttributeOption
                                                                       {
                                                                           ProductSpecificationAttribute = option,
                                                                           Name = value
                                                                       }
                         };
     Session.Transact(session => session.Save(specValue));
     return specValue;
 }
Exemplo n.º 20
0
        public void SetSpecificationValue(Product product, ProductSpecificationAttribute productSpecificationAttribute,
            string value)
        {
            ProductSpecificationValue valueAlias = null;
            ProductSpecificationAttributeOption optionAlias = null;
            ProductSpecificationValue specificationValue = _session.QueryOver(() => valueAlias)
                .JoinAlias(
                    () =>
                        valueAlias.ProductSpecificationAttributeOption,
                    () => optionAlias)
                .Where(
                    () => valueAlias.Product == product &&
                          optionAlias.ProductSpecificationAttribute ==
                          productSpecificationAttribute
                ).Cacheable().SingleOrDefault();

            ProductSpecificationAttributeOption option =
                productSpecificationAttribute.Options.FirstOrDefault(
                    attributeOption =>
                        string.Equals(attributeOption.Name, value, StringComparison.InvariantCultureIgnoreCase));
            if (option == null)
            {
                option = new ProductSpecificationAttributeOption
                {
                    ProductSpecificationAttribute = productSpecificationAttribute,
                    Name = value
                };
                _session.Save(option);
            }

            if (specificationValue != null)
            {
                specificationValue.ProductSpecificationAttributeOption = option;
                _session.Transact(session => session.Update(specificationValue));
            }
            else
            {
                var productSpecificationValue = new ProductSpecificationValue
                {
                    Product = product,
                    ProductSpecificationAttributeOption = option
                };
                product.SpecificationValues.Add(productSpecificationValue);
                _session.Transact(session => session.Update(product));
            }
        }
        public void ProductSpecificationAttributeController_EditGet_ReturnsThePassedOptionAsViewModel()
        {
            var controller = GetProductSpecificationAttributeController();
            var option = new ProductSpecificationAttribute();

            var edit = controller.Edit(option);

            edit.Model.Should().Be(option);
        }
Exemplo n.º 22
0
 private ProductSpecificationAttribute CreateOption(string name)
 {
     var option = new ProductSpecificationAttribute { Name = name };
     Session.Transact(session => session.Save(option));
     return option;
 }
        public void ProductSpecificationAttributeController_EditPost_ReturnsRedirectToRouteResult()
        {
            var controller = GetProductSpecificationAttributeController();
            var option = new ProductSpecificationAttribute();

            var editPost = controller.Edit_POST(option);

            editPost.Should().BeOfType<RedirectToRouteResult>();
        }
        public void ProductSpecificationAttributeController_DeletePOST_ReturnsRedirectToRouteResult()
        {
            var controller = GetProductSpecificationAttributeController();
            var option = new ProductSpecificationAttribute();
            
            var delete = controller.Delete_POST(option);

            delete.Should().BeOfType<RedirectToRouteResult>();
        }
        public void ProductSpecificationAttributeController_DeletePOST_RedirectsToIndex()
        {
            var controller = GetProductSpecificationAttributeController();
            var option = new ProductSpecificationAttribute();
            
            var delete = controller.Delete_POST(option);

            delete.RouteValues["action"].Should().Be("Index");
        }