diff --git a/src/Umbraco.Core/Models/RelationType.cs b/src/Umbraco.Core/Models/RelationType.cs index 28290685c2..4c676feed6 100644 --- a/src/Umbraco.Core/Models/RelationType.cs +++ b/src/Umbraco.Core/Models/RelationType.cs @@ -31,8 +31,6 @@ namespace Umbraco.Core.Models _childObjectType = childObjectType; } - - /// /// Gets or sets the Name of the RelationType /// diff --git a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj index 432033d966..a3f8953ac3 100644 --- a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj +++ b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj @@ -76,6 +76,9 @@ <_Parameter1>Umbraco.Tests.Integration + + <_Parameter1>Umbraco.Tests.Common + diff --git a/src/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs b/src/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs index cce3b88470..c105a8bded 100644 --- a/src/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs +++ b/src/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs @@ -33,6 +33,13 @@ namespace Umbraco.Tests.Common.Builders.Extensions return builder; } + public static T WithDeleteDate(this T builder, DateTime deleteDate) + where T : IWithDeleteDateBuilder + { + builder.DeleteDate = deleteDate; + return builder; + } + public static T WithAlias(this T builder, string alias) where T : IWithAliasBuilder { diff --git a/src/Umbraco.Tests.Common/Builders/MemberTypeBuilder.cs b/src/Umbraco.Tests.Common/Builders/MemberTypeBuilder.cs index b01b8a1680..357e701d1b 100644 --- a/src/Umbraco.Tests.Common/Builders/MemberTypeBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/MemberTypeBuilder.cs @@ -10,7 +10,7 @@ using Umbraco.Tests.Common.Builders.Interfaces; namespace Umbraco.Tests.Common.Builders { public class MemberTypeBuilder - : ChildBuilderBase, + : ChildBuilderBase, IWithIdBuilder, IWithAliasBuilder, IWithNameBuilder, @@ -97,7 +97,7 @@ namespace Umbraco.Tests.Common.Builders return builder; } - public override MemberType Build() + public override IMemberType Build() { var id = _id ?? 1; var name = _name ?? Guid.NewGuid().ToString(); diff --git a/src/Umbraco.Tests.Common/Builders/RelationBuilder.cs b/src/Umbraco.Tests.Common/Builders/RelationBuilder.cs new file mode 100644 index 0000000000..2cea234200 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/RelationBuilder.cs @@ -0,0 +1,95 @@ +using System; +using Umbraco.Core.Models; +using Umbraco.Tests.Common.Builders.Interfaces; + +namespace Umbraco.Tests.Common.Builders +{ + public class RelationBuilder + : BuilderBase, + IWithIdBuilder, + IWithKeyBuilder, + IWithCreateDateBuilder, + IWithUpdateDateBuilder + { + private RelationTypeBuilder _relationTypeBuilder; + + private int? _id; + private int? _parentId; + private int? _childId; + private Guid? _key; + private DateTime? _createDate; + private DateTime? _updateDate; + private string _comment; + + public RelationBuilder WithComment(string comment) + { + _comment = comment; + return this; + } + + public RelationBuilder BetweenIds(int parentId, int childId) + { + _parentId = parentId; + _childId = childId; + return this; + } + + public RelationTypeBuilder AddRelationType() + { + var builder = new RelationTypeBuilder(this); + _relationTypeBuilder = builder; + return builder; + } + + public override Relation Build() + { + var id = _id ?? 0; + var parentId = _parentId ?? 0; + var childId = _childId ?? 0; + var key = _key ?? Guid.NewGuid(); + var createDate = _createDate ?? DateTime.Now; + var updateDate = _updateDate ?? DateTime.Now; + var comment = _comment ?? string.Empty; + + if (_relationTypeBuilder == null) + { + throw new InvalidOperationException("Cannot construct a Relation without a RelationType. Use AddRelationType()."); + } + + var relationType = _relationTypeBuilder.Build(); + + return new Relation(parentId, childId, relationType) + { + Comment = comment, + CreateDate = createDate, + Id = id, + Key = key, + UpdateDate = updateDate + }; + } + + int? IWithIdBuilder.Id + { + get => _id; + set => _id = value; + } + + Guid? IWithKeyBuilder.Key + { + get => _key; + set => _key = value; + } + + DateTime? IWithCreateDateBuilder.CreateDate + { + get => _createDate; + set => _createDate = value; + } + + DateTime? IWithUpdateDateBuilder.UpdateDate + { + get => _updateDate; + set => _updateDate = value; + } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/RelationTypeBuilder.cs b/src/Umbraco.Tests.Common/Builders/RelationTypeBuilder.cs index 4ad39c6641..677d02bf09 100644 --- a/src/Umbraco.Tests.Common/Builders/RelationTypeBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/RelationTypeBuilder.cs @@ -4,15 +4,8 @@ using Umbraco.Tests.Common.Builders.Interfaces; namespace Umbraco.Tests.Common.Builders { - public class RelationTypeBuilder : RelationTypeBuilder - { - public RelationTypeBuilder() : base(null) - { - } - } - - public class RelationTypeBuilder - : ChildBuilderBase, + public class RelationTypeBuilder + : ChildBuilderBase, IWithIdBuilder, IWithAliasBuilder, IWithNameBuilder, @@ -32,7 +25,11 @@ namespace Umbraco.Tests.Common.Builders private Guid? _parentObjectType; private DateTime? _updateDate; - public RelationTypeBuilder(TParent parentBuilder) : base(parentBuilder) + public RelationTypeBuilder() : base(null) + { + } + + public RelationTypeBuilder(RelationBuilder parentBuilder) : base(parentBuilder) { } @@ -91,8 +88,7 @@ namespace Umbraco.Tests.Common.Builders var updateDate = _updateDate ?? DateTime.Now; var deleteDate = _deleteDate ?? null; - return new RelationType(name, alias, isBidirectional, parentObjectType, - childObjectType) + return new RelationType(name, alias, isBidirectional, parentObjectType, childObjectType) { Id = id, Key = key, @@ -102,19 +98,19 @@ namespace Umbraco.Tests.Common.Builders }; } - public RelationTypeBuilder WithIsBidirectional(bool isBidirectional) + public RelationTypeBuilder WithIsBidirectional(bool isBidirectional) { _isBidirectional = isBidirectional; return this; } - public RelationTypeBuilder WithChildObjectType(Guid childObjectType) + public RelationTypeBuilder WithChildObjectType(Guid childObjectType) { _childObjectType = childObjectType; return this; } - public RelationTypeBuilder WithParentObjectType(Guid parentObjectType) + public RelationTypeBuilder WithParentObjectType(Guid parentObjectType) { _parentObjectType = parentObjectType; return this; diff --git a/src/Umbraco.Tests.Common/Builders/StylesheetBuilder.cs b/src/Umbraco.Tests.Common/Builders/StylesheetBuilder.cs new file mode 100644 index 0000000000..ed871b9c31 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/StylesheetBuilder.cs @@ -0,0 +1,34 @@ +using Umbraco.Core.Models; + +namespace Umbraco.Tests.Common.Builders +{ + public class StylesheetBuilder + : BuilderBase + { + private string _path; + private string _content; + + public StylesheetBuilder WithPath(string path) + { + _path = path; + return this; + } + + public StylesheetBuilder WithContent(string content) + { + _content = content; + return this; + } + + public override Stylesheet Build() + { + var path = _path ?? string.Empty; + var content = _content ?? string.Empty; + + return new Stylesheet(path) + { + Content = content, + }; + } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs b/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs new file mode 100644 index 0000000000..7f7fa0f098 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs @@ -0,0 +1,116 @@ +using System; +using Umbraco.Core.Models; +using Umbraco.Core.Strings; +using Umbraco.Tests.Common.Builders.Extensions; +using Umbraco.Tests.Common.Builders.Interfaces; + +namespace Umbraco.Tests.Common.Builders +{ + public class TemplateBuilder + : BuilderBase