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(); }
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 }); }
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(); }
public void AddSpecificationAttribute(ProductSpecificationAttribute option) { if (option == null || string.IsNullOrWhiteSpace(option.Name)) return; _session.Transact(session => session.Save(option)); }
public void DeleteSpecificationAttribute(ProductSpecificationAttribute option) { _session.Transact(session => session.Delete(option)); }
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; }
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); }
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"); }