mirror of https://github.com/Squidex/squidex.git
committed by
GitHub
16 changed files with 288 additions and 18 deletions
@ -0,0 +1,203 @@ |
|||||
|
// ==========================================================================
|
||||
|
// Squidex Headless CMS
|
||||
|
// ==========================================================================
|
||||
|
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
||||
|
// All rights reserved. Licensed under the MIT license.
|
||||
|
// ==========================================================================
|
||||
|
|
||||
|
using System.ComponentModel.DataAnnotations; |
||||
|
using FluentAssertions; |
||||
|
using Squidex.Domain.Apps.Core.HandleRules; |
||||
|
using Squidex.Domain.Apps.Core.Rules; |
||||
|
using Squidex.Infrastructure.Validation; |
||||
|
using Xunit; |
||||
|
|
||||
|
namespace Squidex.Domain.Apps.Core.Operations.HandleRules; |
||||
|
|
||||
|
public class RuleTypeProviderTests |
||||
|
{ |
||||
|
private readonly RuleTypeProvider sut = new RuleTypeProvider(); |
||||
|
|
||||
|
private abstract class MyRuleActionHandler : RuleActionHandler<MyRuleAction, string> |
||||
|
{ |
||||
|
protected MyRuleActionHandler(RuleEventFormatter formatter) |
||||
|
: base(formatter) |
||||
|
{ |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public enum ActionEnum |
||||
|
{ |
||||
|
Yes, |
||||
|
No |
||||
|
} |
||||
|
|
||||
|
[RuleAction( |
||||
|
Title = "Action", |
||||
|
IconImage = "<svg></svg>", |
||||
|
IconColor = "#1e5470", |
||||
|
Display = "Action display", |
||||
|
Description = "Action description.", |
||||
|
ReadMore = "https://www.readmore.com/")] |
||||
|
public sealed record MyRuleAction : RuleAction |
||||
|
{ |
||||
|
[LocalizedRequired] |
||||
|
[Display(Name = "Url Name", Description = "Url Description")] |
||||
|
[Editor(RuleFieldEditor.Url)] |
||||
|
[Formattable] |
||||
|
public Uri Url { get; set; } |
||||
|
|
||||
|
[Editor(RuleFieldEditor.Javascript)] |
||||
|
public string Script { get; set; } |
||||
|
|
||||
|
[Editor(RuleFieldEditor.Text)] |
||||
|
public string Text { get; set; } |
||||
|
|
||||
|
[Editor(RuleFieldEditor.TextArea)] |
||||
|
public string TextMultiline { get; set; } |
||||
|
|
||||
|
[Editor(RuleFieldEditor.Password)] |
||||
|
public string Password { get; set; } |
||||
|
|
||||
|
[Editor(RuleFieldEditor.Text)] |
||||
|
public ActionEnum Enum { get; set; } |
||||
|
|
||||
|
[Editor(RuleFieldEditor.Text)] |
||||
|
public ActionEnum? EnumOptional { get; set; } |
||||
|
|
||||
|
[Editor(RuleFieldEditor.Text)] |
||||
|
public bool Boolean { get; set; } |
||||
|
|
||||
|
[Editor(RuleFieldEditor.Text)] |
||||
|
public bool? BooleanOptional { get; set; } |
||||
|
|
||||
|
[Editor(RuleFieldEditor.Text)] |
||||
|
public int Number { get; set; } |
||||
|
|
||||
|
[Editor(RuleFieldEditor.Text)] |
||||
|
public int? NumberOptional { get; set; } |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public void Should_create_definition() |
||||
|
{ |
||||
|
var expected = new RuleActionDefinition |
||||
|
{ |
||||
|
Type = typeof(MyRuleAction), |
||||
|
Title = "Action", |
||||
|
IconImage = "<svg></svg>", |
||||
|
IconColor = "#1e5470", |
||||
|
Display = "Action display", |
||||
|
Description = "Action description.", |
||||
|
ReadMore = "https://www.readmore.com/" |
||||
|
}; |
||||
|
|
||||
|
expected.Properties.Add(new RuleActionProperty |
||||
|
{ |
||||
|
Name = "url", |
||||
|
Display = "Url Name", |
||||
|
Description = "Url Description", |
||||
|
Editor = RuleFieldEditor.Url, |
||||
|
IsFormattable = true, |
||||
|
IsRequired = true |
||||
|
}); |
||||
|
|
||||
|
expected.Properties.Add(new RuleActionProperty |
||||
|
{ |
||||
|
Name = "script", |
||||
|
Display = "Script", |
||||
|
Description = null, |
||||
|
Editor = RuleFieldEditor.Javascript, |
||||
|
IsRequired = false |
||||
|
}); |
||||
|
|
||||
|
expected.Properties.Add(new RuleActionProperty |
||||
|
{ |
||||
|
Name = "text", |
||||
|
Display = "Text", |
||||
|
Description = null, |
||||
|
Editor = RuleFieldEditor.Text, |
||||
|
IsRequired = false |
||||
|
}); |
||||
|
|
||||
|
expected.Properties.Add(new RuleActionProperty |
||||
|
{ |
||||
|
Name = "textMultiline", |
||||
|
Display = "TextMultiline", |
||||
|
Description = null, |
||||
|
Editor = RuleFieldEditor.TextArea, |
||||
|
IsRequired = false |
||||
|
}); |
||||
|
|
||||
|
expected.Properties.Add(new RuleActionProperty |
||||
|
{ |
||||
|
Name = "password", |
||||
|
Display = "Password", |
||||
|
Description = null, |
||||
|
Editor = RuleFieldEditor.Password, |
||||
|
IsRequired = false |
||||
|
}); |
||||
|
|
||||
|
expected.Properties.Add(new RuleActionProperty |
||||
|
{ |
||||
|
Name = "enum", |
||||
|
Display = "Enum", |
||||
|
Description = null, |
||||
|
Editor = RuleFieldEditor.Dropdown, |
||||
|
IsRequired = false, |
||||
|
Options = new[] { "Yes", "No" } |
||||
|
}); |
||||
|
|
||||
|
expected.Properties.Add(new RuleActionProperty |
||||
|
{ |
||||
|
Name = "enumOptional", |
||||
|
Display = "EnumOptional", |
||||
|
Description = null, |
||||
|
Editor = RuleFieldEditor.Dropdown, |
||||
|
IsRequired = false, |
||||
|
Options = new[] { "Yes", "No" } |
||||
|
}); |
||||
|
|
||||
|
expected.Properties.Add(new RuleActionProperty |
||||
|
{ |
||||
|
Name = "boolean", |
||||
|
Display = "Boolean", |
||||
|
Description = null, |
||||
|
Editor = RuleFieldEditor.Checkbox, |
||||
|
IsRequired = false |
||||
|
}); |
||||
|
|
||||
|
expected.Properties.Add(new RuleActionProperty |
||||
|
{ |
||||
|
Name = "booleanOptional", |
||||
|
Display = "BooleanOptional", |
||||
|
Description = null, |
||||
|
Editor = RuleFieldEditor.Checkbox, |
||||
|
IsRequired = false |
||||
|
}); |
||||
|
|
||||
|
expected.Properties.Add(new RuleActionProperty |
||||
|
{ |
||||
|
Name = "number", |
||||
|
Display = "Number", |
||||
|
Description = null, |
||||
|
Editor = RuleFieldEditor.Number, |
||||
|
IsRequired = true |
||||
|
}); |
||||
|
|
||||
|
expected.Properties.Add(new RuleActionProperty |
||||
|
{ |
||||
|
Name = "numberOptional", |
||||
|
Display = "NumberOptional", |
||||
|
Description = null, |
||||
|
Editor = RuleFieldEditor.Number, |
||||
|
IsRequired = false |
||||
|
}); |
||||
|
|
||||
|
sut.Add<MyRuleAction>(); |
||||
|
|
||||
|
var currentDefinition = sut.Actions.Values.First(); |
||||
|
|
||||
|
currentDefinition.Should().BeEquivalentTo(expected); |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue