Browse Source

Merging fixed.

pull/206/head
Sebastian Stehle 8 years ago
parent
commit
6f090a4151
  1. 10
      src/Squidex.Domain.Apps.Core.Model/Contents/ContentData.cs
  2. 7
      src/Squidex.Domain.Apps.Core.Model/Contents/IdContentData.cs
  3. 7
      src/Squidex.Domain.Apps.Core.Model/Contents/NamedContentData.cs
  4. 10
      tests/Squidex.Domain.Apps.Core.Tests/Model/Contents/ContentDataTests.cs

10
src/Squidex.Domain.Apps.Core.Model/Contents/ContentData.cs

@ -31,15 +31,15 @@ namespace Squidex.Domain.Apps.Core.Contents
{
}
protected static TResult Merge<TResult>(TResult target, TResult source1, TResult source2) where TResult : ContentData<T>
protected static TResult MergeTo<TResult>(TResult target, params TResult[] sources) where TResult : ContentData<T>
{
if (ReferenceEquals(source1, source2))
Guard.NotEmpty(sources, nameof(sources));
if (sources.Length == 1 || sources.Skip(1).All(x => ReferenceEquals(x, sources[0])))
{
return source1;
return sources[0];
}
var sources = new[] { source1, source2 };
foreach (var source in sources)
{
foreach (var otherValue in source)

7
src/Squidex.Domain.Apps.Core.Model/Contents/IdContentData.cs

@ -24,9 +24,14 @@ namespace Squidex.Domain.Apps.Core.Contents
{
}
public static IdContentData Merge(params IdContentData[] contents)
{
return MergeTo(new IdContentData(), contents);
}
public IdContentData MergeInto(IdContentData target)
{
return Merge(new IdContentData(), this, target);
return Merge(target, this);
}
public IdContentData ToCleaned()

7
src/Squidex.Domain.Apps.Core.Model/Contents/NamedContentData.cs

@ -24,9 +24,14 @@ namespace Squidex.Domain.Apps.Core.Contents
{
}
public static NamedContentData Merge(params NamedContentData[] contents)
{
return MergeTo(new NamedContentData(), contents);
}
public NamedContentData MergeInto(NamedContentData target)
{
return Merge(new NamedContentData(), this, target);
return Merge(target, this);
}
public NamedContentData ToCleaned()

10
tests/Squidex.Domain.Apps.Core.Tests/Model/Contents/ContentDataTests.cs

@ -86,12 +86,14 @@ namespace Squidex.Domain.Apps.Core.Model.Contents
.AddValue("iv", 1))
.AddField("field2",
new ContentFieldData()
.AddValue("de", 2));
.AddValue("de", 2)
.AddValue("it", 2));
var rhs =
new NamedContentData()
.AddField("field2",
new ContentFieldData()
.AddValue("it", 3)
.AddValue("en", 3))
.AddField("field3",
new ContentFieldData()
@ -104,6 +106,7 @@ namespace Squidex.Domain.Apps.Core.Model.Contents
.AddValue("iv", 1))
.AddField("field2",
new ContentFieldData()
.AddValue("it", 2)
.AddValue("de", 2)
.AddValue("en", 3))
.AddField("field3",
@ -127,12 +130,14 @@ namespace Squidex.Domain.Apps.Core.Model.Contents
.AddValue("iv", 1))
.AddField(2,
new ContentFieldData()
.AddValue("de", 2));
.AddValue("de", 2)
.AddValue("it", 2));
var rhs =
new IdContentData()
.AddField(2,
new ContentFieldData()
.AddValue("it", 3)
.AddValue("en", 3))
.AddField(3,
new ContentFieldData()
@ -145,6 +150,7 @@ namespace Squidex.Domain.Apps.Core.Model.Contents
.AddValue("iv", 1))
.AddField(2,
new ContentFieldData()
.AddValue("it", 2)
.AddValue("de", 2)
.AddValue("en", 3))
.AddField(3,

Loading…
Cancel
Save