public void GetValueTest() { var dataTypeService = Mock.Of <IDataTypeService>(); var vortoDataType = new DataTypeDefinition("vortoEditorAlias") { Id = 1, Key = Guid.Parse("ebd71353-206e-4df6-8a4c-e194519f7794"), DatabaseType = DataTypeDatabaseType.Ntext }; var innerDataType = new DataTypeDefinition("innerEditorAlias") { Id = 2, Key = Guid.Parse("92897bc6-a5f3-4ffe-ae27-f2e7e33dda49"), DatabaseType = DataTypeDatabaseType.Integer // for true/false }; var dataTypes = new[] { vortoDataType, innerDataType }; Mock.Get(dataTypeService) .Setup(x => x.GetDataTypeDefinitionById(It.IsAny <Guid>())) .Returns <Guid>(id => dataTypes.FirstOrDefault(x => x.Key == id)); var preValues = new Dictionary <int, PreValueCollection> { { 1, new PreValueCollection(new Dictionary <string, PreValue> { { "dataType", new PreValue("{\"guid\":\"92897bc6-a5f3-4ffe-ae27-f2e7e33dda49\",\"name\":\"True/False\",\"propertyEditorAlias\":\"innerEditorAlias\"}") } }) } }; Mock.Get(dataTypeService) .Setup(x => x.GetPreValuesCollectionByDataTypeId(It.IsAny <int>())) .Returns <int>(id => preValues.TryGetValue(id, out var collection) ? collection : null); ValueConnectorCollection connectors = null; var defaultConnector = new DefaultValueConnector(); var vortoConnector = new VortoValueConnector(dataTypeService, new Lazy <ValueConnectorCollection>(() => connectors)); connectors = new ValueConnectorCollection(new Dictionary <string, IValueConnector> { { "innerEditorAlias", defaultConnector }, { "vortoEditorAlias", vortoConnector } }); var input = "{\"values\":{\"da-DK\":0,\"de-DE\":0,\"en-GB\":0,\"en\":0},\"dtdGuid\":\"ebd71353-206e-4df6-8a4c-e194519f7794\"}"; var propertyType = new PropertyType(vortoDataType); var property = new Property(propertyType, input); var dependencies = new List <ArtifactDependency>(); var output = vortoConnector.GetValue(property, dependencies); Console.WriteLine(output); Assert.AreEqual("{\"values\":{\"da-DK\":\"i0\",\"de-DE\":\"i0\",\"en-GB\":\"i0\",\"en\":\"i0\"},\"dtdGuid\":\"ebd71353-206e-4df6-8a4c-e194519f7794\"}", output); }
public void SetValueTest() { var dataTypeService = Mock.Of <IDataTypeService>(); var vortoDataType = new DataTypeDefinition("vortoEditorAlias") { Id = 1, Key = Guid.Parse("ebd71353-206e-4df6-8a4c-e194519f7794"), DatabaseType = DataTypeDatabaseType.Ntext }; var innerDataType = new DataTypeDefinition("innerEditorAlias") { Id = 2, Key = Guid.Parse("92897bc6-a5f3-4ffe-ae27-f2e7e33dda49"), DatabaseType = DataTypeDatabaseType.Integer // for true/false }; var dataTypes = new[] { vortoDataType, innerDataType }; Mock.Get(dataTypeService) .Setup(x => x.GetDataTypeDefinitionById(It.IsAny <Guid>())) .Returns <Guid>(id => dataTypes.FirstOrDefault(x => x.Key == id)); var preValues = new Dictionary <int, PreValueCollection> { { 1, new PreValueCollection(new Dictionary <string, PreValue> { { "dataType", new PreValue("{\"guid\":\"92897bc6-a5f3-4ffe-ae27-f2e7e33dda49\",\"name\":\"True/False\",\"propertyEditorAlias\":\"innerEditorAlias\"}") } }) } }; Mock.Get(dataTypeService) .Setup(x => x.GetPreValuesCollectionByDataTypeId(It.IsAny <int>())) .Returns <int>(id => preValues.TryGetValue(id, out var collection) ? collection : null); ValueConnectorCollection connectors = null; var defaultConnector = new DefaultValueConnector(); var vortoConnector = new VortoValueConnector(dataTypeService, new Lazy <ValueConnectorCollection>(() => connectors)); connectors = new ValueConnectorCollection(new Dictionary <string, IValueConnector> { { "innerEditorAlias", defaultConnector }, { "vortoEditorAlias", vortoConnector } }); var input = "{\"values\":{\"da-DK\":\"i0\",\"de-DE\":\"i0\",\"en-GB\":\"i0\",\"en\":\"i0\"},\"dtdGuid\":\"ebd71353-206e-4df6-8a4c-e194519f7794\"}"; UmbracoConfig.For.SetUmbracoSettings(GenerateMockSettings()); var vortoPropertyType = new PropertyType(vortoDataType, "vortoProperty"); var vortoProperty = new Property(vortoPropertyType, null); // value is going to be replaced var vortoContent = new Content("mockContent", -1, new ContentType(-1), new PropertyCollection(new List <Property> { vortoProperty })); vortoConnector.SetValue(vortoContent, "vortoProperty", input); var output = vortoContent.GetValue("vortoProperty"); // fixme - why strings and not integers?! // so "i0" is sent to default connector, but it sets value to "0" not 0 - wtf? Assert.IsInstanceOf <string>(output); Console.WriteLine(output); Assert.AreEqual("{\"values\":{\"da-DK\":0,\"de-DE\":0,\"en-GB\":0,\"en\":0},\"dtdGuid\":\"ebd71353-206e-4df6-8a4c-e194519f7794\"}", output); }