Browse Source

API extended

pull/253/head
Sebastian Stehle 8 years ago
parent
commit
a6b5318bed
  1. 2
      src/Squidex.Domain.Apps.Core.Model/Schemas/NumberFieldProperties.cs
  2. 2
      src/Squidex.Domain.Apps.Core.Model/Schemas/StringFieldProperties.cs
  3. 14
      src/Squidex.Domain.Apps.Entities/Schemas/Guards/FieldPropertiesValidator.cs
  4. 5
      src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/BooleanFieldPropertiesDto.cs
  5. 5
      src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/NumberFieldPropertiesDto.cs
  6. 5
      src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/StringFieldPropertiesDto.cs
  7. 28
      tests/Squidex.Domain.Apps.Entities.Tests/Schemas/Guards/FieldProperties/NumberFieldPropertiesTests.cs
  8. 31
      tests/Squidex.Domain.Apps.Entities.Tests/Schemas/Guards/FieldProperties/StringFieldPropertiesTests.cs

2
src/Squidex.Domain.Apps.Core.Model/Schemas/NumberFieldProperties.cs

@ -21,6 +21,8 @@ namespace Squidex.Domain.Apps.Core.Schemas
public double? DefaultValue { get; set; }
public bool InlineEditable { get; set; }
public NumberFieldEditor Editor { get; set; }
public override T Accept<T>(IFieldPropertiesVisitor<T> visitor)

2
src/Squidex.Domain.Apps.Core.Model/Schemas/StringFieldProperties.cs

@ -19,6 +19,8 @@ namespace Squidex.Domain.Apps.Core.Schemas
public int? MaxLength { get; set; }
public bool InlineEditable { get; set; }
public string DefaultValue { get; set; }
public string Pattern { get; set; }

14
src/Squidex.Domain.Apps.Entities/Schemas/Guards/FieldPropertiesValidator.cs

@ -170,6 +170,13 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Guards
nameof(properties.MinValue),
nameof(properties.MaxValue));
}
if (properties.InlineEditable && properties.Editor != NumberFieldEditor.Input && properties.Editor != NumberFieldEditor.Dropdown)
{
yield return new ValidationError("Inline editing is only allowed for dropdowns and input fields.",
nameof(properties.InlineEditable),
nameof(properties.Editor));
}
}
public IEnumerable<ValidationError> Visit(ReferencesFieldProperties properties)
@ -216,6 +223,13 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Guards
nameof(properties.MinLength),
nameof(properties.MaxLength));
}
if (properties.InlineEditable && properties.Editor != StringFieldEditor.Input && properties.Editor != StringFieldEditor.Input && properties.Editor != StringFieldEditor.Slug)
{
yield return new ValidationError("Inline editing is only allowed for dropdowns, slugs and input fields.",
nameof(properties.InlineEditable),
nameof(properties.Editor));
}
}
public IEnumerable<ValidationError> Visit(TagsFieldProperties properties)

5
src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/BooleanFieldPropertiesDto.cs

@ -21,6 +21,11 @@ namespace Squidex.Areas.Api.Controllers.Schemas.Models.Fields
/// </summary>
public bool? DefaultValue { get; set; }
/// <summary>
/// Indicates that the inline editor is enabled for this field.
/// </summary>
public bool InlineEditable { get; set; }
/// <summary>
/// The editor that is used to manage this field.
/// </summary>

5
src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/NumberFieldPropertiesDto.cs

@ -37,6 +37,11 @@ namespace Squidex.Areas.Api.Controllers.Schemas.Models.Fields
/// </summary>
public double[] AllowedValues { get; set; }
/// <summary>
/// Indicates that the inline editor is enabled for this field.
/// </summary>
public bool InlineEditable { get; set; }
/// <summary>
/// The editor that is used to manage this field.
/// </summary>

5
src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/StringFieldPropertiesDto.cs

@ -47,6 +47,11 @@ namespace Squidex.Areas.Api.Controllers.Schemas.Models.Fields
/// </summary>
public string[] AllowedValues { get; set; }
/// <summary>
/// Indicates that the inline editor is enabled for this field.
/// </summary>
public bool InlineEditable { get; set; }
/// <summary>
/// The editor that is used to manage this field.
/// </summary>

28
tests/Squidex.Domain.Apps.Entities.Tests/Schemas/Guards/FieldProperties/NumberFieldPropertiesTests.cs

@ -129,5 +129,33 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Guards.FieldProperties
new ValidationError("Editor is not a valid value.", "Editor")
});
}
[Theory]
[InlineData(NumberFieldEditor.Radio)]
[InlineData(NumberFieldEditor.Stars)]
public void Should_add_error_if_inline_editing_is_not_allowed_for_editor(NumberFieldEditor editor)
{
var sut = new NumberFieldProperties { InlineEditable = true, Editor = editor };
var errors = FieldPropertiesValidator.Validate(sut).ToList();
errors.ShouldBeEquivalentTo(
new List<ValidationError>
{
new ValidationError("Inline editing is only allowed for dropdowns and input fields.", "InlineEditable", "Editor")
});
}
[Theory]
[InlineData(NumberFieldEditor.Input)]
[InlineData(NumberFieldEditor.Dropdown)]
public void Should_not_add_error_if_inline_editing_is_allowed_for_editor(NumberFieldEditor editor)
{
var sut = new NumberFieldProperties { InlineEditable = true, Editor = editor };
var errors = FieldPropertiesValidator.Validate(sut).ToList();
Assert.Empty(errors);
}
}
}

31
tests/Squidex.Domain.Apps.Entities.Tests/Schemas/Guards/FieldProperties/StringFieldPropertiesTests.cs

@ -100,5 +100,36 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Guards.FieldProperties
new ValidationError("Pattern is not a valid expression.", "Pattern")
});
}
[Theory]
[InlineData(StringFieldEditor.Markdown)]
[InlineData(StringFieldEditor.Radio)]
[InlineData(StringFieldEditor.RichText)]
[InlineData(StringFieldEditor.TextArea)]
public void Should_add_error_if_inline_editing_is_not_allowed_for_editor(StringFieldEditor editor)
{
var sut = new StringFieldProperties { InlineEditable = true, Editor = editor };
var errors = FieldPropertiesValidator.Validate(sut).ToList();
errors.ShouldBeEquivalentTo(
new List<ValidationError>
{
new ValidationError("Inline editing is only allowed for dropdowns, slugs and input fields.", "InlineEditable", "Editor")
});
}
[Theory]
[InlineData(StringFieldEditor.Dropdown)]
[InlineData(StringFieldEditor.Input)]
[InlineData(StringFieldEditor.Slug)]
public void Should_not_add_error_if_inline_editing_is_allowed_for_editor(StringFieldEditor editor)
{
var sut = new StringFieldProperties { InlineEditable = true, Editor = editor };
var errors = FieldPropertiesValidator.Validate(sut).ToList();
Assert.Empty(errors);
}
}
}

Loading…
Cancel
Save