public static void AlterPartDefinition(this IContentDefinitionManager manager, string name, Action<ContentPartDefinitionBuilder> alteration) { var partDefinition = manager.GetPartDefinition(name) ?? new ContentPartDefinition(name); var builder = new ContentPartDefinitionBuilder(partDefinition); alteration(builder); manager.StorePartDefinition(builder.Build()); }
public void ShouldReturnInfosetWhenNullEmptyMissingOrInvalid() { var part1Definition = new ContentPartDefinitionBuilder() .WithField("Hello", fb => fb.OfType("Text").WithSetting("Storage", null)) .Build(); var part2Definition = new ContentPartDefinitionBuilder() .WithField("World", fb => fb.OfType("Text").WithSetting("Storage", "")) .Build(); var part3Definition = new ContentPartDefinitionBuilder() .WithField("World", fb => fb.OfType("Text")) .Build(); var part4Definition = new ContentPartDefinitionBuilder() .WithField("World", fb => fb.OfType("Text").WithSetting("Storage", "NoSuchName")) .Build(); var provider1 = _selector.GetProvider(part1Definition.Fields.Single()); var provider2 = _selector.GetProvider(part2Definition.Fields.Single()); var provider3 = _selector.GetProvider(part3Definition.Fields.Single()); var provider4 = _selector.GetProvider(part4Definition.Fields.Single()); Assert.That(provider1.ProviderName, Is.EqualTo("Infoset")); Assert.That(provider2.ProviderName, Is.EqualTo("Infoset")); Assert.That(provider3.ProviderName, Is.EqualTo("Infoset")); Assert.That(provider4.ProviderName, Is.EqualTo("Infoset")); }
public static ContentPartDefinitionBuilder WithLocation(this ContentPartDefinitionBuilder obj, IDictionary <string, ContentLocation> settings) { foreach (var entry in GetSettingEntries(settings)) { obj = obj.WithSetting(entry.Key, entry.Value); } return(obj); }
public void ShouldReturnProviderByName() { var part1Definition = new ContentPartDefinitionBuilder() .WithField("Hello", fb => fb.OfType("Text").WithSetting("Storage", "TestProvName")) .Build(); var part2Definition = new ContentPartDefinitionBuilder() .WithField("World", fb => fb.OfType("Text").WithSetting("Storage", "Infoset")) .Build(); var provider1 = _selector.GetProvider(part1Definition.Fields.Single()); var provider2 = _selector.GetProvider(part2Definition.Fields.Single()); Assert.That(provider1.ProviderName, Is.EqualTo("TestProvName")); Assert.That(provider2.ProviderName, Is.EqualTo("Infoset")); }
/// <summary> /// Merges a given content part definition provided in a XML format into a content part definition builder. /// </summary> /// <param name="element">The XML content type definition.</param> /// <param name="contentPartDefinitionBuilder">The content part definition builder.</param> public void Merge(XElement element, ContentPartDefinitionBuilder contentPartDefinitionBuilder) { Argument.ThrowIfNull(element, "element"); Argument.ThrowIfNull(contentPartDefinitionBuilder, "contentPartDefinitionBuilder"); // Merge name contentPartDefinitionBuilder.Named(XmlConvert.DecodeName(element.Name.LocalName)); // Merge settings foreach (var setting in _settingsFormatter.Map(element)) { contentPartDefinitionBuilder.WithSetting(setting.Key, setting.Value); } // Merge fields foreach (var iter in element.Elements()) { var fieldElement = iter; var fieldParameters = XmlConvert.DecodeName(fieldElement.Name.LocalName).Split(new[] { '.' }, 2); var fieldName = fieldParameters.FirstOrDefault(); var fieldType = fieldParameters.Skip(1).FirstOrDefault(); if (fieldName == "remove") { var nameAttribute = fieldElement.Attribute("name"); if (nameAttribute != null) { contentPartDefinitionBuilder.RemoveField(nameAttribute.Value); } } else { contentPartDefinitionBuilder.WithField( fieldName, fieldBuilder => { fieldBuilder.OfType(fieldType); foreach (var setting in _settingsFormatter.Map(fieldElement)) { fieldBuilder.WithSetting(setting.Key, setting.Value); } }); } } }