DataType refactoring - troubleshooting and fixing tests

This commit is contained in:
Stephan
2018-01-29 19:23:25 +01:00
parent e60a5a4a83
commit f5546ca870
38 changed files with 265 additions and 245 deletions

View File

@@ -56,6 +56,7 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(dest => dest.Alias, opt => opt.Ignore())
.ForMember(dest => dest.Tabs, opt => opt.ResolveUsing(src => tabsAndPropertiesResolver.Resolve(src)))
.ForMember(dest => dest.AllowedActions, opt => opt.ResolveUsing(src => actionButtonsResolver.Resolve(src)))
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore())
.AfterMap((src, dest) => AfterMap(src, dest, dataTypeService, textService, contentTypeService, contentService));
//FROM IContent TO ContentItemBasic<ContentPropertyBasic, IContent>
@@ -67,7 +68,8 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(dest => dest.Icon, opt => opt.MapFrom(src => src.ContentType.Icon))
.ForMember(dest => dest.Trashed, opt => opt.MapFrom(src => src.Trashed))
.ForMember(dest => dest.ContentTypeAlias, opt => opt.MapFrom(src => src.ContentType.Alias))
.ForMember(dest => dest.Alias, opt => opt.Ignore());
.ForMember(dest => dest.Alias, opt => opt.Ignore())
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore());
//FROM IContent TO ContentItemDto<IContent>
CreateMap<IContent, ContentItemDto<IContent>>()
@@ -76,7 +78,8 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(dest => dest.Owner, opt => opt.ResolveUsing(src => contentOwnerResolver.Resolve(src)))
.ForMember(dest => dest.Updater, opt => opt.Ignore())
.ForMember(dest => dest.Icon, opt => opt.Ignore())
.ForMember(dest => dest.Alias, opt => opt.Ignore());
.ForMember(dest => dest.Alias, opt => opt.Ignore())
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore());
}
/// <summary>

View File

@@ -160,13 +160,16 @@ namespace Umbraco.Web.Models.Mapping
CreateMap<IMemberType, ContentTypeBasic>()
.ForMember(dest => dest.Udi, opt => opt.MapFrom(source => Udi.Create(Constants.UdiEntityType.MemberType, source.Key)))
.ForMember(dest => dest.Blueprints, opt => opt.Ignore());
.ForMember(dest => dest.Blueprints, opt => opt.Ignore())
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore());
CreateMap<IMediaType, ContentTypeBasic>()
.ForMember(dest => dest.Udi, opt => opt.MapFrom(source => Udi.Create(Constants.UdiEntityType.MediaType, source.Key)))
.ForMember(dest => dest.Blueprints, opt => opt.Ignore());
.ForMember(dest => dest.Blueprints, opt => opt.Ignore())
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore());
CreateMap<IContentType, ContentTypeBasic>()
.ForMember(dest => dest.Udi, opt => opt.MapFrom(source => Udi.Create(Constants.UdiEntityType.DocumentType, source.Key)))
.ForMember(dest => dest.Blueprints, opt => opt.Ignore());
.ForMember(dest => dest.Blueprints, opt => opt.Ignore())
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore());
CreateMap<PropertyTypeBasic, PropertyType>()

View File

@@ -141,7 +141,8 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(dest => dest.AllowedContentTypes, opt => opt.MapFrom(src => src.AllowedContentTypes.Select(x => x.Id.Value)))
.ForMember(dest => dest.CompositeContentTypes, opt => opt.MapFrom(src => src.ContentTypeComposition))
.ForMember(dest => dest.LockedCompositeContentTypes, opt => opt.ResolveUsing(src => lockedCompositionsResolver.Resolve(src)))
.ForMember(dest => dest.Groups, opt => opt.ResolveUsing(src => propertyTypeGroupResolver.Resolve(src)));
.ForMember(dest => dest.Groups, opt => opt.ResolveUsing(src => propertyTypeGroupResolver.Resolve(src)))
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore());
}
/// <summary>

View File

@@ -41,6 +41,7 @@ namespace Umbraco.Web.Models.Mapping
throw new InvalidOperationException($"Could not find a property editor with alias \"{dataType.EditorAlias}\".");
var configuration = dataType.Configuration;
Dictionary<string, object> configurationDictionary = null;
var fields = Array.Empty<DataTypeConfigurationFieldDisplay>();
// if we have a property editor,
@@ -49,14 +50,13 @@ namespace Umbraco.Web.Models.Mapping
if (editor != null)
{
fields = editor.ConfigurationEditor.Fields.Select(Mapper.Map<DataTypeConfigurationFieldDisplay>).ToArray();
configuration = editor.ConfigurationEditor.ToEditor(editor.DefaultConfiguration, configuration);
configurationDictionary = editor.ConfigurationEditor.ToEditor(editor.DefaultConfiguration, configuration);
}
// either it's a dictionary already, or convert
// fixme if it's no a dictionary we should just throw at that point
var dictionary = configuration as IDictionary<string, object> ?? ObjectExtensions.ToObjectDictionary(configuration);
if (configurationDictionary == null)
configurationDictionary = new Dictionary<string, object>();
MapPreValueValuesToPreValueFields(fields, dictionary);
MapPreValueValuesToPreValueFields(fields, configurationDictionary);
return fields;
}

View File

