// Copyright (c) Umbraco. // See LICENSE for more details. using System; using System.Collections.Generic; using Moq; using Umbraco.Cms.Core.PropertyEditors; using Umbraco.Cms.Tests.Common.Builders.Extensions; using Umbraco.Cms.Tests.Common.Builders.Interfaces; namespace Umbraco.Cms.Tests.Common.Builders; public class DataEditorBuilder : ChildBuilderBase, IWithAliasBuilder, IWithNameBuilder { private readonly ConfigurationEditorBuilder> _explicitConfigurationEditorBuilder; private readonly DataValueEditorBuilder> _explicitValueEditorBuilder; private string _alias; private IDictionary _defaultConfiguration; private string _name; public DataEditorBuilder(TParent parentBuilder) : base(parentBuilder) { _explicitConfigurationEditorBuilder = new ConfigurationEditorBuilder>(this); _explicitValueEditorBuilder = new DataValueEditorBuilder>(this); } string IWithAliasBuilder.Alias { get => _alias; set => _alias = value; } string IWithNameBuilder.Name { get => _name; set => _name = value; } public DataEditorBuilder WithDefaultConfiguration(IDictionary defaultConfiguration) { _defaultConfiguration = defaultConfiguration; return this; } public ConfigurationEditorBuilder> AddExplicitConfigurationEditorBuilder() => _explicitConfigurationEditorBuilder; public DataValueEditorBuilder> AddExplicitValueEditorBuilder() => _explicitValueEditorBuilder; public override IDataEditor Build() { var name = _name ?? Guid.NewGuid().ToString(); var alias = _alias ?? name.ToCamelCase(); var defaultConfiguration = _defaultConfiguration ?? new Dictionary(); var explicitConfigurationEditor = _explicitConfigurationEditorBuilder.Build(); var explicitValueEditor = _explicitValueEditorBuilder.Build(); return new DataEditor( Mock.Of()) { Alias = alias, DefaultConfiguration = defaultConfiguration, ExplicitConfigurationEditor = explicitConfigurationEditor, ExplicitValueEditor = explicitValueEditor }; } }