diff --git a/tests/Umbraco.Tests.Common/Builders/ContentEditingBaseBuilder.cs b/tests/Umbraco.Tests.Common/Builders/ContentEditingBaseBuilder.cs index 1341d45f1c..c7a4ef6075 100644 --- a/tests/Umbraco.Tests.Common/Builders/ContentEditingBaseBuilder.cs +++ b/tests/Umbraco.Tests.Common/Builders/ContentEditingBaseBuilder.cs @@ -6,7 +6,6 @@ using Umbraco.Extensions; namespace Umbraco.Cms.Tests.Common.Builders; public abstract class ContentEditingBaseBuilder : BuilderBase, - IWithInvariantNameBuilder, IWithKeyBuilder, IWithContentTypeKeyBuilder, IWithParentKeyBuilder, @@ -14,12 +13,11 @@ public abstract class ContentEditingBaseBuilder : BuilderBase>> _invariantProperties = []; + private List>> _properties = []; private List>> _variants = []; private Guid _contentTypeKey; private Guid? _parentKey; private Guid? _key; - private string _invariantName; Guid? IWithKeyBuilder.Key { @@ -27,12 +25,6 @@ public abstract class ContentEditingBaseBuilder : BuilderBase _key = value; } - string IWithInvariantNameBuilder.InvariantName - { - get => _invariantName; - set => _invariantName = value; - } - Guid? IWithParentKeyBuilder.ParentKey { get => _parentKey; @@ -45,13 +37,6 @@ public abstract class ContentEditingBaseBuilder : BuilderBase _contentTypeKey = value; } - public ContentEditingPropertyValueBuilder> AddInvariantProperty() - { - var builder = new ContentEditingPropertyValueBuilder>(this); - _invariantProperties.Add(builder); - return builder; - } - public ContentEditingVariantBuilder> AddVariant() { var builder = new ContentEditingVariantBuilder>(this); @@ -59,8 +44,20 @@ public abstract class ContentEditingBaseBuilder : BuilderBase> AddProperty() + { + var builder = new ContentEditingPropertyValueBuilder>(this); + _properties.Add(builder); + return builder; + } + public override TCreateModel Build() { + if (_variants.Any() is false) + { + throw new InvalidOperationException("Expected at least one variant (invariant is also a variant)."); + } + if (_parentKey is not null) { _model.ParentKey = _parentKey; @@ -68,21 +65,7 @@ public abstract class ContentEditingBaseBuilder : BuilderBase p.Build()) - .Union(_variants.SelectMany(variant => variant.GetProperties().Select(p => p.Build()))) - .ToArray(); - - if (_invariantName.IsNullOrWhiteSpace() is false) - { - if (_variants.Any()) - { - throw new InvalidOperationException("Cannot combine invariant and variant variants."); - } - - AddVariant().WithName(_invariantName); - } - + _model.Properties = _properties.Select(p => p.Build()).ToArray(); _model.Variants = _variants.Select(x => x.Build()).ToList(); return _model; diff --git a/tests/Umbraco.Tests.Common/Builders/ContentEditingBuilder.cs b/tests/Umbraco.Tests.Common/Builders/ContentEditingBuilder.cs index b541c66e6c..9b38fe5aa6 100644 --- a/tests/Umbraco.Tests.Common/Builders/ContentEditingBuilder.cs +++ b/tests/Umbraco.Tests.Common/Builders/ContentEditingBuilder.cs @@ -27,14 +27,18 @@ public class ContentEditingBuilder : ContentEditingBaseBuilder new ContentEditingBuilder() .WithContentTypeKey(contentTypeKey) - .WithInvariantName("Home") - .AddInvariantProperty() + .AddVariant() + .WithName("Home") + .Done() + .AddProperty() .WithAlias("title") .WithValue("Welcome to our Home page") .Done() @@ -43,9 +47,11 @@ public class ContentEditingBuilder : ContentEditingBaseBuilder new ContentEditingBuilder() .WithContentTypeKey(contentTypeKey) - .WithInvariantName(name) + .AddVariant() + .WithName(name) + .Done() .WithParentKey(parentKey) - .AddInvariantProperty() + .AddProperty() .WithAlias("title") .WithValue("Welcome to our Home page") .Done() @@ -54,8 +60,10 @@ public class ContentEditingBuilder : ContentEditingBaseBuilder new ContentEditingBuilder() .WithContentTypeKey(contentTypeKey) - .WithInvariantName(name) - .AddInvariantProperty() + .AddVariant() + .WithName(name) + .Done() + .AddProperty() .WithAlias("title") .WithValue("Welcome to our Home page") .Done() @@ -64,13 +72,15 @@ public class ContentEditingBuilder : ContentEditingBaseBuilder new ContentEditingBuilder() .WithContentTypeKey(contentTypeKey) - .WithInvariantName(name) + .AddVariant() + .WithName(name) + .Done() .WithParentKey(parentKey) - .AddInvariantProperty() + .AddProperty() .WithAlias(firstPropertyAlias) .WithValue(firstPropertyValue) .Done() - .AddInvariantProperty() + .AddProperty() .WithAlias(secondPropertyAlias) .WithValue(secondPropertyValue) .Done() @@ -79,8 +89,10 @@ public class ContentEditingBuilder : ContentEditingBaseBuilder new ContentEditingBuilder() .WithContentTypeKey(contentTypeKey) - .WithInvariantName(name) - .AddInvariantProperty() + .AddVariant() + .WithName(name) + .Done() + .AddProperty() .WithAlias(propertyAlias) .WithValue(propertyValue) .Done() @@ -92,18 +104,20 @@ public class ContentEditingBuilder : ContentEditingBaseBuilder(TParent parentBuilder) - : ChildBuilderBase(parentBuilder), IWithAliasBuilder, IWithValueBuilder, IWithCultureBuilder + : ChildBuilderBase(parentBuilder), IWithAliasBuilder, IWithValueBuilder, IWithCultureBuilder, IWithSegmentBuilder { private string _alias; private object? _value; private string? _culture; + private string? _segment; string IWithAliasBuilder.Alias { @@ -22,11 +23,17 @@ public class ContentEditingPropertyValueBuilder(TParent parentBuilder) set => _value = value; } - string IWithCultureBuilder.Culture + string? IWithCultureBuilder.Culture { get => _culture; set => _culture = value; } + string? IWithSegmentBuilder.Segment + { + get => _segment; + set => _segment = value; + } + public override PropertyValueModel Build() => new() { Alias = _alias, Value = _value, Culture = _culture }; } diff --git a/tests/Umbraco.Tests.Common/Builders/ContentEditingVariantBuilder.cs b/tests/Umbraco.Tests.Common/Builders/ContentEditingVariantBuilder.cs index 0fa0cb3e89..2a691df581 100644 --- a/tests/Umbraco.Tests.Common/Builders/ContentEditingVariantBuilder.cs +++ b/tests/Umbraco.Tests.Common/Builders/ContentEditingVariantBuilder.cs @@ -10,7 +10,6 @@ public class ContentEditingVariantBuilder(TParent parentBuilder) private string? _culture; private string? _segment; private string _name; - private readonly List>> _properties = new(); string? IWithCultureBuilder.Culture { @@ -30,23 +29,6 @@ public class ContentEditingVariantBuilder(TParent parentBuilder) set => _name = value; } - public ContentEditingPropertyValueBuilder> AddProperty() - { - var builder = new ContentEditingPropertyValueBuilder>((ContentEditingVariantBuilder)this); - _properties.Add(builder); - return builder; - } - - public IReadOnlyCollection>> GetProperties() - { - if (_culture is null) - { - throw new InvalidOperationException("Culture must be defined for the variant before building."); - } - - return _properties.Select(property => property.WithCulture(_culture)).ToList(); - } - public override VariantModel Build() => new() { diff --git a/tests/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs b/tests/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs index accee29bae..d890b7fc56 100644 --- a/tests/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs +++ b/tests/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs @@ -247,13 +247,6 @@ public static class BuilderExtensions return builder; } - public static T WithInvariantName(this T builder, string invariantName) - where T : IWithInvariantNameBuilder - { - builder.InvariantName = invariantName; - return builder; - } - public static T WithKey(this T builder, Guid? key) where T : IWithKeyBuilder { diff --git a/tests/Umbraco.Tests.Common/Builders/Interfaces/IWithInvariantNameBuilder.cs b/tests/Umbraco.Tests.Common/Builders/Interfaces/IWithInvariantNameBuilder.cs deleted file mode 100644 index ffc466fa98..0000000000 --- a/tests/Umbraco.Tests.Common/Builders/Interfaces/IWithInvariantNameBuilder.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Umbraco.Cms.Tests.Common.Builders.Interfaces; - -public interface IWithInvariantNameBuilder -{ - public string? InvariantName { get; set; } -} diff --git a/tests/Umbraco.Tests.Common/Builders/MediaEditingBuilder.cs b/tests/Umbraco.Tests.Common/Builders/MediaEditingBuilder.cs index e2b5eddffb..6ae3291f7e 100644 --- a/tests/Umbraco.Tests.Common/Builders/MediaEditingBuilder.cs +++ b/tests/Umbraco.Tests.Common/Builders/MediaEditingBuilder.cs @@ -9,22 +9,28 @@ public class MediaEditingBuilder : ContentEditingBaseBuilder new MediaEditingBuilder() .WithKey(key) .WithContentTypeKey(mediaTypeKey) - .WithInvariantName("Media") + .AddVariant() + .WithName("Media") + .Done() .Build(); public static MediaCreateModel CreateSimpleMedia(Guid mediaTypeKey, string name, Guid? parentKey) => new MediaEditingBuilder() .WithContentTypeKey(mediaTypeKey) - .WithInvariantName(name) + .AddVariant() + .WithName(name) + .Done() .WithParentKey(parentKey) .Build(); public static MediaCreateModel CreateMediaWithAProperty(Guid mediaTypeKey, string name, Guid? parentKey, string propertyAlias = "testProperty", string propertyValue = "TestValue") => new MediaEditingBuilder() .WithContentTypeKey(mediaTypeKey) - .WithInvariantName(name) + .AddVariant() + .WithName(name) + .Done() .WithParentKey(parentKey) - .AddInvariantProperty() + .AddProperty() .WithAlias(propertyAlias) .WithValue(propertyValue) .Done()