public void GetValueTest() { var dataTypeService = Mock.Of <IDataTypeService>(); var tupleDataType = new DataTypeDefinition("tupleEditorAlias") { Id = 1, Key = Guid.Parse("3BBFB03B-B6AD-4310-986B-44E9F31A4F1F"), DatabaseType = DataTypeDatabaseType.Ntext }; var innerDataType = new DataTypeDefinition("innerEditorAlias") { Id = 2, Key = Guid.Parse("0F6DCC71-2FA7-496B-A858-8D6DDAF37F59"), DatabaseType = DataTypeDatabaseType.Integer // for true/false }; var dataTypes = new[] { tupleDataType, 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> { { "dataTypes", new PreValue($"[{{\"key\":\"{Guid.Empty}\",\"dtd\":\"{innerDataType.Key}\"}}]") } }) } }; 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 tupleConnector = new TupleValueConnector(dataTypeService, new Lazy <ValueConnectorCollection>(() => connectors)); connectors = new ValueConnectorCollection(new Dictionary <string, IValueConnector> { { "innerEditorAlias", defaultConnector }, { "tupleEditorAlias", tupleConnector } }); var input = $"[{{\"key\":\"{Guid.Empty}\",\"dtd\":\"{innerDataType.Key}\",\"value\":0}}]"; var propertyType = new PropertyType(tupleDataType); var property = new Property(propertyType, input); var dependencies = new List <ArtifactDependency>(); var output = tupleConnector.GetValue(property, dependencies); Console.WriteLine(output); var expected = $"[{{\"key\":\"{Guid.Empty}\",\"dtd\":\"{innerDataType.Key}\",\"value\":\"i0\"}}]"; Assert.AreEqual(expected, output); }
public void SetValueTest() { var dataTypeService = Mock.Of <IDataTypeService>(); var tupleDataType = new DataTypeDefinition("tupleEditorAlias") { Id = 1, Key = Guid.Parse("3BBFB03B-B6AD-4310-986B-44E9F31A4F1F"), DatabaseType = DataTypeDatabaseType.Ntext }; var innerDataType = new DataTypeDefinition("innerEditorAlias") { Id = 2, Key = Guid.Parse("0F6DCC71-2FA7-496B-A858-8D6DDAF37F59"), DatabaseType = DataTypeDatabaseType.Integer // for true/false }; var dataTypes = new[] { tupleDataType, 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> { { "dataTypes", new PreValue($"[{{\"key\":\"{Guid.Empty}\",\"dtd\":\"{innerDataType.Key}\"}}]") } }) } }; 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 tupleConnector = new TupleValueConnector(dataTypeService, new Lazy <ValueConnectorCollection>(() => connectors)); connectors = new ValueConnectorCollection(new Dictionary <string, IValueConnector> { { "innerEditorAlias", defaultConnector }, { "tupleEditorAlias", tupleConnector } }); var input = $"[{{\"key\":\"{Guid.Empty}\",\"dtd\":\"{innerDataType.Key}\",\"value\":\"i0\"}}]"; UmbracoConfig.For.SetUmbracoSettings(GenerateMockSettings()); var tuplePropertyType = new PropertyType(tupleDataType, "tupleProperty"); var tupleProperty = new Property(tuplePropertyType, null); // value is going to be replaced var tupleContent = new Content("mockContent", -1, new ContentType(-1), new PropertyCollection(new List <Property> { tupleProperty })); tupleConnector.SetValue(tupleContent, "tupleProperty", input); var output = tupleContent.GetValue("tupleProperty"); Assert.IsInstanceOf <string>(output); Console.WriteLine(output); var expected = $"[{{\"key\":\"{Guid.Empty}\",\"dtd\":\"{innerDataType.Key}\",\"value\":0}}]"; Assert.AreEqual(expected, output); }