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 source in sources)
{ {
foreach (var otherValue in source) 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) public IdContentData MergeInto(IdContentData target)
{ {
return Merge(new IdContentData(), this, target); return Merge(target, this);
} }
public IdContentData ToCleaned() 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) public NamedContentData MergeInto(NamedContentData target)
{ {
return Merge(new NamedContentData(), this, target); return Merge(target, this);
} }
public NamedContentData ToCleaned() 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)) .AddValue("iv", 1))
.AddField("field2", .AddField("field2",
new ContentFieldData() new ContentFieldData()
.AddValue("de", 2)); .AddValue("de", 2)
.AddValue("it", 2));
var rhs = var rhs =
new NamedContentData() new NamedContentData()
.AddField("field2", .AddField("field2",
new ContentFieldData() new ContentFieldData()
.AddValue("it", 3)
.AddValue("en", 3)) .AddValue("en", 3))
.AddField("field3", .AddField("field3",
new ContentFieldData() new ContentFieldData()
@ -104,6 +106,7 @@ namespace Squidex.Domain.Apps.Core.Model.Contents
.AddValue("iv", 1)) .AddValue("iv", 1))
.AddField("field2", .AddField("field2",
new ContentFieldData() new ContentFieldData()
.AddValue("it", 2)
.AddValue("de", 2) .AddValue("de", 2)
.AddValue("en", 3)) .AddValue("en", 3))
.AddField("field3", .AddField("field3",
@ -127,12 +130,14 @@ namespace Squidex.Domain.Apps.Core.Model.Contents
.AddValue("iv", 1)) .AddValue("iv", 1))
.AddField(2, .AddField(2,
new ContentFieldData() new ContentFieldData()
.AddValue("de", 2)); .AddValue("de", 2)
.AddValue("it", 2));
var rhs = var rhs =
new IdContentData() new IdContentData()
.AddField(2, .AddField(2,
new ContentFieldData() new ContentFieldData()
.AddValue("it", 3)
.AddValue("en", 3)) .AddValue("en", 3))
.AddField(3, .AddField(3,
new ContentFieldData() new ContentFieldData()
@ -145,6 +150,7 @@ namespace Squidex.Domain.Apps.Core.Model.Contents
.AddValue("iv", 1)) .AddValue("iv", 1))
.AddField(2, .AddField(2,
new ContentFieldData() new ContentFieldData()
.AddValue("it", 2)
.AddValue("de", 2) .AddValue("de", 2)
.AddValue("en", 3)) .AddValue("en", 3))
.AddField(3, .AddField(3,

Loading…
Cancel
Save