private void SynchronizeProperties(ConnectorProductAttribute connectorProductAttribute, IDictionary <String, Object> properties) { var connectorProductAttributeSettingDictionary = ConnectorProductAttributeSettingRepository .GetMultiple(connectorProductAttribute.ConnectorProductAttributeID) .ToDictionary(connectorProductAttributeSetting => connectorProductAttributeSetting.Code); // Delete all the connector product attribute settings that are not in the specified property-dictionary. foreach (var connectorProductAttributeSettingCode in connectorProductAttributeSettingDictionary.Keys.Except(properties.Keys)) { ConnectorProductAttributeSettingRepository.Delete(connectorProductAttributeSettingDictionary[connectorProductAttributeSettingCode]); } foreach (var connectorProductAttributeSettingCode in properties.Keys) { var value = properties[connectorProductAttributeSettingCode]; var valueType = value.GetType(); ConnectorProductAttributeSettingRepository.CreateOrUpdate(new ConnectorProductAttributeSetting { ConnectorProductAttributeID = connectorProductAttribute.ConnectorProductAttributeID.Value, Code = connectorProductAttributeSettingCode, Type = valueType.FullName, Value = TypeConverterService.Default[valueType].ConvertToString(value) }); } }
private void Validate(ConnectorProductAttribute connectorProductAttribute, Boolean checkConnectorProductAttributeID = true) { if (connectorProductAttribute == null) { throw new ArgumentNullException("connectorProductAttribute"); } if (connectorProductAttribute.ConnectorProductAttributeID == null) { throw new ArgumentNullException("ConnectorProductAttributeID property cannot be null"); } }
public RepositoryOperationStatus Delete(ConnectorProductAttribute connectorProductAttribute) { Validate(connectorProductAttribute); using (var command = new ConcentratorDatabase.DeleteConnectorProductAttributeCommand(Connection) { ConnectorProductAttributeID = connectorProductAttribute.ConnectorProductAttributeID }) using (EnsureOpenStatus()) { return(command.Execute() > 0 ? RepositoryOperationStatus.Deleted : RepositoryOperationStatus.Nothing); } }
public RepositoryOperationStatus Upsert(ConnectorProductAttribute connectorProductAttribute) { Validate(connectorProductAttribute, false); using (var command = new ConcentratorDatabase.InsertOrUpdateConnectorProductAttributeCommand(Connection) { AttributeID = connectorProductAttribute.ProductAttributeID, AttributeType = connectorProductAttribute.ProductAttributeType, ConnectorID = connectorProductAttribute.ConnectorID, DefaultValue = connectorProductAttribute.DefaultValue, IsFilter = connectorProductAttribute.IsFilter }) using (EnsureOpenStatus()) { return(command.ExecuteScalar <RepositoryOperationStatus>()); } }
public void UpdateMappingWithSettings() { CreateMocksWithTestSetup(); var defaultValue = 42; var isFilter = false; var connectorProductAttribute = new ConnectorProductAttribute { ConnectorID = TestConnectorID, ConnectorProductAttributeID = TestConnectorProductAttributeID, DefaultValue = defaultValue.ToString(), IsFilter = isFilter, ProductAttributeID = TestProductAttributeID, ProductAttributeType = defaultValue.GetType().FullName }; ConnectorProductAttributeRepositoryMock .Setup(repository => repository.GetSingle(It.IsAny <Int32>(), It.IsAny <Int32>(), It.IsAny <Boolean>())) .Returns(connectorProductAttribute); ConnectorProductAttributeRepositoryMock .Setup(repository => repository.GetMultiple(It.IsAny <Int32?>(), It.IsAny <Int32?>(), It.IsAny <Boolean?>())) .Returns(new[] { connectorProductAttribute }); ConnectorProductAttributeRepositoryMock .Setup(repository => repository.Upsert(It.IsAny <ConnectorProductAttribute>())) .Returns(RepositoryOperationStatus.Updated); var propertySettings = new Dictionary <String, Object> { { "Property 1", true }, { "Property 2", false }, { "Property 3", true }, }; ConnectorProductAttributeSettingRepositoryMock .Setup(repository => repository.GetMultiple(TestConnectorProductAttributeID, null)) .Returns(propertySettings.Skip(1).Select(propertySetting => new ConnectorProductAttributeSetting { ConnectorProductAttributeID = TestConnectorProductAttributeID, Code = propertySetting.Key, Type = propertySetting.Value.GetType().FullName, Value = propertySetting.Value.ToString() })); var connectorProductAttributeSettingDeleteDictionary = new Dictionary <String, ConnectorProductAttributeSetting>(); ConnectorProductAttributeSettingRepositoryMock .Setup(repository => repository.Delete(It.IsAny <ConnectorProductAttributeSetting>())) .Callback <ConnectorProductAttributeSetting>(setting => connectorProductAttributeSettingDeleteDictionary[setting.Code] = setting); var connectorProductAttributeSettingUpsertDictionary = new Dictionary <String, ConnectorProductAttributeSetting>(); ConnectorProductAttributeSettingRepositoryMock .Setup(repository => repository.CreateOrUpdate(It.IsAny <ConnectorProductAttributeSetting>())) .Callback <ConnectorProductAttributeSetting>(setting => connectorProductAttributeSettingUpsertDictionary[setting.Code] = setting); var mapping = new ConnectorProductAttributeMapping(propertySettings) { Connector = new Connector { ConnectorID = TestConnectorID, ConnectorSystemID = TestConnectorSystemID }, DefaultValue = defaultValue, IsFilter = isFilter, ProductAttribute = new ProductAttributeMetaData { AttributeID = TestProductAttributeID }, ProductAttributeType = defaultValue.GetType() }; mapping.Properties.Remove("Property 3"); CreateService().Upsert(mapping); ConnectorProductAttributeSettingRepositoryMock.Verify(repository => repository.CreateOrUpdate(It.IsAny <ConnectorProductAttributeSetting>()), Times.AtLeast(2)); Assert.True(connectorProductAttributeSettingUpsertDictionary.ContainsKey("Property 1")); Assert.True(connectorProductAttributeSettingUpsertDictionary.ContainsKey("Property 2")); ConnectorProductAttributeSettingRepositoryMock.Verify(repository => repository.Delete(It.IsAny <ConnectorProductAttributeSetting>()), Times.AtLeastOnce()); Assert.True(connectorProductAttributeSettingDeleteDictionary.ContainsKey("Property 3")); }
public void CreateMappingWithSettingsWithSettingTemplates() { CreateMocksWithTestSetup(); var defaultValue = 42; var isFilter = false; var connectorProductAttribute = new ConnectorProductAttribute { ConnectorID = TestConnectorID, ConnectorProductAttributeID = TestConnectorProductAttributeID, DefaultValue = defaultValue.ToString(), IsFilter = isFilter, ProductAttributeID = TestProductAttributeID, ProductAttributeType = defaultValue.GetType().FullName }; ConnectorProductAttributeRepositoryMock .Setup(repository => repository.GetSingle(It.IsAny <Int32>(), It.IsAny <Int32>(), It.IsAny <Boolean>())) .Returns(connectorProductAttribute); ConnectorProductAttributeRepositoryMock .Setup(repository => repository.GetMultiple(It.IsAny <Int32?>(), It.IsAny <Int32?>(), It.IsAny <Boolean?>())) .Returns(new[] { connectorProductAttribute }); ConnectorProductAttributeRepositoryMock .Setup(repository => repository.Upsert(It.IsAny <ConnectorProductAttribute>())) .Returns(RepositoryOperationStatus.Created); var propertySettings = new Dictionary <String, Object> { { "Property 1", true }, { "Property 2", true }, }; ConnectorProductAttributeSettingRepositoryMock .Setup(repository => repository.GetMultiple(null, null)) .Returns(propertySettings.Select(propertySetting => new ConnectorProductAttributeSetting { ConnectorProductAttributeID = TestConnectorProductAttributeID, Code = propertySetting.Key, Type = propertySetting.Value.GetType().FullName, Value = propertySetting.Value.ToString() })); var propertySettingTemplates = new Dictionary <String, Object> { { "Property 2", false }, { "Property 3", false } }; ConnectorProductAttributeSettingTemplateRepositoryMock .Setup(repository => repository.GetMultiple(TestConnectorSystemID, null)) .Returns(propertySettingTemplates.Select(propertySettingTemplate => new ConnectorProductAttributeSettingTemplate { ConnectorSystemID = TestConnectorSystemID, Code = propertySettingTemplate.Key, Type = propertySettingTemplate.Value.GetType().FullName, Value = propertySettingTemplate.Value.ToString() })); var finalProperties = new Dictionary <String, Object>(propertySettings); foreach (var propertySettingTemplate in propertySettingTemplates) { if (!finalProperties.ContainsKey(propertySettingTemplate.Key)) { finalProperties.Add(propertySettingTemplate.Key, propertySettingTemplate.Value); } } var connectorProductAttributeSettingList = new List <ConnectorProductAttributeSetting>(); ConnectorProductAttributeSettingRepositoryMock .Setup(repository => repository.CreateOrUpdate(It.IsAny <ConnectorProductAttributeSetting>())) .Callback <ConnectorProductAttributeSetting>(setting => connectorProductAttributeSettingList.Add(setting)); var mapping = new ConnectorProductAttributeMapping(propertySettings) { Connector = new Connector { ConnectorID = TestConnectorID, ConnectorSystemID = TestConnectorSystemID }, DefaultValue = defaultValue, IsFilter = isFilter, ProductAttribute = new ProductAttributeMetaData { AttributeID = TestProductAttributeID }, ProductAttributeType = defaultValue.GetType() }; CreateService().Upsert(mapping); ConnectorProductAttributeSettingRepositoryMock.Verify(repository => repository.CreateOrUpdate(It.IsAny <ConnectorProductAttributeSetting>()), Times.AtLeast(finalProperties.Count)); var connectorProductAttributeSettingDictionary = connectorProductAttributeSettingList.ToDictionary(setting => setting.Code); foreach (var finalProperty in finalProperties) { Assert.True(mapping.Properties.ContainsKey(finalProperty.Key)); Assert.Equal(mapping.Properties[finalProperty.Key], finalProperty.Value); Assert.True(connectorProductAttributeSettingDictionary.ContainsKey(finalProperty.Key)); Assert.Equal(connectorProductAttributeSettingDictionary[finalProperty.Key].Value, finalProperty.Value.ToString()); } }