@@ -20,7 +20,7 @@ namespace Umbraco.Web.Models.Mapping
{
// create, capture, cache
var availablePropertyEditorsResolver = new AvailablePropertyEditorsResolver(UmbracoConfig.For.UmbracoSettings().Content);
var preValueDisplayResolver = new DataTypeConfigurationFieldDisplayResolver();
var configurationDisplayResolver = new DataTypeConfigurationFieldDisplayResolver();
var databaseTypeResolver = new DatabaseTypeResolver();
CreateMap<PropertyEditor, PropertyEditorBasic>();
@@ -54,6 +54,7 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(dest => dest.Alias, opt => opt.Ignore())
.ForMember(dest => dest.Group, opt => opt.Ignore())
.ForMember(dest => dest.IsSystemDataType, opt => opt.MapFrom(src => systemIds.Contains(src.Id)))
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore())
.AfterMap((src, dest) =>
{
if (Current.PropertyEditors.TryGet(src.EditorAlias, out var editor))
@@ -67,7 +68,7 @@ namespace Umbraco.Web.Models.Mapping
CreateMap<IDataType, DataTypeDisplay>()
.ForMember(dest => dest.Udi, opt => opt.MapFrom(src => Udi.Create(Constants.UdiEntityType.DataType, src.Key)))
.ForMember(dest => dest.AvailableEditors, opt => opt.ResolveUsing(src => availablePropertyEditorsResolver.Resolve(src)))
.ForMember(dest => dest.PreValues, opt => opt.ResolveUsing(src => preValueDisplayResolver.Resolve(src)))
.ForMember(dest => dest.PreValues, opt => opt.ResolveUsing(src => configurationDisplayResolver.Resolve(src)))
.ForMember(dest => dest.SelectedEditor, opt => opt.MapFrom(src => src.EditorAlias.IsNullOrWhiteSpace() ? null : src.EditorAlias))
.ForMember(dest => dest.HasPrevalues, opt => opt.Ignore())
.ForMember(dest => dest.Notifications, opt => opt.Ignore())
@@ -75,6 +76,7 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(dest => dest.Alias, opt => opt.Ignore())
.ForMember(dest => dest.Group, opt => opt.Ignore())
.ForMember(dest => dest.IsSystemDataType, opt => opt.MapFrom(src => systemIds.Contains(src.Id)))
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore())
.AfterMap((src, dest) =>
{
if (Current.PropertyEditors.TryGet(src.EditorAlias, out var editor))
@@ -86,7 +88,7 @@ namespace Umbraco.Web.Models.Mapping
//gets a list of PreValueFieldDisplay objects from the data type definition
CreateMap<IDataType, IEnumerable<DataTypeConfigurationFieldDisplay>>()
.ConvertUsing(src => preValueDisplayResolver.Resolve(src));
.ConvertUsing(src => configurationDisplayResolver.Resolve(src));
CreateMap<DataTypeSave, IDataType>()
.ConstructUsing(src => new DataType(src.EditorAlias) {CreateDate = DateTime.Now})
@@ -98,7 +100,8 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(dest => dest.DatabaseType, opt => opt.ResolveUsing(src => databaseTypeResolver.Resolve(src)))
.ForMember(dest => dest.CreatorId, opt => opt.Ignore())
.ForMember(dest => dest.Level, opt => opt.Ignore())
.ForMember(dest => dest.SortOrder, opt => opt.Ignore());
.ForMember(dest => dest.SortOrder, opt => opt.Ignore())
.ForMember(dest => dest.Configuration, opt => opt.Ignore());
//Converts a property editor to a new list of pre-value fields - used when creating a new data type or changing a data type with new pre-vals
CreateMap<PropertyEditor, IEnumerable<DataTypeConfigurationFieldDisplay>>()

View File

@@ -43,6 +43,7 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(dest => dest.Alias, opt => opt.Ignore())
.ForMember(dest => dest.IsContainer, opt => opt.Ignore())
.ForMember(dest => dest.Tabs, opt => opt.ResolveUsing(src => tabsAndPropertiesResolver.Resolve(src)))
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore())
.AfterMap((src, dest) => AfterMap(src, dest, dataTypeService, textService, logger, mediaService));
//FROM IMedia TO ContentItemBasic<ContentPropertyBasic, IMedia>
@@ -54,7 +55,8 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(dest => dest.ContentTypeAlias, opt => opt.MapFrom(src => src.ContentType.Alias))
.ForMember(dest => dest.Published, opt => opt.Ignore())
.ForMember(dest => dest.Updater, opt => opt.Ignore())
.ForMember(dest => dest.Alias, opt => opt.Ignore());
.ForMember(dest => dest.Alias, opt => opt.Ignore())
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore());
//FROM IMedia TO ContentItemDto<IMedia>
CreateMap<IMedia, ContentItemDto<IMedia>>()
@@ -63,7 +65,8 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(dest => dest.Published, opt => opt.Ignore())
.ForMember(dest => dest.Updater, opt => opt.Ignore())
.ForMember(dest => dest.Icon, opt => opt.Ignore())
.ForMember(dest => dest.Alias, opt => opt.Ignore());
.ForMember(dest => dest.Alias, opt => opt.Ignore())
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore());
}
private static void AfterMap(IMedia media, MediaItemDisplay display, IDataTypeService dataTypeService, ILocalizedTextService localizedText, ILogger logger, IMediaService mediaService)