Add ContentCultureInfosBuilder

This commit is contained in:
nikolajlauridsen
2021-10-07 14:09:34 +02:00
parent 0f803ec7e9
commit df1d456c98
4 changed files with 75 additions and 16 deletions

View File

@@ -0,0 +1,45 @@
using System;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Tests.Common.Builders.Interfaces;
namespace Umbraco.Cms.Tests.Common.Builders
{
public class ContentCultureInfosBuilder : ChildBuilderBase<ContentCultureInfosCollectionBuilder, ContentCultureInfos>,
IWithNameBuilder,
IWithDateBuilder
{
private string _name;
private string _cultureIso;
private DateTime? _date;
public ContentCultureInfosBuilder(ContentCultureInfosCollectionBuilder parentBuilder) : base(parentBuilder)
{
}
public ContentCultureInfosBuilder WithCultureIso(string cultureIso)
{
_cultureIso = cultureIso;
return this;
}
public override ContentCultureInfos Build()
{
var name = _name ?? Guid.NewGuid().ToString();
var cultureIso = _cultureIso ?? "en-us";
DateTime date = _date ?? DateTime.Now;
return new ContentCultureInfos(cultureIso) { Name = name, Date = date };
}
public string Name
{
get => _name;
set => _name = value;
}
public DateTime? Date
{
get => _date;
set => _date = value;
}
}
}

View File

@@ -7,31 +7,30 @@ namespace Umbraco.Cms.Tests.Common.Builders
{
public class ContentCultureInfosCollectionBuilder : ChildBuilderBase<ContentBuilder, ContentCultureInfosCollection>, IBuildContentCultureInfosCollection
{
private List<ContentCultureInfos> _cultureInfos;
public ContentCultureInfosCollectionBuilder(ContentBuilder parentBuilder) : base(parentBuilder) => _cultureInfos = new List<ContentCultureInfos>();
private List<ContentCultureInfosBuilder> _cultureInfosBuilders;
public ContentCultureInfosCollectionBuilder(ContentBuilder parentBuilder) : base(parentBuilder) => _cultureInfosBuilders = new List<ContentCultureInfosBuilder>();
// TODO: Should this again wrap *another* child builder "ContentCultureInfosBuilder"?
public ContentCultureInfosCollectionBuilder WithCultureInfo(string culture, string name, DateTime? date = null)
public ContentCultureInfosBuilder AddCultureInfos()
{
if (date is null)
{
date = DateTime.Now;
}
_cultureInfos.Add(new ContentCultureInfos(culture) { Name = name, Date = date.Value });
return this;
var builder = new ContentCultureInfosBuilder(this);
_cultureInfosBuilders.Add(builder);
return builder;
}
public override ContentCultureInfosCollection Build()
{
var cultureInfos = new ContentCultureInfosCollection();
foreach (ContentCultureInfos cultureInfo in _cultureInfos)
if (_cultureInfosBuilders.Count < 1)
{
cultureInfos.AddOrUpdate(cultureInfo.Culture, cultureInfo.Name, cultureInfo.Date);
throw new InvalidOperationException("You must add at least one culture infos to the collection builder");
}
var cultureInfosCollection = new ContentCultureInfosCollection();
foreach (ContentCultureInfosBuilder cultureInfosBuilder in _cultureInfosBuilders)
{
cultureInfosCollection.Add(cultureInfosBuilder.Build());
}
return cultureInfos;
return cultureInfosCollection;
}
}
}

View File

@@ -234,5 +234,11 @@ namespace Umbraco.Cms.Tests.Common.Builders.Extensions
builder.PropertyValuesSegment = segment;
return builder;
}
public static T WithDate<T>(this T builder, DateTime date) where T : IWithDateBuilder
{
builder.Date = date;
return builder;
}
}
}

View File

@@ -0,0 +1,9 @@
using System;
namespace Umbraco.Cms.Tests.Common.Builders.Interfaces
{
public interface IWithDateBuilder
{
DateTime? Date { get; set; }
}
}