Add ContentCultureInfosBuilder
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
using System;
|
||||
|
||||
namespace Umbraco.Cms.Tests.Common.Builders.Interfaces
|
||||
{
|
||||
public interface IWithDateBuilder
|
||||
{
|
||||
DateTime? Date { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user