Exemplo n.º 1
0
        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)
                });
            }
        }
Exemplo n.º 2
0
        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");
            }
        }
Exemplo n.º 3
0
        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);
                }
        }
Exemplo n.º 4
0
        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>());
                }
        }
Exemplo n.º 5
0
        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"));
        }
Exemplo n.º 6
0
        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());
            }
        }