private void CreateMocksWithTestSetup() { CreateMocks(); ConnectorRepositoryMock .Setup(repository => repository.GetSingle(connector => connector.ConnectorID == TestConnectorID)) .Returns(new Connector { ConnectorID = TestConnectorID, ConnectorSystemID = TestConnectorSystemID }); ConnectorProductAttributeRepositoryMock .Setup(repository => repository.GetMultiple(It.IsAny <Int32?>(), It.IsAny <Int32?>(), It.IsAny <Boolean?>())) .Returns(Enumerable.Empty <ConnectorProductAttribute>()); ConnectorProductAttributeRepositoryMock .Setup(repository => repository.GetSingle(It.IsAny <Int32>(), It.IsAny <Int32>(), It.IsAny <Boolean>())) .Returns(default(ConnectorProductAttribute)); ConnectorProductAttributeSettingRepositoryMock .Setup(repository => repository.GetMultiple(TestConnectorProductAttributeID, null)) .Returns(Enumerable.Empty <ConnectorProductAttributeSetting>()); ConnectorProductAttributeSettingTemplateRepositoryMock .Setup(repository => repository.GetMultiple(TestConnectorSystemID, null)) .Returns(Enumerable.Empty <ConnectorProductAttributeSettingTemplate>()); ProductAttributeRepositoryMock .Setup(repository => repository.GetSingle(attribute => attribute.AttributeID == TestProductAttributeID)) .Returns(new ProductAttributeMetaData { AttributeCode = TestProductAttributeCode, AttributeID = TestProductAttributeID }); }
public void GetMultipleMappingsWithSameAttributeWithDifferentIsFilterValues() { CreateMocksWithTestSetup(); var attributes = new[] { new { AttributeID = TestProductAttributeID, DefaultValue = 5000M, IsFilter = false }, new { AttributeID = TestProductAttributeID, DefaultValue = 500M, IsFilter = true }, }; ConnectorProductAttributeRepositoryMock .Setup(repository => repository.GetMultiple(TestConnectorID, TestConnectorProductAttributeID, false)) .Returns(attributes.Select(attribute => new ConnectorProductAttribute { ConnectorID = TestConnectorID, ConnectorProductAttributeID = TestConnectorProductAttributeID, DefaultValue = attribute.DefaultValue.ToString(), IsFilter = attribute.IsFilter, ProductAttributeID = attribute.AttributeID, ProductAttributeType = attribute.DefaultValue.GetType().FullName })); ConnectorProductAttributeSettingRepositoryMock .Setup(repository => repository.GetMultiple(1, null)) .Returns(Enumerable.Empty <ConnectorProductAttributeSetting>()); var mappings = CreateService() .Get(TestConnectorID, TestConnectorProductAttributeID, false) .ToArray(); Assert.Equal(mappings.Length, attributes.Length); for (var index = 0; index < attributes.Length; index++) { var attribute = attributes[index]; var mapping = mappings[index]; Assert.Equal(mapping.IsFilter, attribute.IsFilter); Assert.Equal(mapping.ProductAttributeType, attribute.DefaultValue.GetType()); Assert.Equal(mapping.DefaultValue, attribute.DefaultValue); } }
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()); } }
public void GetSingleWithSettings() { CreateMocks(); var defaultValue = 42; var isFilter = false; ConnectorProductAttributeRepositoryMock .Setup(repository => repository.GetMultiple(TestConnectorID, TestConnectorProductAttributeID, false)) .Returns(new[] { new ConnectorProductAttribute { ConnectorID = TestConnectorID, ConnectorProductAttributeID = TestConnectorProductAttributeID, DefaultValue = defaultValue.ToString(), IsFilter = isFilter, ProductAttributeID = TestProductAttributeID, ProductAttributeType = defaultValue.GetType().FullName } }); var properties = new Dictionary <String, Object> { { "Property 1", true }, { "Property 2", '@' }, { "Property 3", Math.PI }, }; ConnectorProductAttributeSettingRepositoryMock .Setup(repository => repository.GetMultiple(1, null)) .Returns(properties.Select(property => new ConnectorProductAttributeSetting { ConnectorProductAttributeID = TestConnectorProductAttributeID, Code = property.Key, Type = property.Value.GetType().FullName, Value = property.Value.ToString() })); var mappings = CreateService() .Get(TestConnectorID, TestConnectorProductAttributeID, false) .ToArray(); Assert.Equal(mappings.Length, 1); if (mappings.Any()) { var mapping = mappings.First(); Assert.Equal(mapping.IsFilter, isFilter); Assert.Equal(mapping.ProductAttributeType, defaultValue.GetType()); Assert.Equal(mapping.DefaultValue, defaultValue); foreach (var property in properties) { Assert.True(mapping.Properties.ContainsKey(property.Key)); if (mapping.Properties[property.Key].GetType() == typeof(Double)) { Assert.Equal(mapping.Properties[property.Key].ToString(), property.Value.ToString()); } else { Assert.Equal(mapping.Properties[property.Key], property.Value); } } } }