2020-12-05 11:12:55 +01:00
|
|
|
// Copyright (c) Umbraco.
|
|
|
|
|
// See LICENSE for more details.
|
|
|
|
|
|
2020-04-13 19:22:31 +02:00
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
2021-02-18 11:06:02 +01:00
|
|
|
using Umbraco.Cms.Core.Models;
|
|
|
|
|
using Umbraco.Cms.Core.Strings;
|
|
|
|
|
using Umbraco.Cms.Tests.Common.Builders.Extensions;
|
|
|
|
|
using Umbraco.Cms.Tests.Common.Builders.Interfaces;
|
2020-04-13 19:22:31 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
namespace Umbraco.Cms.Tests.Common.Builders;
|
|
|
|
|
|
|
|
|
|
public class MacroBuilder
|
|
|
|
|
: BuilderBase<Macro>,
|
|
|
|
|
IWithIdBuilder,
|
|
|
|
|
IWithKeyBuilder,
|
|
|
|
|
IWithAliasBuilder,
|
|
|
|
|
IWithNameBuilder
|
2020-04-13 19:22:31 +02:00
|
|
|
{
|
2022-06-21 08:09:38 +02:00
|
|
|
private readonly List<MacroPropertyBuilder> _propertyBuilders = new();
|
|
|
|
|
private string _alias;
|
|
|
|
|
private bool? _cacheByMember;
|
|
|
|
|
private bool? _cacheByPage;
|
|
|
|
|
private int? _cacheDuration;
|
|
|
|
|
private bool? _dontRender;
|
|
|
|
|
|
|
|
|
|
private int? _id;
|
|
|
|
|
private Guid? _key;
|
|
|
|
|
private string _macroSource;
|
|
|
|
|
private string _name;
|
|
|
|
|
private bool? _useInEditor;
|
|
|
|
|
|
|
|
|
|
string IWithAliasBuilder.Alias
|
2020-04-13 19:22:31 +02:00
|
|
|
{
|
2022-06-21 08:09:38 +02:00
|
|
|
get => _alias;
|
|
|
|
|
set => _alias = value;
|
|
|
|
|
}
|
2020-04-13 19:22:31 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
int? IWithIdBuilder.Id
|
|
|
|
|
{
|
|
|
|
|
get => _id;
|
|
|
|
|
set => _id = value;
|
|
|
|
|
}
|
2020-04-13 19:22:31 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
Guid? IWithKeyBuilder.Key
|
|
|
|
|
{
|
|
|
|
|
get => _key;
|
|
|
|
|
set => _key = value;
|
|
|
|
|
}
|
2020-04-13 19:22:31 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
string IWithNameBuilder.Name
|
|
|
|
|
{
|
|
|
|
|
get => _name;
|
|
|
|
|
set => _name = value;
|
|
|
|
|
}
|
2020-04-13 19:22:31 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
public MacroBuilder WithUseInEditor(bool useInEditor)
|
|
|
|
|
{
|
|
|
|
|
_useInEditor = useInEditor;
|
|
|
|
|
return this;
|
|
|
|
|
}
|
2020-04-13 19:22:31 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
public MacroBuilder WithCacheDuration(int cacheDuration)
|
|
|
|
|
{
|
|
|
|
|
_cacheDuration = cacheDuration;
|
|
|
|
|
return this;
|
|
|
|
|
}
|
2020-04-13 19:22:31 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
public MacroBuilder WithCacheByPage(bool cacheByPage)
|
|
|
|
|
{
|
|
|
|
|
_cacheByPage = cacheByPage;
|
|
|
|
|
return this;
|
|
|
|
|
}
|
2020-04-13 19:22:31 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
public MacroBuilder WithCacheByMember(bool cacheByMember)
|
|
|
|
|
{
|
|
|
|
|
_cacheByMember = cacheByMember;
|
|
|
|
|
return this;
|
|
|
|
|
}
|
2020-04-13 19:22:31 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
public MacroBuilder WithDontRender(bool dontRender)
|
|
|
|
|
{
|
|
|
|
|
_dontRender = dontRender;
|
|
|
|
|
return this;
|
|
|
|
|
}
|
2020-04-13 19:22:31 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
public MacroBuilder WithSource(string macroSource)
|
|
|
|
|
{
|
|
|
|
|
_macroSource = macroSource;
|
|
|
|
|
return this;
|
|
|
|
|
}
|
2020-04-13 19:22:31 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
public MacroPropertyBuilder AddProperty()
|
|
|
|
|
{
|
|
|
|
|
var builder = new MacroPropertyBuilder(this);
|
2020-04-13 19:22:31 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
_propertyBuilders.Add(builder);
|
2020-04-13 19:22:31 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
return builder;
|
|
|
|
|
}
|
2020-04-13 19:22:31 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
public override Macro Build()
|
|
|
|
|
{
|
|
|
|
|
var id = _id ?? 1;
|
|
|
|
|
var name = _name ?? Guid.NewGuid().ToString();
|
|
|
|
|
var alias = _alias ?? name.ToCamelCase();
|
|
|
|
|
var key = _key ?? Guid.NewGuid();
|
|
|
|
|
var useInEditor = _useInEditor ?? false;
|
|
|
|
|
var cacheDuration = _cacheDuration ?? 0;
|
|
|
|
|
var cacheByPage = _cacheByPage ?? false;
|
|
|
|
|
var cacheByMember = _cacheByMember ?? false;
|
|
|
|
|
var dontRender = _dontRender ?? false;
|
|
|
|
|
var macroSource = _macroSource ?? string.Empty;
|
|
|
|
|
|
|
|
|
|
var shortStringHelper = new DefaultShortStringHelper(new DefaultShortStringHelperConfig());
|
|
|
|
|
|
|
|
|
|
var macro = new Macro(shortStringHelper, id, key, useInEditor, cacheDuration, alias, name, cacheByPage, cacheByMember, dontRender, macroSource);
|
|
|
|
|
|
|
|
|
|
foreach (var property in _propertyBuilders.Select(x => x.Build()))
|
2020-04-13 19:22:31 +02:00
|
|
|
{
|
2022-06-21 08:09:38 +02:00
|
|
|
macro.Properties.Add(property);
|
2020-04-13 19:22:31 +02:00
|
|
|
}
|
2022-06-21 08:09:38 +02:00
|
|
|
|
|
|
|
|
return macro;
|
2020-04-13 19:22:31 +02:00
|
|
|
}
|
|
|
|
|
}
|