Browse Source

Remove useless classes.

pull/295/head
Sebastian 8 years ago
parent
commit
f5764cbeca
  1. 27
      src/Squidex.Domain.Apps.Core.Model/Schemas/AssetsField.cs
  2. 9
      src/Squidex.Domain.Apps.Core.Model/Schemas/AssetsFieldProperties.cs
  3. 27
      src/Squidex.Domain.Apps.Core.Model/Schemas/BooleanField.cs
  4. 9
      src/Squidex.Domain.Apps.Core.Model/Schemas/BooleanFieldProperties.cs
  5. 27
      src/Squidex.Domain.Apps.Core.Model/Schemas/DateTimeField.cs
  6. 9
      src/Squidex.Domain.Apps.Core.Model/Schemas/DateTimeFieldProperties.cs
  7. 2
      src/Squidex.Domain.Apps.Core.Model/Schemas/Field.cs
  8. 2
      src/Squidex.Domain.Apps.Core.Model/Schemas/FieldProperties.cs
  9. 102
      src/Squidex.Domain.Apps.Core.Model/Schemas/Fields.cs
  10. 9
      src/Squidex.Domain.Apps.Core.Model/Schemas/Field{T}.cs
  11. 27
      src/Squidex.Domain.Apps.Core.Model/Schemas/GeolocationField.cs
  12. 9
      src/Squidex.Domain.Apps.Core.Model/Schemas/GeolocationFieldProperties.cs
  13. 26
      src/Squidex.Domain.Apps.Core.Model/Schemas/IField.cs
  14. 18
      src/Squidex.Domain.Apps.Core.Model/Schemas/IFieldVisitor.cs
  15. 14
      src/Squidex.Domain.Apps.Core.Model/Schemas/IField{T}.cs
  16. 27
      src/Squidex.Domain.Apps.Core.Model/Schemas/JsonField.cs
  17. 9
      src/Squidex.Domain.Apps.Core.Model/Schemas/JsonFieldProperties.cs
  18. 27
      src/Squidex.Domain.Apps.Core.Model/Schemas/NumberField.cs
  19. 9
      src/Squidex.Domain.Apps.Core.Model/Schemas/NumberFieldProperties.cs
  20. 27
      src/Squidex.Domain.Apps.Core.Model/Schemas/ReferencesField.cs
  21. 9
      src/Squidex.Domain.Apps.Core.Model/Schemas/ReferencesFieldProperties.cs
  22. 27
      src/Squidex.Domain.Apps.Core.Model/Schemas/StringField.cs
  23. 9
      src/Squidex.Domain.Apps.Core.Model/Schemas/StringFieldProperties.cs
  24. 27
      src/Squidex.Domain.Apps.Core.Model/Schemas/TagsField.cs
  25. 9
      src/Squidex.Domain.Apps.Core.Model/Schemas/TagsFieldProperties.cs
  26. 4
      src/Squidex.Domain.Apps.Core.Operations/ConvertContent/FieldConverters.cs
  27. 4
      src/Squidex.Domain.Apps.Core.Operations/EnrichContent/ContentEnricher.cs
  28. 12
      src/Squidex.Domain.Apps.Core.Operations/ExtractReferenceIds/ReferencesCleaner.cs
  29. 10
      src/Squidex.Domain.Apps.Core.Operations/ExtractReferenceIds/ReferencesExtractor.cs
  30. 22
      src/Squidex.Domain.Apps.Core.Operations/GenerateEdmSchema/EdmTypeVisitor.cs
  31. 20
      src/Squidex.Domain.Apps.Core.Operations/GenerateJsonSchema/JsonTypeVisitor.cs
  32. 20
      src/Squidex.Domain.Apps.Core.Operations/ValidateContent/JsonValueConverter.cs
  33. 50
      src/Squidex.Domain.Apps.Entities/Contents/GraphQL/GraphQLModel.cs
  34. 4
      src/Squidex.Domain.Apps.Entities/Contents/GraphQL/IGraphModel.cs
  35. 1
      src/Squidex.Domain.Apps.Entities/Contents/QueryContext.cs
  36. 44
      tests/Squidex.Domain.Apps.Core.Tests/Model/Schemas/FieldRegistryTests.cs
  37. 4
      tests/Squidex.Domain.Apps.Core.Tests/Model/Schemas/SchemaFieldTests.cs
  38. 8
      tests/Squidex.Domain.Apps.Core.Tests/Model/Schemas/SchemaTests.cs
  39. 12
      tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/ContentConversionFlatTests.cs
  40. 12
      tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/ContentConversionTests.cs
  41. 10
      tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/FieldConvertersTests.cs
  42. 38
      tests/Squidex.Domain.Apps.Core.Tests/Operations/EnrichContent/ContentEnrichmentTests.cs
  43. 40
      tests/Squidex.Domain.Apps.Core.Tests/Operations/ExtractReferenceIds/ReferenceExtractionTests.cs
  44. 4
      tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/AssetsFieldTests.cs
  45. 4
      tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/BooleanFieldTests.cs
  46. 40
      tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/ContentValidationTests.cs
  47. 4
      tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/DateTimeFieldTests.cs
  48. 4
      tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/GeolocationFieldTests.cs
  49. 4
      tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/JsonFieldTests.cs
  50. 4
      tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/NumberFieldTests.cs
  51. 4
      tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/ReferencesFieldTests.cs
  52. 4
      tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/StringFieldTests.cs
  53. 4
      tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/TagsFieldTests.cs
  54. 44
      tests/Squidex.Domain.Apps.Core.Tests/TestData.cs
  55. 8
      tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentGrainTests.cs
  56. 40
      tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs
  57. 32
      tests/Squidex.Domain.Apps.Entities.Tests/Contents/OData/ODataQueryTests.cs
  58. 4
      tests/Squidex.Domain.Apps.Entities.Tests/Schemas/Guards/GuardSchemaFieldTests.cs
  59. 4
      tests/Squidex.Domain.Apps.Entities.Tests/Schemas/Guards/GuardSchemaTests.cs

27
src/Squidex.Domain.Apps.Core.Model/Schemas/AssetsField.cs

@ -1,27 +0,0 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschränkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
namespace Squidex.Domain.Apps.Core.Schemas
{
public sealed class AssetsField : Field<AssetsFieldProperties>
{
public AssetsField(long id, string name, Partitioning partitioning)
: base(id, name, partitioning, new AssetsFieldProperties())
{
}
public AssetsField(long id, string name, Partitioning partitioning, AssetsFieldProperties properties)
: base(id, name, partitioning, properties)
{
}
public override T Accept<T>(IFieldVisitor<T> visitor)
{
return visitor.Visit(this);
}
}
}

9
src/Squidex.Domain.Apps.Core.Model/Schemas/AssetsFieldProperties.cs

@ -10,7 +10,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas namespace Squidex.Domain.Apps.Core.Schemas
{ {
[TypeName(nameof(AssetsField))] [TypeName("AssetsField")]
public sealed class AssetsFieldProperties : FieldProperties public sealed class AssetsFieldProperties : FieldProperties
{ {
public bool MustBeImage { get; set; } public bool MustBeImage { get; set; }
@ -42,9 +42,14 @@ namespace Squidex.Domain.Apps.Core.Schemas
return visitor.Visit(this); return visitor.Visit(this);
} }
public override T Accept<T>(IFieldVisitor<T> visitor, IField field)
{
return visitor.Visit((IField<AssetsFieldProperties>)field);
}
public override Field CreateField(long id, string name, Partitioning partitioning) public override Field CreateField(long id, string name, Partitioning partitioning)
{ {
return new AssetsField(id, name, partitioning, this); return new Field<AssetsFieldProperties>(id, name, partitioning, this);
} }
} }
} }

27
src/Squidex.Domain.Apps.Core.Model/Schemas/BooleanField.cs

@ -1,27 +0,0 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschränkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
namespace Squidex.Domain.Apps.Core.Schemas
{
public sealed class BooleanField : Field<BooleanFieldProperties>
{
public BooleanField(long id, string name, Partitioning partitioning)
: base(id, name, partitioning, new BooleanFieldProperties())
{
}
public BooleanField(long id, string name, Partitioning partitioning, BooleanFieldProperties properties)
: base(id, name, partitioning, properties)
{
}
public override T Accept<T>(IFieldVisitor<T> visitor)
{
return visitor.Visit(this);
}
}
}

9
src/Squidex.Domain.Apps.Core.Model/Schemas/BooleanFieldProperties.cs

@ -9,7 +9,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas namespace Squidex.Domain.Apps.Core.Schemas
{ {
[TypeName(nameof(BooleanField))] [TypeName("BooleanField")]
public sealed class BooleanFieldProperties : FieldProperties public sealed class BooleanFieldProperties : FieldProperties
{ {
public bool? DefaultValue { get; set; } public bool? DefaultValue { get; set; }
@ -23,9 +23,14 @@ namespace Squidex.Domain.Apps.Core.Schemas
return visitor.Visit(this); return visitor.Visit(this);
} }
public override T Accept<T>(IFieldVisitor<T> visitor, IField field)
{
return visitor.Visit((IField<BooleanFieldProperties>)field);
}
public override Field CreateField(long id, string name, Partitioning partitioning) public override Field CreateField(long id, string name, Partitioning partitioning)
{ {
return new BooleanField(id, name, partitioning, this); return new Field<BooleanFieldProperties>(id, name, partitioning, this);
} }
} }
} }

27
src/Squidex.Domain.Apps.Core.Model/Schemas/DateTimeField.cs

@ -1,27 +0,0 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschränkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
namespace Squidex.Domain.Apps.Core.Schemas
{
public sealed class DateTimeField : Field<DateTimeFieldProperties>
{
public DateTimeField(long id, string name, Partitioning partitioning)
: base(id, name, partitioning, new DateTimeFieldProperties())
{
}
public DateTimeField(long id, string name, Partitioning partitioning, DateTimeFieldProperties properties)
: base(id, name, partitioning, properties)
{
}
public override T Accept<T>(IFieldVisitor<T> visitor)
{
return visitor.Visit(this);
}
}
}

9
src/Squidex.Domain.Apps.Core.Model/Schemas/DateTimeFieldProperties.cs

@ -10,7 +10,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas namespace Squidex.Domain.Apps.Core.Schemas
{ {
[TypeName(nameof(DateTimeField))] [TypeName("DateTimeField")]
public sealed class DateTimeFieldProperties : FieldProperties public sealed class DateTimeFieldProperties : FieldProperties
{ {
public Instant? MaxValue { get; set; } public Instant? MaxValue { get; set; }
@ -28,9 +28,14 @@ namespace Squidex.Domain.Apps.Core.Schemas
return visitor.Visit(this); return visitor.Visit(this);
} }
public override T Accept<T>(IFieldVisitor<T> visitor, IField field)
{
return visitor.Visit((IField<DateTimeFieldProperties>)field);
}
public override Field CreateField(long id, string name, Partitioning partitioning) public override Field CreateField(long id, string name, Partitioning partitioning)
{ {
return new DateTimeField(id, name, partitioning, this); return new Field<DateTimeFieldProperties>(id, name, partitioning, this);
} }
} }
} }

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

@ -10,7 +10,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas namespace Squidex.Domain.Apps.Core.Schemas
{ {
public abstract class Field : Cloneable<Field> public abstract class Field : Cloneable<Field>, IField
{ {
private readonly long fieldId; private readonly long fieldId;
private readonly Partitioning partitioning; private readonly Partitioning partitioning;

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

@ -19,6 +19,8 @@ namespace Squidex.Domain.Apps.Core.Schemas
public abstract T Accept<T>(IFieldPropertiesVisitor<T> visitor); public abstract T Accept<T>(IFieldPropertiesVisitor<T> visitor);
public abstract T Accept<T>(IFieldVisitor<T> visitor, IField field);
public abstract Field CreateField(long id, string name, Partitioning partitioning); public abstract Field CreateField(long id, string name, Partitioning partitioning);
} }
} }

102
src/Squidex.Domain.Apps.Core.Model/Schemas/Fields.cs

@ -0,0 +1,102 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
namespace Squidex.Domain.Apps.Core.Schemas
{
public static class Fields
{
public static Field<AssetsFieldProperties> Assets(long id, string name, Partitioning partitioning, AssetsFieldProperties properties = null)
{
return new Field<AssetsFieldProperties>(id, name, partitioning, properties ?? new AssetsFieldProperties());
}
public static Field<BooleanFieldProperties> Boolean(long id, string name, Partitioning partitioning, BooleanFieldProperties properties = null)
{
return new Field<BooleanFieldProperties>(id, name, partitioning, properties ?? new BooleanFieldProperties());
}
public static Field<DateTimeFieldProperties> DateTime(long id, string name, Partitioning partitioning, DateTimeFieldProperties properties = null)
{
return new Field<DateTimeFieldProperties>(id, name, partitioning, properties ?? new DateTimeFieldProperties());
}
public static Field<GeolocationFieldProperties> Geolocation(long id, string name, Partitioning partitioning, GeolocationFieldProperties properties = null)
{
return new Field<GeolocationFieldProperties>(id, name, partitioning, properties ?? new GeolocationFieldProperties());
}
public static Field<JsonFieldProperties> Json(long id, string name, Partitioning partitioning, JsonFieldProperties properties = null)
{
return new Field<JsonFieldProperties>(id, name, partitioning, properties ?? new JsonFieldProperties());
}
public static Field<NumberFieldProperties> Number(long id, string name, Partitioning partitioning, NumberFieldProperties properties = null)
{
return new Field<NumberFieldProperties>(id, name, partitioning, properties ?? new NumberFieldProperties());
}
public static Field<ReferencesFieldProperties> References(long id, string name, Partitioning partitioning, ReferencesFieldProperties properties = null)
{
return new Field<ReferencesFieldProperties>(id, name, partitioning, properties ?? new ReferencesFieldProperties());
}
public static Field<StringFieldProperties> String(long id, string name, Partitioning partitioning, StringFieldProperties properties = null)
{
return new Field<StringFieldProperties>(id, name, partitioning, properties ?? new StringFieldProperties());
}
public static Field<TagsFieldProperties> Tags(long id, string name, Partitioning partitioning, TagsFieldProperties properties = null)
{
return new Field<TagsFieldProperties>(id, name, partitioning, properties ?? new TagsFieldProperties());
}
public static Schema AddAssets(this Schema schema, long id, string name, Partitioning partitioning, AssetsFieldProperties properties = null)
{
return schema.AddField(Assets(id, name, partitioning, properties));
}
public static Schema AddBoolean(this Schema schema, long id, string name, Partitioning partitioning, BooleanFieldProperties properties = null)
{
return schema.AddField(Boolean(id, name, partitioning, properties));
}
public static Schema AddDateTime(this Schema schema, long id, string name, Partitioning partitioning, DateTimeFieldProperties properties = null)
{
return schema.AddField(DateTime(id, name, partitioning, properties));
}
public static Schema AddGeolocation(this Schema schema, long id, string name, Partitioning partitioning, GeolocationFieldProperties properties = null)
{
return schema.AddField(Geolocation(id, name, partitioning, properties));
}
public static Schema AddJson(this Schema schema, long id, string name, Partitioning partitioning, JsonFieldProperties properties = null)
{
return schema.AddField(Json(id, name, partitioning, properties));
}
public static Schema AddNumber(this Schema schema, long id, string name, Partitioning partitioning, NumberFieldProperties properties = null)
{
return schema.AddField(Number(id, name, partitioning, properties));
}
public static Schema AddReferences(this Schema schema, long id, string name, Partitioning partitioning, ReferencesFieldProperties properties = null)
{
return schema.AddField(References(id, name, partitioning, properties));
}
public static Schema AddString(this Schema schema, long id, string name, Partitioning partitioning, StringFieldProperties properties = null)
{
return schema.AddField(String(id, name, partitioning, properties));
}
public static Schema AddTags(this Schema schema, long id, string name, Partitioning partitioning, TagsFieldProperties properties = null)
{
return schema.AddField(Tags(id, name, partitioning, properties));
}
}
}

9
src/Squidex.Domain.Apps.Core.Model/Schemas/Field{T}.cs

@ -11,7 +11,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas namespace Squidex.Domain.Apps.Core.Schemas
{ {
public abstract class Field<T> : Field where T : FieldProperties, new() public sealed class Field<T> : Field where T : FieldProperties, new()
{ {
private T properties; private T properties;
@ -25,7 +25,7 @@ namespace Squidex.Domain.Apps.Core.Schemas
get { return properties; } get { return properties; }
} }
protected Field(long id, string name, Partitioning partitioning, T properties) public Field(long id, string name, Partitioning partitioning, T properties)
: base(id, name, partitioning) : base(id, name, partitioning)
{ {
Guard.NotNull(properties, nameof(properties)); Guard.NotNull(properties, nameof(properties));
@ -57,5 +57,10 @@ namespace Squidex.Domain.Apps.Core.Schemas
return typedProperties; return typedProperties;
} }
public override TResult Accept<TResult>(IFieldVisitor<TResult> visitor)
{
return RawProperties.Accept(visitor, this);
}
} }
} }

27
src/Squidex.Domain.Apps.Core.Model/Schemas/GeolocationField.cs

@ -1,27 +0,0 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschränkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
namespace Squidex.Domain.Apps.Core.Schemas
{
public sealed class GeolocationField : Field<GeolocationFieldProperties>
{
public GeolocationField(long id, string name, Partitioning partitioning)
: base(id, name, partitioning, new GeolocationFieldProperties())
{
}
public GeolocationField(long id, string name, Partitioning partitioning, GeolocationFieldProperties properties)
: base(id, name, partitioning, properties)
{
}
public override T Accept<T>(IFieldVisitor<T> visitor)
{
return visitor.Visit(this);
}
}
}

9
src/Squidex.Domain.Apps.Core.Model/Schemas/GeolocationFieldProperties.cs

@ -9,7 +9,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas namespace Squidex.Domain.Apps.Core.Schemas
{ {
[TypeName(nameof(GeolocationField))] [TypeName("GeolocationField")]
public sealed class GeolocationFieldProperties : FieldProperties public sealed class GeolocationFieldProperties : FieldProperties
{ {
public GeolocationFieldEditor Editor { get; set; } public GeolocationFieldEditor Editor { get; set; }
@ -19,9 +19,14 @@ namespace Squidex.Domain.Apps.Core.Schemas
return visitor.Visit(this); return visitor.Visit(this);
} }
public override T Accept<T>(IFieldVisitor<T> visitor, IField field)
{
return visitor.Visit((IField<GeolocationFieldProperties>)field);
}
public override Field CreateField(long id, string name, Partitioning partitioning) public override Field CreateField(long id, string name, Partitioning partitioning)
{ {
return new GeolocationField(id, name, partitioning, this); return new Field<GeolocationFieldProperties>(id, name, partitioning, this);
} }
} }
} }

26
src/Squidex.Domain.Apps.Core.Model/Schemas/IField.cs

@ -0,0 +1,26 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
namespace Squidex.Domain.Apps.Core.Schemas
{
public interface IField
{
long Id { get; }
string Name { get; }
bool IsDisabled { get; }
bool IsHidden { get; }
bool IsLocked { get; }
FieldProperties RawProperties { get; }
T Accept<T>(IFieldVisitor<T> visitor);
}
}

18
src/Squidex.Domain.Apps.Core.Model/Schemas/IFieldVisitor.cs

@ -9,22 +9,22 @@ namespace Squidex.Domain.Apps.Core.Schemas
{ {
public interface IFieldVisitor<out T> public interface IFieldVisitor<out T>
{ {
T Visit(AssetsField field); T Visit(IField<AssetsFieldProperties> field);
T Visit(BooleanField field); T Visit(IField<BooleanFieldProperties> field);
T Visit(DateTimeField field); T Visit(IField<DateTimeFieldProperties> field);
T Visit(GeolocationField field); T Visit(IField<GeolocationFieldProperties> field);
T Visit(JsonField field); T Visit(IField<JsonFieldProperties> field);
T Visit(NumberField field); T Visit(IField<NumberFieldProperties> field);
T Visit(ReferencesField field); T Visit(IField<ReferencesFieldProperties> field);
T Visit(StringField field); T Visit(IField<StringFieldProperties> field);
T Visit(TagsField field); T Visit(IField<TagsFieldProperties> field);
} }
} }

14
src/Squidex.Domain.Apps.Core.Model/Schemas/IField{T}.cs

@ -0,0 +1,14 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
namespace Squidex.Domain.Apps.Core.Schemas
{
public interface IField<T> : IField
{
T Properties { get; }
}
}

27
src/Squidex.Domain.Apps.Core.Model/Schemas/JsonField.cs

@ -1,27 +0,0 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschränkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
namespace Squidex.Domain.Apps.Core.Schemas
{
public sealed class JsonField : Field<JsonFieldProperties>
{
public JsonField(long id, string name, Partitioning partitioning)
: base(id, name, partitioning, new JsonFieldProperties())
{
}
public JsonField(long id, string name, Partitioning partitioning, JsonFieldProperties properties)
: base(id, name, partitioning, properties)
{
}
public override T Accept<T>(IFieldVisitor<T> visitor)
{
return visitor.Visit(this);
}
}
}

9
src/Squidex.Domain.Apps.Core.Model/Schemas/JsonFieldProperties.cs

@ -9,7 +9,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas namespace Squidex.Domain.Apps.Core.Schemas
{ {
[TypeName(nameof(JsonField))] [TypeName("JsonField")]
public sealed class JsonFieldProperties : FieldProperties public sealed class JsonFieldProperties : FieldProperties
{ {
public override T Accept<T>(IFieldPropertiesVisitor<T> visitor) public override T Accept<T>(IFieldPropertiesVisitor<T> visitor)
@ -17,9 +17,14 @@ namespace Squidex.Domain.Apps.Core.Schemas
return visitor.Visit(this); return visitor.Visit(this);
} }
public override T Accept<T>(IFieldVisitor<T> visitor, IField field)
{
return visitor.Visit((IField<JsonFieldProperties>)field);
}
public override Field CreateField(long id, string name, Partitioning partitioning) public override Field CreateField(long id, string name, Partitioning partitioning)
{ {
return new JsonField(id, name, partitioning, this); return new Field<JsonFieldProperties>(id, name, partitioning, this);
} }
} }
} }

27
src/Squidex.Domain.Apps.Core.Model/Schemas/NumberField.cs

@ -1,27 +0,0 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschränkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
namespace Squidex.Domain.Apps.Core.Schemas
{
public sealed class NumberField : Field<NumberFieldProperties>
{
public NumberField(long id, string name, Partitioning partitioning)
: base(id, name, partitioning, new NumberFieldProperties())
{
}
public NumberField(long id, string name, Partitioning partitioning, NumberFieldProperties properties)
: base(id, name, partitioning, properties)
{
}
public override T Accept<T>(IFieldVisitor<T> visitor)
{
return visitor.Visit(this);
}
}
}

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

@ -10,7 +10,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas namespace Squidex.Domain.Apps.Core.Schemas
{ {
[TypeName(nameof(NumberField))] [TypeName("NumberField")]
public sealed class NumberFieldProperties : FieldProperties public sealed class NumberFieldProperties : FieldProperties
{ {
public ImmutableList<double> AllowedValues { get; set; } public ImmutableList<double> AllowedValues { get; set; }
@ -30,9 +30,14 @@ namespace Squidex.Domain.Apps.Core.Schemas
return visitor.Visit(this); return visitor.Visit(this);
} }
public override T Accept<T>(IFieldVisitor<T> visitor, IField field)
{
return visitor.Visit((IField<NumberFieldProperties>)field);
}
public override Field CreateField(long id, string name, Partitioning partitioning) public override Field CreateField(long id, string name, Partitioning partitioning)
{ {
return new NumberField(id, name, partitioning, this); return new Field<NumberFieldProperties>(id, name, partitioning, this);
} }
} }
} }

27
src/Squidex.Domain.Apps.Core.Model/Schemas/ReferencesField.cs

@ -1,27 +0,0 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschränkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
namespace Squidex.Domain.Apps.Core.Schemas
{
public sealed class ReferencesField : Field<ReferencesFieldProperties>
{
public ReferencesField(long id, string name, Partitioning partitioning)
: base(id, name, partitioning, new ReferencesFieldProperties())
{
}
public ReferencesField(long id, string name, Partitioning partitioning, ReferencesFieldProperties properties)
: base(id, name, partitioning, properties)
{
}
public override T Accept<T>(IFieldVisitor<T> visitor)
{
return visitor.Visit(this);
}
}
}

9
src/Squidex.Domain.Apps.Core.Model/Schemas/ReferencesFieldProperties.cs

@ -10,7 +10,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas namespace Squidex.Domain.Apps.Core.Schemas
{ {
[TypeName(nameof(ReferencesField))] [TypeName("ReferencesField")]
public sealed class ReferencesFieldProperties : FieldProperties public sealed class ReferencesFieldProperties : FieldProperties
{ {
public int? MinItems { get; set; } public int? MinItems { get; set; }
@ -24,9 +24,14 @@ namespace Squidex.Domain.Apps.Core.Schemas
return visitor.Visit(this); return visitor.Visit(this);
} }
public override T Accept<T>(IFieldVisitor<T> visitor, IField field)
{
return visitor.Visit((IField<ReferencesFieldProperties>)field);
}
public override Field CreateField(long id, string name, Partitioning partitioning) public override Field CreateField(long id, string name, Partitioning partitioning)
{ {
return new ReferencesField(id, name, partitioning, this); return new Field<ReferencesFieldProperties>(id, name, partitioning, this);
} }
} }
} }

27
src/Squidex.Domain.Apps.Core.Model/Schemas/StringField.cs

@ -1,27 +0,0 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschränkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
namespace Squidex.Domain.Apps.Core.Schemas
{
public sealed class StringField : Field<StringFieldProperties>
{
public StringField(long id, string name, Partitioning partitioning)
: base(id, name, partitioning, new StringFieldProperties())
{
}
public StringField(long id, string name, Partitioning partitioning, StringFieldProperties properties)
: base(id, name, partitioning, properties)
{
}
public override T Accept<T>(IFieldVisitor<T> visitor)
{
return visitor.Visit(this);
}
}
}

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

@ -10,7 +10,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas namespace Squidex.Domain.Apps.Core.Schemas
{ {
[TypeName(nameof(StringField))] [TypeName("StringField")]
public sealed class StringFieldProperties : FieldProperties public sealed class StringFieldProperties : FieldProperties
{ {
public ImmutableList<string> AllowedValues { get; set; } public ImmutableList<string> AllowedValues { get; set; }
@ -34,9 +34,14 @@ namespace Squidex.Domain.Apps.Core.Schemas
return visitor.Visit(this); return visitor.Visit(this);
} }
public override T Accept<T>(IFieldVisitor<T> visitor, IField field)
{
return visitor.Visit((IField<StringFieldProperties>)field);
}
public override Field CreateField(long id, string name, Partitioning partitioning) public override Field CreateField(long id, string name, Partitioning partitioning)
{ {
return new StringField(id, name, partitioning, this); return new Field<StringFieldProperties>(id, name, partitioning, this);
} }
} }
} }

27
src/Squidex.Domain.Apps.Core.Model/Schemas/TagsField.cs

@ -1,27 +0,0 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschränkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
namespace Squidex.Domain.Apps.Core.Schemas
{
public sealed class TagsField : Field<TagsFieldProperties>
{
public TagsField(long id, string name, Partitioning partitioning)
: base(id, name, partitioning, new TagsFieldProperties())
{
}
public TagsField(long id, string name, Partitioning partitioning, TagsFieldProperties properties)
: base(id, name, partitioning, properties)
{
}
public override T Accept<T>(IFieldVisitor<T> visitor)
{
return visitor.Visit(this);
}
}
}

9
src/Squidex.Domain.Apps.Core.Model/Schemas/TagsFieldProperties.cs

@ -9,7 +9,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas namespace Squidex.Domain.Apps.Core.Schemas
{ {
[TypeName(nameof(TagsField))] [TypeName("TagsField")]
public sealed class TagsFieldProperties : FieldProperties public sealed class TagsFieldProperties : FieldProperties
{ {
public int? MinItems { get; set; } public int? MinItems { get; set; }
@ -21,9 +21,14 @@ namespace Squidex.Domain.Apps.Core.Schemas
return visitor.Visit(this); return visitor.Visit(this);
} }
public override T Accept<T>(IFieldVisitor<T> visitor, IField field)
{
return visitor.Visit((IField<TagsFieldProperties>)field);
}
public override Field CreateField(long id, string name, Partitioning partitioning) public override Field CreateField(long id, string name, Partitioning partitioning)
{ {
return new TagsField(id, name, partitioning, this); return new Field<TagsFieldProperties>(id, name, partitioning, this);
} }
} }
} }

4
src/Squidex.Domain.Apps.Core.Operations/ConvertContent/FieldConverters.cs

@ -208,7 +208,7 @@ namespace Squidex.Domain.Apps.Core.ConvertContent
{ {
return (data, field) => return (data, field) =>
{ {
if (field is JsonField) if (field is IField<JsonFieldProperties>)
{ {
var result = new ContentFieldData(); var result = new ContentFieldData();
@ -237,7 +237,7 @@ namespace Squidex.Domain.Apps.Core.ConvertContent
{ {
return (data, field) => return (data, field) =>
{ {
if (field is JsonField) if (field is IField<JsonFieldProperties>)
{ {
var result = new ContentFieldData(); var result = new ContentFieldData();

4
src/Squidex.Domain.Apps.Core.Operations/EnrichContent/ContentEnricher.cs

@ -69,9 +69,9 @@ namespace Squidex.Domain.Apps.Core.EnrichContent
} }
} }
private static bool ShouldApplyDefaultValue(Field field, JToken value) private static bool ShouldApplyDefaultValue(IField field, JToken value)
{ {
return value.IsNull() || (field is StringField && value is JValue jValue && Equals(jValue.Value, string.Empty)); return value.IsNull() || (field is IField<StringFieldProperties> && value is JValue jValue && Equals(jValue.Value, string.Empty));
} }
} }
} }

12
src/Squidex.Domain.Apps.Core.Operations/ExtractReferenceIds/ReferencesCleaner.cs

@ -18,16 +18,16 @@ namespace Squidex.Domain.Apps.Core.ExtractReferenceIds
{ {
private static readonly List<Guid> EmptyIds = new List<Guid>(); private static readonly List<Guid> EmptyIds = new List<Guid>();
public static JToken CleanReferences(this Field field, JToken value, ISet<Guid> oldReferences) public static JToken CleanReferences(this IField field, JToken value, ISet<Guid> oldReferences)
{ {
if ((field is AssetsField || field is ReferencesField) && !value.IsNull()) if ((field is IField<AssetsFieldProperties> || field is IField<ReferencesFieldProperties>) && !value.IsNull())
{ {
switch (field) switch (field)
{ {
case AssetsField assetsField: case IField<AssetsFieldProperties> assetsField:
return Visit(assetsField, value, oldReferences); return Visit(assetsField, value, oldReferences);
case ReferencesField referencesField: case IField<ReferencesFieldProperties> referencesField:
return Visit(referencesField, value, oldReferences); return Visit(referencesField, value, oldReferences);
} }
} }
@ -35,7 +35,7 @@ namespace Squidex.Domain.Apps.Core.ExtractReferenceIds
return value; return value;
} }
private static JToken Visit(AssetsField field, JToken value, IEnumerable<Guid> oldReferences) private static JToken Visit(IField<AssetsFieldProperties> field, JToken value, IEnumerable<Guid> oldReferences)
{ {
var oldIds = GetIds(value); var oldIds = GetIds(value);
var newIds = oldIds.Except(oldReferences).ToList(); var newIds = oldIds.Except(oldReferences).ToList();
@ -43,7 +43,7 @@ namespace Squidex.Domain.Apps.Core.ExtractReferenceIds
return oldIds.Count != newIds.Count ? JToken.FromObject(newIds) : value; return oldIds.Count != newIds.Count ? JToken.FromObject(newIds) : value;
} }
private static JToken Visit(ReferencesField field, JToken value, ICollection<Guid> oldReferences) private static JToken Visit(IField<ReferencesFieldProperties> field, JToken value, ICollection<Guid> oldReferences)
{ {
if (oldReferences.Contains(field.Properties.SchemaId)) if (oldReferences.Contains(field.Properties.SchemaId))
{ {

10
src/Squidex.Domain.Apps.Core.Operations/ExtractReferenceIds/ReferencesExtractor.cs

@ -15,21 +15,21 @@ namespace Squidex.Domain.Apps.Core.ExtractReferenceIds
{ {
public static class ReferencesExtractor public static class ReferencesExtractor
{ {
public static IEnumerable<Guid> ExtractReferences(this Field field, JToken value) public static IEnumerable<Guid> ExtractReferences(this IField field, JToken value)
{ {
switch (field) switch (field)
{ {
case AssetsField assetsField: case IField<AssetsFieldProperties> assetsField:
return Visit(assetsField, value); return Visit(assetsField, value);
case ReferencesField referencesField: case IField<ReferencesFieldProperties> referencesField:
return Visit(referencesField, value); return Visit(referencesField, value);
} }
return Enumerable.Empty<Guid>(); return Enumerable.Empty<Guid>();
} }
public static IEnumerable<Guid> Visit(AssetsField field, JToken value) public static IEnumerable<Guid> Visit(IField<AssetsFieldProperties> field, JToken value)
{ {
IEnumerable<Guid> result; IEnumerable<Guid> result;
try try
@ -44,7 +44,7 @@ namespace Squidex.Domain.Apps.Core.ExtractReferenceIds
return result ?? Enumerable.Empty<Guid>(); return result ?? Enumerable.Empty<Guid>();
} }
private static IEnumerable<Guid> Visit(ReferencesField field, JToken value) private static IEnumerable<Guid> Visit(IField<ReferencesFieldProperties> field, JToken value)
{ {
IEnumerable<Guid> result; IEnumerable<Guid> result;
try try

22
src/Squidex.Domain.Apps.Core.Operations/GenerateEdmSchema/EdmTypeVisitor.cs

@ -18,57 +18,57 @@ namespace Squidex.Domain.Apps.Core.GenerateEdmSchema
{ {
} }
public static IEdmTypeReference CreateEdmType(Field field) public static IEdmTypeReference CreateEdmType(IField field)
{ {
return field.Accept(Instance); return field.Accept(Instance);
} }
public IEdmTypeReference Visit(AssetsField field) public IEdmTypeReference Visit(IField<AssetsFieldProperties> field)
{ {
return CreatePrimitive(EdmPrimitiveTypeKind.String, field); return CreatePrimitive(EdmPrimitiveTypeKind.String, field);
} }
public IEdmTypeReference Visit(BooleanField field) public IEdmTypeReference Visit(IField<BooleanFieldProperties> field)
{ {
return CreatePrimitive(EdmPrimitiveTypeKind.Boolean, field); return CreatePrimitive(EdmPrimitiveTypeKind.Boolean, field);
} }
public IEdmTypeReference Visit(DateTimeField field) public IEdmTypeReference Visit(IField<DateTimeFieldProperties> field)
{ {
return CreatePrimitive(EdmPrimitiveTypeKind.DateTimeOffset, field); return CreatePrimitive(EdmPrimitiveTypeKind.DateTimeOffset, field);
} }
public IEdmTypeReference Visit(GeolocationField field) public IEdmTypeReference Visit(IField<GeolocationFieldProperties> field)
{ {
return null; return null;
} }
public IEdmTypeReference Visit(JsonField field) public IEdmTypeReference Visit(IField<JsonFieldProperties> field)
{ {
return null; return null;
} }
public IEdmTypeReference Visit(NumberField field) public IEdmTypeReference Visit(IField<NumberFieldProperties> field)
{ {
return CreatePrimitive(EdmPrimitiveTypeKind.Double, field); return CreatePrimitive(EdmPrimitiveTypeKind.Double, field);
} }
public IEdmTypeReference Visit(ReferencesField field) public IEdmTypeReference Visit(IField<ReferencesFieldProperties> field)
{ {
return CreatePrimitive(EdmPrimitiveTypeKind.String, field); return CreatePrimitive(EdmPrimitiveTypeKind.String, field);
} }
public IEdmTypeReference Visit(StringField field) public IEdmTypeReference Visit(IField<StringFieldProperties> field)
{ {
return CreatePrimitive(EdmPrimitiveTypeKind.String, field); return CreatePrimitive(EdmPrimitiveTypeKind.String, field);
} }
public IEdmTypeReference Visit(TagsField field) public IEdmTypeReference Visit(IField<TagsFieldProperties> field)
{ {
return CreatePrimitive(EdmPrimitiveTypeKind.String, field); return CreatePrimitive(EdmPrimitiveTypeKind.String, field);
} }
private static IEdmTypeReference CreatePrimitive(EdmPrimitiveTypeKind kind, Field field) private static IEdmTypeReference CreatePrimitive(EdmPrimitiveTypeKind kind, IField field)
{ {
return EdmCoreModel.Instance.GetPrimitive(kind, !field.RawProperties.IsRequired); return EdmCoreModel.Instance.GetPrimitive(kind, !field.RawProperties.IsRequired);
} }

20
src/Squidex.Domain.Apps.Core.Operations/GenerateJsonSchema/JsonTypeVisitor.cs

@ -21,7 +21,7 @@ namespace Squidex.Domain.Apps.Core.GenerateJsonSchema
this.schemaResolver = schemaResolver; this.schemaResolver = schemaResolver;
} }
public JsonProperty Visit(AssetsField field) public JsonProperty Visit(IField<AssetsFieldProperties> field)
{ {
return CreateProperty(field, jsonProperty => return CreateProperty(field, jsonProperty =>
{ {
@ -32,7 +32,7 @@ namespace Squidex.Domain.Apps.Core.GenerateJsonSchema
}); });
} }
public JsonProperty Visit(BooleanField field) public JsonProperty Visit(IField<BooleanFieldProperties> field)
{ {
return CreateProperty(field, jsonProperty => return CreateProperty(field, jsonProperty =>
{ {
@ -40,7 +40,7 @@ namespace Squidex.Domain.Apps.Core.GenerateJsonSchema
}); });
} }
public JsonProperty Visit(DateTimeField field) public JsonProperty Visit(IField<DateTimeFieldProperties> field)
{ {
return CreateProperty(field, jsonProperty => return CreateProperty(field, jsonProperty =>
{ {
@ -49,7 +49,7 @@ namespace Squidex.Domain.Apps.Core.GenerateJsonSchema
}); });
} }
public JsonProperty Visit(GeolocationField field) public JsonProperty Visit(IField<GeolocationFieldProperties> field)
{ {
return CreateProperty(field, jsonProperty => return CreateProperty(field, jsonProperty =>
{ {
@ -81,7 +81,7 @@ namespace Squidex.Domain.Apps.Core.GenerateJsonSchema
}); });
} }
public JsonProperty Visit(JsonField field) public JsonProperty Visit(IField<JsonFieldProperties> field)
{ {
return CreateProperty(field, jsonProperty => return CreateProperty(field, jsonProperty =>
{ {
@ -89,7 +89,7 @@ namespace Squidex.Domain.Apps.Core.GenerateJsonSchema
}); });
} }
public JsonProperty Visit(NumberField field) public JsonProperty Visit(IField<NumberFieldProperties> field)
{ {
return CreateProperty(field, jsonProperty => return CreateProperty(field, jsonProperty =>
{ {
@ -107,7 +107,7 @@ namespace Squidex.Domain.Apps.Core.GenerateJsonSchema
}); });
} }
public JsonProperty Visit(ReferencesField field) public JsonProperty Visit(IField<ReferencesFieldProperties> field)
{ {
return CreateProperty(field, jsonProperty => return CreateProperty(field, jsonProperty =>
{ {
@ -118,7 +118,7 @@ namespace Squidex.Domain.Apps.Core.GenerateJsonSchema
}); });
} }
public JsonProperty Visit(StringField field) public JsonProperty Visit(IField<StringFieldProperties> field)
{ {
return CreateProperty(field, jsonProperty => return CreateProperty(field, jsonProperty =>
{ {
@ -139,7 +139,7 @@ namespace Squidex.Domain.Apps.Core.GenerateJsonSchema
}); });
} }
public JsonProperty Visit(TagsField field) public JsonProperty Visit(IField<TagsFieldProperties> field)
{ {
return CreateProperty(field, jsonProperty => return CreateProperty(field, jsonProperty =>
{ {
@ -150,7 +150,7 @@ namespace Squidex.Domain.Apps.Core.GenerateJsonSchema
}); });
} }
private static JsonProperty CreateProperty(Field field, Action<JsonProperty> updater) private static JsonProperty CreateProperty(IField field, Action<JsonProperty> updater)
{ {
var property = new JsonProperty { IsRequired = field.RawProperties.IsRequired }; var property = new JsonProperty { IsRequired = field.RawProperties.IsRequired };

20
src/Squidex.Domain.Apps.Core.Operations/ValidateContent/JsonValueConverter.cs

@ -23,22 +23,22 @@ namespace Squidex.Domain.Apps.Core.ValidateContent
Value = value; Value = value;
} }
public static object ConvertValue(Field field, JToken json) public static object ConvertValue(IField field, JToken json)
{ {
return field.Accept(new JsonValueConverter(json)); return field.Accept(new JsonValueConverter(json));
} }
public object Visit(AssetsField field) public object Visit(IField<AssetsFieldProperties> field)
{ {
return Value.ToObject<List<Guid>>(); return Value.ToObject<List<Guid>>();
} }
public object Visit(BooleanField field) public object Visit(IField<BooleanFieldProperties> field)
{ {
return (bool?)Value; return (bool?)Value;
} }
public object Visit(DateTimeField field) public object Visit(IField<DateTimeFieldProperties> field)
{ {
if (Value.Type == JTokenType.String) if (Value.Type == JTokenType.String)
{ {
@ -55,7 +55,7 @@ namespace Squidex.Domain.Apps.Core.ValidateContent
throw new InvalidCastException("Invalid json type, expected string."); throw new InvalidCastException("Invalid json type, expected string.");
} }
public object Visit(GeolocationField field) public object Visit(IField<GeolocationFieldProperties> field)
{ {
var geolocation = (JObject)Value; var geolocation = (JObject)Value;
@ -84,27 +84,27 @@ namespace Squidex.Domain.Apps.Core.ValidateContent
return Value; return Value;
} }
public object Visit(JsonField field) public object Visit(IField<JsonFieldProperties> field)
{ {
return Value; return Value;
} }
public object Visit(NumberField field) public object Visit(IField<NumberFieldProperties> field)
{ {
return (double?)Value; return (double?)Value;
} }
public object Visit(ReferencesField field) public object Visit(IField<ReferencesFieldProperties> field)
{ {
return Value.ToObject<List<Guid>>(); return Value.ToObject<List<Guid>>();
} }
public object Visit(StringField field) public object Visit(IField<StringFieldProperties> field)
{ {
return Value.ToString(); return Value.ToString();
} }
public object Visit(TagsField field) public object Visit(IField<TagsFieldProperties> field)
{ {
return Value.ToObject<List<string>>(); return Value.ToObject<List<string>>();
} }

50
src/Squidex.Domain.Apps.Entities/Contents/GraphQL/GraphQLModel.cs

@ -26,7 +26,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
{ {
public sealed class GraphQLModel : IGraphModel public sealed class GraphQLModel : IGraphModel
{ {
private readonly Dictionary<Type, Func<Field, (IGraphType ResolveType, IFieldResolver Resolver)>> fieldInfos; private readonly Dictionary<Type, Func<IField, (IGraphType ResolveType, IFieldResolver Resolver)>> fieldInfos;
private readonly Dictionary<Type, IGraphType> inputFieldInfos; private readonly Dictionary<Type, IGraphType> inputFieldInfos;
private readonly Dictionary<ISchemaEntity, ContentGraphType> contentTypes = new Dictionary<ISchemaEntity, ContentGraphType>(); private readonly Dictionary<ISchemaEntity, ContentGraphType> contentTypes = new Dictionary<ISchemaEntity, ContentGraphType>();
private readonly Dictionary<ISchemaEntity, ContentDataGraphType> contentDataTypes = new Dictionary<ISchemaEntity, ContentDataGraphType>(); private readonly Dictionary<ISchemaEntity, ContentDataGraphType> contentDataTypes = new Dictionary<ISchemaEntity, ContentDataGraphType>();
@ -53,75 +53,75 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
inputFieldInfos = new Dictionary<Type, IGraphType> inputFieldInfos = new Dictionary<Type, IGraphType>
{ {
{ {
typeof(StringField), typeof(StringFieldProperties),
AllTypes.String AllTypes.String
}, },
{ {
typeof(BooleanField), typeof(BooleanFieldProperties),
AllTypes.Boolean AllTypes.Boolean
}, },
{ {
typeof(NumberField), typeof(NumberFieldProperties),
AllTypes.Boolean AllTypes.Boolean
}, },
{ {
typeof(DateTimeField), typeof(DateTimeFieldProperties),
AllTypes.Date AllTypes.Date
}, },
{ {
typeof(GeolocationField), typeof(GeolocationFieldProperties),
AllTypes.GeolocationInput AllTypes.GeolocationInput
}, },
{ {
typeof(TagsField), typeof(TagsFieldProperties),
AllTypes.ListOfNonNullString AllTypes.ListOfNonNullString
}, },
{ {
typeof(AssetsField), typeof(AssetsFieldProperties),
AllTypes.ListOfNonNullGuid AllTypes.ListOfNonNullGuid
}, },
{ {
typeof(ReferencesField), typeof(ReferencesFieldProperties),
AllTypes.ListOfNonNullGuid AllTypes.ListOfNonNullGuid
} }
}; };
fieldInfos = new Dictionary<Type, Func<Field, (IGraphType ResolveType, IFieldResolver Resolver)>> fieldInfos = new Dictionary<Type, Func<IField, (IGraphType ResolveType, IFieldResolver Resolver)>>
{ {
{ {
typeof(StringField), typeof(StringFieldProperties),
field => ResolveDefault(AllTypes.NoopString) field => ResolveDefault(AllTypes.NoopString)
}, },
{ {
typeof(BooleanField), typeof(BooleanFieldProperties),
field => ResolveDefault(AllTypes.NoopBoolean) field => ResolveDefault(AllTypes.NoopBoolean)
}, },
{ {
typeof(NumberField), typeof(NumberFieldProperties),
field => ResolveDefault(AllTypes.NoopFloat) field => ResolveDefault(AllTypes.NoopFloat)
}, },
{ {
typeof(DateTimeField), typeof(DateTimeFieldProperties),
field => ResolveDefault(AllTypes.NoopDate) field => ResolveDefault(AllTypes.NoopDate)
}, },
{ {
typeof(JsonField), typeof(JsonFieldProperties),
field => ResolveDefault(AllTypes.NoopJson) field => ResolveDefault(AllTypes.NoopJson)
}, },
{ {
typeof(GeolocationField), typeof(GeolocationFieldProperties),
field => ResolveDefault(AllTypes.NoopGeolocation) field => ResolveDefault(AllTypes.NoopGeolocation)
}, },
{ {
typeof(TagsField), typeof(TagsFieldProperties),
field => ResolveDefault(AllTypes.NoopTags) field => ResolveDefault(AllTypes.NoopTags)
}, },
{ {
typeof(AssetsField), typeof(AssetsFieldProperties),
field => ResolveAssets(assetListType) field => ResolveAssets(assetListType)
}, },
{ {
typeof(ReferencesField), typeof(ReferencesFieldProperties),
field => ResolveReferences(field) field => ResolveReferences(field)
} }
}; };
@ -210,9 +210,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
return (assetListType, resolver); return (assetListType, resolver);
} }
private ValueTuple<IGraphType, IFieldResolver> ResolveReferences(Field field) private ValueTuple<IGraphType, IFieldResolver> ResolveReferences(IField field)
{ {
var schemaId = ((ReferencesField)field).Properties.SchemaId; var schemaId = ((ReferencesFieldProperties)field.RawProperties).SchemaId;
var contentType = GetContentType(schemaId); var contentType = GetContentType(schemaId);
@ -260,9 +260,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
return assetType; return assetType;
} }
public (IGraphType ResolveType, IFieldResolver Resolver) GetGraphType(Field field) public (IGraphType ResolveType, IFieldResolver Resolver) GetGraphType(IField field)
{ {
return fieldInfos[field.GetType()](field); return fieldInfos[field.RawProperties.GetType()](field);
} }
public IComplexGraphType GetContentDataType(Guid schemaId) public IComplexGraphType GetContentDataType(Guid schemaId)
@ -289,9 +289,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
return contentTypes.GetOrAdd(schema, s => new ContentGraphType()); return contentTypes.GetOrAdd(schema, s => new ContentGraphType());
} }
public IGraphType GetInputGraphType(Field field) public IGraphType GetInputGraphType(IField field)
{ {
return inputFieldInfos.GetOrAddDefault(field.GetType()); return inputFieldInfos.GetOrAddDefault(field.RawProperties.GetType());
} }
} }
} }

4
src/Squidex.Domain.Apps.Entities/Contents/GraphQL/IGraphModel.cs

@ -34,8 +34,8 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
IFieldResolver ResolveContentUrl(ISchemaEntity schema); IFieldResolver ResolveContentUrl(ISchemaEntity schema);
IGraphType GetInputGraphType(Field field); IGraphType GetInputGraphType(IField field);
(IGraphType ResolveType, IFieldResolver Resolver) GetGraphType(Field field); (IGraphType ResolveType, IFieldResolver Resolver) GetGraphType(IField field);
} }
} }

1
src/Squidex.Domain.Apps.Entities/Contents/QueryContext.cs

@ -10,7 +10,6 @@ using System.Collections.Generic;
using System.Security.Claims; using System.Security.Claims;
using Squidex.Domain.Apps.Entities.Apps; using Squidex.Domain.Apps.Entities.Apps;
using Squidex.Infrastructure; using Squidex.Infrastructure;
using Squidex.Infrastructure.Reflection;
using Squidex.Infrastructure.Security; using Squidex.Infrastructure.Security;
namespace Squidex.Domain.Apps.Entities.Contents namespace Squidex.Domain.Apps.Entities.Contents

44
tests/Squidex.Domain.Apps.Core.Tests/Model/Schemas/FieldRegistryTests.cs

@ -23,6 +23,11 @@ namespace Squidex.Domain.Apps.Core.Model.Schemas
return default(T); return default(T);
} }
public override T Accept<T>(IFieldVisitor<T> visitor, IField field)
{
return default(T);
}
public override Field CreateField(long id, string name, Partitioning partitioning) public override Field CreateField(long id, string name, Partitioning partitioning)
{ {
return null; return null;
@ -36,41 +41,22 @@ namespace Squidex.Domain.Apps.Core.Model.Schemas
} }
[Theory] [Theory]
[InlineData( [InlineData(typeof(AssetsFieldProperties))]
typeof(AssetsFieldProperties), [InlineData(typeof(BooleanFieldProperties))]
typeof(AssetsField))] [InlineData(typeof(DateTimeFieldProperties))]
[InlineData( [InlineData(typeof(GeolocationFieldProperties))]
typeof(BooleanFieldProperties), [InlineData(typeof(JsonFieldProperties))]
typeof(BooleanField))] [InlineData(typeof(NumberFieldProperties))]
[InlineData( [InlineData(typeof(ReferencesFieldProperties))]
typeof(DateTimeFieldProperties), [InlineData(typeof(StringFieldProperties))]
typeof(DateTimeField))] [InlineData(typeof(TagsFieldProperties))]
[InlineData( public void Should_create_field_by_properties(Type propertyType)
typeof(GeolocationFieldProperties),
typeof(GeolocationField))]
[InlineData(
typeof(JsonFieldProperties),
typeof(JsonField))]
[InlineData(
typeof(NumberFieldProperties),
typeof(NumberField))]
[InlineData(
typeof(ReferencesFieldProperties),
typeof(ReferencesField))]
[InlineData(
typeof(StringFieldProperties),
typeof(StringField))]
[InlineData(
typeof(TagsFieldProperties),
typeof(TagsField))]
public void Should_create_field_by_properties(Type propertyType, Type fieldType)
{ {
var properties = (FieldProperties)Activator.CreateInstance(propertyType); var properties = (FieldProperties)Activator.CreateInstance(propertyType);
var field = sut.CreateField(1, "name", Partitioning.Invariant, properties); var field = sut.CreateField(1, "name", Partitioning.Invariant, properties);
Assert.Equal(properties, field.RawProperties); Assert.Equal(properties, field.RawProperties);
Assert.Equal(fieldType, field.GetType());
} }
} }
} }

4
tests/Squidex.Domain.Apps.Core.Tests/Model/Schemas/SchemaFieldTests.cs

@ -24,7 +24,7 @@ namespace Squidex.Domain.Apps.Core.Model.Schemas
.Select(x => new object[] { x }) .Select(x => new object[] { x })
.ToList(); .ToList();
private readonly NumberField field_0 = new NumberField(1, "my-field", Partitioning.Invariant); private readonly Field<NumberFieldProperties> field_0 = Fields.Number(1, "my-field", Partitioning.Invariant);
[Fact] [Fact]
public void Should_instantiate_field() public void Should_instantiate_field()
@ -36,7 +36,7 @@ namespace Squidex.Domain.Apps.Core.Model.Schemas
[Fact] [Fact]
public void Should_throw_exception_if_creating_field_with_invalid_name() public void Should_throw_exception_if_creating_field_with_invalid_name()
{ {
Assert.Throws<ArgumentException>(() => new NumberField(1, string.Empty, Partitioning.Invariant)); Assert.Throws<ArgumentException>(() => Fields.Number(1, string.Empty, Partitioning.Invariant));
} }
[Fact] [Fact]

8
tests/Squidex.Domain.Apps.Core.Tests/Model/Schemas/SchemaTests.cs

@ -62,7 +62,7 @@ namespace Squidex.Domain.Apps.Core.Model.Schemas
{ {
var schema_1 = schema_0.AddField(CreateField(1)); var schema_1 = schema_0.AddField(CreateField(1));
Assert.Throws<ArgumentException>(() => schema_1.AddField(new NumberField(2, "my-field-1", Partitioning.Invariant))); Assert.Throws<ArgumentException>(() => schema_1.AddNumber(2, "my-field-1", Partitioning.Invariant));
} }
[Fact] [Fact]
@ -70,7 +70,7 @@ namespace Squidex.Domain.Apps.Core.Model.Schemas
{ {
var schema_1 = schema_0.AddField(CreateField(1)); var schema_1 = schema_0.AddField(CreateField(1));
Assert.Throws<ArgumentException>(() => schema_1.AddField(new NumberField(1, "my-field-2", Partitioning.Invariant))); Assert.Throws<ArgumentException>(() => schema_1.AddNumber(1, "my-field-2", Partitioning.Invariant));
} }
[Fact] [Fact]
@ -287,9 +287,9 @@ namespace Squidex.Domain.Apps.Core.Model.Schemas
schemaTarget.ShouldBeEquivalentTo(schemaSource); schemaTarget.ShouldBeEquivalentTo(schemaSource);
} }
private static NumberField CreateField(int id) private static Field<NumberFieldProperties> CreateField(int id)
{ {
return new NumberField(id, $"my-field-{id}", Partitioning.Invariant); return Fields.Number(id, $"my-field-{id}", Partitioning.Invariant);
} }
} }
} }

12
tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/ContentConversionFlatTests.cs

@ -27,12 +27,12 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent
{ {
schema = schema =
new Schema("my-schema") new Schema("my-schema")
.AddField(new NumberField(1, "field1", Partitioning.Language)) .AddNumber(1, "field1", Partitioning.Language)
.AddField(new NumberField(2, "field2", Partitioning.Invariant)) .AddNumber(2, "field2", Partitioning.Invariant)
.AddField(new NumberField(3, "field3", Partitioning.Invariant)) .AddNumber(3, "field3", Partitioning.Invariant)
.AddField(new AssetsField(5, "assets1", Partitioning.Invariant)) .AddAssets(5, "assets1", Partitioning.Invariant)
.AddField(new AssetsField(6, "assets2", Partitioning.Invariant)) .AddAssets(6, "assets2", Partitioning.Invariant)
.AddField(new JsonField(4, "json", Partitioning.Language)) .AddJson(4, "json", Partitioning.Language)
.HideField(3); .HideField(3);
} }

12
tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/ContentConversionTests.cs

@ -20,12 +20,12 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent
{ {
schema = schema =
new Schema("my-schema") new Schema("my-schema")
.AddField(new NumberField(1, "field1", Partitioning.Language)) .AddNumber(1, "field1", Partitioning.Language)
.AddField(new NumberField(2, "field2", Partitioning.Invariant)) .AddNumber(2, "field2", Partitioning.Invariant)
.AddField(new NumberField(3, "field3", Partitioning.Invariant)) .AddNumber(3, "field3", Partitioning.Invariant)
.AddField(new AssetsField(5, "assets1", Partitioning.Invariant)) .AddAssets(5, "assets1", Partitioning.Invariant)
.AddField(new AssetsField(6, "assets2", Partitioning.Invariant)) .AddAssets(6, "assets2", Partitioning.Invariant)
.AddField(new JsonField(4, "json", Partitioning.Language)) .AddJson(4, "json", Partitioning.Language)
.HideField(3); .HideField(3);
} }

10
tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/FieldConvertersTests.cs

@ -19,9 +19,9 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent
public class FieldConvertersTests public class FieldConvertersTests
{ {
private readonly LanguagesConfig languagesConfig = LanguagesConfig.Build(Language.EN, Language.DE); private readonly LanguagesConfig languagesConfig = LanguagesConfig.Build(Language.EN, Language.DE);
private readonly StringField stringLanguageField = new StringField(1, "1", Partitioning.Language); private readonly Field<StringFieldProperties> stringLanguageField = Fields.String(1, "1", Partitioning.Language);
private readonly StringField stringInvariantField = new StringField(1, "1", Partitioning.Invariant); private readonly Field<StringFieldProperties> stringInvariantField = Fields.String(1, "1", Partitioning.Invariant);
private readonly NumberField numberField = new NumberField(1, "1", Partitioning.Invariant); private readonly Field<NumberFieldProperties> numberField = Fields.Number(1, "1", Partitioning.Invariant);
[Fact] [Fact]
public void Should_encode_json_values() public void Should_encode_json_values()
@ -31,7 +31,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent
.AddValue("en", null) .AddValue("en", null)
.AddValue("de", JToken.FromObject(new { Value = 1 })); .AddValue("de", JToken.FromObject(new { Value = 1 }));
var result = FieldConverters.EncodeJson()(source, new JsonField(1, "1", Partitioning.Invariant)); var result = FieldConverters.EncodeJson()(source, Fields.Json(1, "1", Partitioning.Invariant));
Assert.Null(result["en"]); Assert.Null(result["en"]);
Assert.True(result["de"].Type == JTokenType.String); Assert.True(result["de"].Type == JTokenType.String);
@ -57,7 +57,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent
.AddValue("en", null) .AddValue("en", null)
.AddValue("de", "e30="); .AddValue("de", "e30=");
var result = FieldConverters.DecodeJson()(source, new JsonField(1, "1", Partitioning.Invariant)); var result = FieldConverters.DecodeJson()(source, Fields.Json(1, "1", Partitioning.Invariant));
Assert.Null(result["en"]); Assert.Null(result["en"]);
Assert.True(result["de"] is JObject); Assert.True(result["de"] is JObject);

38
tests/Squidex.Domain.Apps.Core.Tests/Operations/EnrichContent/ContentEnrichmentTests.cs

@ -29,14 +29,14 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
{ {
schema = schema =
new Schema("my-schema") new Schema("my-schema")
.AddField(new StringField(1, "my-string", Partitioning.Language, .AddString(1, "my-string", Partitioning.Language,
new StringFieldProperties { DefaultValue = "en-string" })) new StringFieldProperties { DefaultValue = "en-string" })
.AddField(new NumberField(2, "my-number", Partitioning.Invariant, .AddNumber(2, "my-number", Partitioning.Invariant,
new NumberFieldProperties())) new NumberFieldProperties())
.AddField(new DateTimeField(3, "my-datetime", Partitioning.Invariant, .AddDateTime(3, "my-datetime", Partitioning.Invariant,
new DateTimeFieldProperties { DefaultValue = Now })) new DateTimeFieldProperties { DefaultValue = Now })
.AddField(new BooleanField(4, "my-boolean", Partitioning.Invariant, .AddBoolean(4, "my-boolean", Partitioning.Invariant,
new BooleanFieldProperties { DefaultValue = true })); new BooleanFieldProperties { DefaultValue = true });
} }
[Fact] [Fact]
@ -85,7 +85,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
public void Should_get_default_value_from_assets_field() public void Should_get_default_value_from_assets_field()
{ {
var field = var field =
new AssetsField(1, "1", Partitioning.Invariant, Fields.Assets(1, "1", Partitioning.Invariant,
new AssetsFieldProperties()); new AssetsFieldProperties());
Assert.Equal(new JArray(), DefaultValueFactory.CreateDefaultValue(field, Now)); Assert.Equal(new JArray(), DefaultValueFactory.CreateDefaultValue(field, Now));
@ -95,7 +95,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
public void Should_get_default_value_from_boolean_field() public void Should_get_default_value_from_boolean_field()
{ {
var field = var field =
new BooleanField(1, "1", Partitioning.Invariant, Fields.Boolean(1, "1", Partitioning.Invariant,
new BooleanFieldProperties { DefaultValue = true }); new BooleanFieldProperties { DefaultValue = true });
Assert.Equal(true, DefaultValueFactory.CreateDefaultValue(field, Now)); Assert.Equal(true, DefaultValueFactory.CreateDefaultValue(field, Now));
@ -105,7 +105,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
public void Should_get_default_value_from_datetime_field() public void Should_get_default_value_from_datetime_field()
{ {
var field = var field =
new DateTimeField(1, "1", Partitioning.Invariant, Fields.DateTime(1, "1", Partitioning.Invariant,
new DateTimeFieldProperties { DefaultValue = FutureDays(15) }); new DateTimeFieldProperties { DefaultValue = FutureDays(15) });
Assert.Equal(FutureDays(15).ToString(), DefaultValueFactory.CreateDefaultValue(field, Now)); Assert.Equal(FutureDays(15).ToString(), DefaultValueFactory.CreateDefaultValue(field, Now));
@ -115,7 +115,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
public void Should_get_default_value_from_datetime_field_when_set_to_today() public void Should_get_default_value_from_datetime_field_when_set_to_today()
{ {
var field = var field =
new DateTimeField(1, "1", Partitioning.Invariant, Fields.DateTime(1, "1", Partitioning.Invariant,
new DateTimeFieldProperties { CalculatedDefaultValue = DateTimeCalculatedDefaultValue.Today }); new DateTimeFieldProperties { CalculatedDefaultValue = DateTimeCalculatedDefaultValue.Today });
Assert.Equal("2017-10-12", DefaultValueFactory.CreateDefaultValue(field, Now)); Assert.Equal("2017-10-12", DefaultValueFactory.CreateDefaultValue(field, Now));
@ -125,7 +125,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
public void Should_get_default_value_from_datetime_field_when_set_to_now() public void Should_get_default_value_from_datetime_field_when_set_to_now()
{ {
var field = var field =
new DateTimeField(1, "1", Partitioning.Invariant, Fields.DateTime(1, "1", Partitioning.Invariant,
new DateTimeFieldProperties { CalculatedDefaultValue = DateTimeCalculatedDefaultValue.Now }); new DateTimeFieldProperties { CalculatedDefaultValue = DateTimeCalculatedDefaultValue.Now });
Assert.Equal("2017-10-12T16:30:10Z", DefaultValueFactory.CreateDefaultValue(field, Now)); Assert.Equal("2017-10-12T16:30:10Z", DefaultValueFactory.CreateDefaultValue(field, Now));
@ -135,7 +135,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
public void Should_get_default_value_from_json_field() public void Should_get_default_value_from_json_field()
{ {
var field = var field =
new JsonField(1, "1", Partitioning.Invariant, Fields.Json(1, "1", Partitioning.Invariant,
new JsonFieldProperties()); new JsonFieldProperties());
Assert.Equal(new JObject(), DefaultValueFactory.CreateDefaultValue(field, Now)); Assert.Equal(new JObject(), DefaultValueFactory.CreateDefaultValue(field, Now));
@ -145,7 +145,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
public void Should_get_default_value_from_geolocation_field() public void Should_get_default_value_from_geolocation_field()
{ {
var field = var field =
new GeolocationField(1, "1", Partitioning.Invariant, Fields.Geolocation(1, "1", Partitioning.Invariant,
new GeolocationFieldProperties()); new GeolocationFieldProperties());
Assert.Equal(JValue.CreateNull(), DefaultValueFactory.CreateDefaultValue(field, Now)); Assert.Equal(JValue.CreateNull(), DefaultValueFactory.CreateDefaultValue(field, Now));
@ -155,7 +155,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
public void Should_get_default_value_from_number_field() public void Should_get_default_value_from_number_field()
{ {
var field = var field =
new NumberField(1, "1", Partitioning.Invariant, Fields.Number(1, "1", Partitioning.Invariant,
new NumberFieldProperties { DefaultValue = 12 }); new NumberFieldProperties { DefaultValue = 12 });
Assert.Equal(12, DefaultValueFactory.CreateDefaultValue(field, Now)); Assert.Equal(12, DefaultValueFactory.CreateDefaultValue(field, Now));
@ -165,7 +165,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
public void Should_get_default_value_from_references_field() public void Should_get_default_value_from_references_field()
{ {
var field = var field =
new ReferencesField(1, "1", Partitioning.Invariant, Fields.References(1, "1", Partitioning.Invariant,
new ReferencesFieldProperties()); new ReferencesFieldProperties());
Assert.Equal(new JArray(), DefaultValueFactory.CreateDefaultValue(field, Now)); Assert.Equal(new JArray(), DefaultValueFactory.CreateDefaultValue(field, Now));
@ -175,7 +175,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
public void Should_get_default_value_from_string_field() public void Should_get_default_value_from_string_field()
{ {
var field = var field =
new StringField(1, "1", Partitioning.Invariant, Fields.String(1, "1", Partitioning.Invariant,
new StringFieldProperties { DefaultValue = "default" }); new StringFieldProperties { DefaultValue = "default" });
Assert.Equal("default", DefaultValueFactory.CreateDefaultValue(field, Now)); Assert.Equal("default", DefaultValueFactory.CreateDefaultValue(field, Now));
@ -185,7 +185,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
public void Should_get_default_value_from_tags_field() public void Should_get_default_value_from_tags_field()
{ {
var field = var field =
new TagsField(1, "1", Partitioning.Invariant, Fields.Tags(1, "1", Partitioning.Invariant,
new TagsFieldProperties()); new TagsFieldProperties());
Assert.Equal(new JArray(), DefaultValueFactory.CreateDefaultValue(field, Now)); Assert.Equal(new JArray(), DefaultValueFactory.CreateDefaultValue(field, Now));

40
tests/Squidex.Domain.Apps.Core.Tests/Operations/ExtractReferenceIds/ReferenceExtractionTests.cs

@ -31,12 +31,12 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
{ {
schema = schema =
new Schema("my-schema") new Schema("my-schema")
.AddField(new NumberField(1, "field1", Partitioning.Language)) .AddNumber(1, "field1", Partitioning.Language)
.AddField(new NumberField(2, "field2", Partitioning.Invariant)) .AddNumber(2, "field2", Partitioning.Invariant)
.AddField(new NumberField(3, "field3", Partitioning.Invariant)) .AddNumber(3, "field3", Partitioning.Invariant)
.AddField(new AssetsField(5, "assets1", Partitioning.Invariant)) .AddAssets(5, "assets1", Partitioning.Invariant)
.AddField(new AssetsField(6, "assets2", Partitioning.Invariant)) .AddAssets(6, "assets2", Partitioning.Invariant)
.AddField(new JsonField(4, "json", Partitioning.Language)) .AddJson(4, "json", Partitioning.Language)
.HideField(3); .HideField(3);
} }
@ -83,7 +83,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
var id1 = Guid.NewGuid(); var id1 = Guid.NewGuid();
var id2 = Guid.NewGuid(); var id2 = Guid.NewGuid();
var sut = new AssetsField(1, "my-asset", Partitioning.Invariant); var sut = Fields.Assets(1, "my-asset", Partitioning.Invariant);
var result = sut.ExtractReferences(CreateValue(id1, id2)).ToArray(); var result = sut.ExtractReferences(CreateValue(id1, id2)).ToArray();
@ -93,7 +93,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
[Fact] [Fact]
public void Should_empty_list_from_assets_field_for_referenced_ids_when_null() public void Should_empty_list_from_assets_field_for_referenced_ids_when_null()
{ {
var sut = new AssetsField(1, "my-asset", Partitioning.Invariant); var sut = Fields.Assets(1, "my-asset", Partitioning.Invariant);
var result = sut.ExtractReferences(null).ToArray(); var result = sut.ExtractReferences(null).ToArray();
@ -103,7 +103,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
[Fact] [Fact]
public void Should_empty_list_from_assets_field_for_referenced_ids_when_other_type() public void Should_empty_list_from_assets_field_for_referenced_ids_when_other_type()
{ {
var sut = new AssetsField(1, "my-asset", Partitioning.Invariant); var sut = Fields.Assets(1, "my-asset", Partitioning.Invariant);
var result = sut.ExtractReferences("invalid").ToArray(); var result = sut.ExtractReferences("invalid").ToArray();
@ -113,7 +113,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
[Fact] [Fact]
public void Should_empty_list_from_non_references_field() public void Should_empty_list_from_non_references_field()
{ {
var sut = new StringField(1, "my-string", Partitioning.Invariant); var sut = Fields.String(1, "my-string", Partitioning.Invariant);
var result = sut.ExtractReferences("invalid").ToArray(); var result = sut.ExtractReferences("invalid").ToArray();
@ -123,7 +123,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
[Fact] [Fact]
public void Should_return_null_from_assets_field_when_removing_references_from_null_array() public void Should_return_null_from_assets_field_when_removing_references_from_null_array()
{ {
var sut = new AssetsField(1, "my-asset", Partitioning.Invariant); var sut = Fields.Assets(1, "my-asset", Partitioning.Invariant);
var result = sut.CleanReferences(null, null); var result = sut.CleanReferences(null, null);
@ -136,7 +136,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
var id1 = Guid.NewGuid(); var id1 = Guid.NewGuid();
var id2 = Guid.NewGuid(); var id2 = Guid.NewGuid();
var sut = new AssetsField(1, "my-asset", Partitioning.Invariant); var sut = Fields.Assets(1, "my-asset", Partitioning.Invariant);
var result = sut.CleanReferences(CreateValue(id1, id2), new HashSet<Guid>(new[] { id2 })); var result = sut.CleanReferences(CreateValue(id1, id2), new HashSet<Guid>(new[] { id2 }));
@ -149,7 +149,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
var id1 = Guid.NewGuid(); var id1 = Guid.NewGuid();
var id2 = Guid.NewGuid(); var id2 = Guid.NewGuid();
var sut = new AssetsField(1, "my-asset", Partitioning.Invariant); var sut = Fields.Assets(1, "my-asset", Partitioning.Invariant);
var token = CreateValue(id1, id2); var token = CreateValue(id1, id2);
var result = sut.CleanReferences(token, new HashSet<Guid>(new[] { Guid.NewGuid() })); var result = sut.CleanReferences(token, new HashSet<Guid>(new[] { Guid.NewGuid() }));
@ -163,7 +163,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
var id1 = Guid.NewGuid(); var id1 = Guid.NewGuid();
var id2 = Guid.NewGuid(); var id2 = Guid.NewGuid();
var sut = new ReferencesField(1, "my-refs", Partitioning.Invariant, var sut = Fields.References(1, "my-refs", Partitioning.Invariant,
new ReferencesFieldProperties { SchemaId = schemaId }); new ReferencesFieldProperties { SchemaId = schemaId });
var result = sut.ExtractReferences(CreateValue(id1, id2)).ToArray(); var result = sut.ExtractReferences(CreateValue(id1, id2)).ToArray();
@ -174,7 +174,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
[Fact] [Fact]
public void Should_return_list_from_references_field_with_schema_id_list_for_referenced_ids_when_null() public void Should_return_list_from_references_field_with_schema_id_list_for_referenced_ids_when_null()
{ {
var sut = new ReferencesField(1, "my-refs", Partitioning.Invariant, var sut = Fields.References(1, "my-refs", Partitioning.Invariant,
new ReferencesFieldProperties { SchemaId = schemaId }); new ReferencesFieldProperties { SchemaId = schemaId });
var result = sut.ExtractReferences(null).ToArray(); var result = sut.ExtractReferences(null).ToArray();
@ -185,7 +185,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
[Fact] [Fact]
public void Should_return_list_from_references_field_with_schema_id_for_referenced_ids_when_other_type() public void Should_return_list_from_references_field_with_schema_id_for_referenced_ids_when_other_type()
{ {
var sut = new ReferencesField(1, "my-refs", Partitioning.Invariant, var sut = Fields.References(1, "my-refs", Partitioning.Invariant,
new ReferencesFieldProperties { SchemaId = schemaId }); new ReferencesFieldProperties { SchemaId = schemaId });
var result = sut.ExtractReferences("invalid").ToArray(); var result = sut.ExtractReferences("invalid").ToArray();
@ -196,7 +196,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
[Fact] [Fact]
public void Should_return_null_from_references_field_when_removing_references_from_null_array() public void Should_return_null_from_references_field_when_removing_references_from_null_array()
{ {
var sut = new ReferencesField(1, "my-refs", Partitioning.Invariant); var sut = Fields.References(1, "my-refs", Partitioning.Invariant);
var result = sut.CleanReferences(null, null); var result = sut.CleanReferences(null, null);
@ -209,7 +209,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
var id1 = Guid.NewGuid(); var id1 = Guid.NewGuid();
var id2 = Guid.NewGuid(); var id2 = Guid.NewGuid();
var sut = new ReferencesField(1, "my-refs", Partitioning.Invariant, var sut = Fields.References(1, "my-refs", Partitioning.Invariant,
new ReferencesFieldProperties { SchemaId = schemaId }); new ReferencesFieldProperties { SchemaId = schemaId });
var result = sut.CleanReferences(CreateValue(id1, id2), new HashSet<Guid>(new[] { id2 })); var result = sut.CleanReferences(CreateValue(id1, id2), new HashSet<Guid>(new[] { id2 }));
@ -223,7 +223,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
var id1 = Guid.NewGuid(); var id1 = Guid.NewGuid();
var id2 = Guid.NewGuid(); var id2 = Guid.NewGuid();
var sut = new ReferencesField(1, "my-refs", Partitioning.Invariant, var sut = Fields.References(1, "my-refs", Partitioning.Invariant,
new ReferencesFieldProperties { SchemaId = schemaId }); new ReferencesFieldProperties { SchemaId = schemaId });
var result = sut.CleanReferences(CreateValue(id1, id2), new HashSet<Guid>(new[] { schemaId })); var result = sut.CleanReferences(CreateValue(id1, id2), new HashSet<Guid>(new[] { schemaId }));
@ -237,7 +237,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ExtractReferenceIds
var id1 = Guid.NewGuid(); var id1 = Guid.NewGuid();
var id2 = Guid.NewGuid(); var id2 = Guid.NewGuid();
var sut = new ReferencesField(1, "my-refs", Partitioning.Invariant); var sut = Fields.References(1, "my-refs", Partitioning.Invariant);
var token = CreateValue(id1, id2); var token = CreateValue(id1, id2);
var result = sut.CleanReferences(token, new HashSet<Guid>(new[] { Guid.NewGuid() })); var result = sut.CleanReferences(token, new HashSet<Guid>(new[] { Guid.NewGuid() }));

4
tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/AssetsFieldTests.cs

@ -268,9 +268,9 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
return ids == null ? JValue.CreateNull() : (JToken)new JArray(ids.OfType<object>().ToArray()); return ids == null ? JValue.CreateNull() : (JToken)new JArray(ids.OfType<object>().ToArray());
} }
private static AssetsField Field(AssetsFieldProperties properties) private static Field<AssetsFieldProperties> Field(AssetsFieldProperties properties)
{ {
return new AssetsField(1, "my-assets", Partitioning.Invariant, properties); return Fields.Assets(1, "my-assets", Partitioning.Invariant, properties);
} }
} }
} }

4
tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/BooleanFieldTests.cs

@ -73,9 +73,9 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
return new JValue(v); return new JValue(v);
} }
private static BooleanField Field(BooleanFieldProperties properties) private static Field<BooleanFieldProperties> Field(BooleanFieldProperties properties)
{ {
return new BooleanField(1, "my-boolean", Partitioning.Invariant, properties); return Fields.Boolean(1, "my-boolean", Partitioning.Invariant, properties);
} }
} }
} }

40
tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/ContentValidationTests.cs

@ -44,8 +44,8 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
[Fact] [Fact]
public async Task Should_add_error_if_validating_data_with_invalid_field() public async Task Should_add_error_if_validating_data_with_invalid_field()
{ {
schema = schema.AddField(new NumberField(1, "my-field", Partitioning.Invariant, schema = schema.AddNumber(1, "my-field", Partitioning.Invariant,
new NumberFieldProperties { MaxValue = 100 })); new NumberFieldProperties { MaxValue = 100 });
var data = var data =
new NamedContentData() new NamedContentData()
@ -65,7 +65,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
[Fact] [Fact]
public async Task Should_add_error_if_non_localizable_data_field_contains_language() public async Task Should_add_error_if_non_localizable_data_field_contains_language()
{ {
schema = schema.AddField(new NumberField(1, "my-field", Partitioning.Invariant)); schema = schema.AddNumber(1, "my-field", Partitioning.Invariant);
var data = var data =
new NamedContentData() new NamedContentData()
@ -87,8 +87,8 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
[Fact] [Fact]
public async Task Should_add_error_if_validating_data_with_invalid_localizable_field() public async Task Should_add_error_if_validating_data_with_invalid_localizable_field()
{ {
schema = schema.AddField(new NumberField(1, "my-field", Partitioning.Language, schema = schema.AddNumber(1, "my-field", Partitioning.Language,
new NumberFieldProperties { IsRequired = true })); new NumberFieldProperties { IsRequired = true });
var data = var data =
new NamedContentData(); new NamedContentData();
@ -106,8 +106,8 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
[Fact] [Fact]
public async Task Should_add_error_if_required_data_field_is_not_in_bag() public async Task Should_add_error_if_required_data_field_is_not_in_bag()
{ {
schema = schema.AddField(new NumberField(1, "my-field", Partitioning.Invariant, schema = schema.AddNumber(1, "my-field", Partitioning.Invariant,
new NumberFieldProperties { IsRequired = true })); new NumberFieldProperties { IsRequired = true });
var data = var data =
new NamedContentData(); new NamedContentData();
@ -124,7 +124,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
[Fact] [Fact]
public async Task Should_add_error_if_data_contains_invalid_language() public async Task Should_add_error_if_data_contains_invalid_language()
{ {
schema = schema.AddField(new NumberField(1, "my-field", Partitioning.Language)); schema = schema.AddNumber(1, "my-field", Partitioning.Language);
var data = var data =
new NamedContentData() new NamedContentData()
@ -150,8 +150,8 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
new LanguageConfig(Language.ES, false), new LanguageConfig(Language.ES, false),
new LanguageConfig(Language.IT, true)); new LanguageConfig(Language.IT, true));
schema = schema.AddField(new StringField(1, "my-field", Partitioning.Language, schema = schema.AddString(1, "my-field", Partitioning.Language,
new StringFieldProperties { IsRequired = true })); new StringFieldProperties { IsRequired = true });
var data = var data =
new NamedContentData() new NamedContentData()
@ -167,7 +167,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
[Fact] [Fact]
public async Task Should_add_error_if_data_contains_unsupported_language() public async Task Should_add_error_if_data_contains_unsupported_language()
{ {
schema = schema.AddField(new NumberField(1, "my-field", Partitioning.Language)); schema = schema.AddNumber(1, "my-field", Partitioning.Language);
var data = var data =
new NamedContentData() new NamedContentData()
@ -206,8 +206,8 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
[Fact] [Fact]
public async Task Should_add_error_if_validating_partial_data_with_invalid_field() public async Task Should_add_error_if_validating_partial_data_with_invalid_field()
{ {
schema = schema.AddField(new NumberField(1, "my-field", Partitioning.Invariant, schema = schema.AddNumber(1, "my-field", Partitioning.Invariant,
new NumberFieldProperties { MaxValue = 100 })); new NumberFieldProperties { MaxValue = 100 });
var data = var data =
new NamedContentData() new NamedContentData()
@ -227,7 +227,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
[Fact] [Fact]
public async Task Should_add_error_if_non_localizable_partial_data_field_contains_language() public async Task Should_add_error_if_non_localizable_partial_data_field_contains_language()
{ {
schema = schema.AddField(new NumberField(1, "my-field", Partitioning.Invariant)); schema = schema.AddNumber(1, "my-field", Partitioning.Invariant);
var data = var data =
new NamedContentData() new NamedContentData()
@ -249,8 +249,8 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
[Fact] [Fact]
public async Task Should_not_add_error_if_validating_partial_data_with_invalid_localizable_field() public async Task Should_not_add_error_if_validating_partial_data_with_invalid_localizable_field()
{ {
schema = schema.AddField(new NumberField(1, "my-field", Partitioning.Language, schema = schema.AddNumber(1, "my-field", Partitioning.Language,
new NumberFieldProperties { IsRequired = true })); new NumberFieldProperties { IsRequired = true });
var data = var data =
new NamedContentData(); new NamedContentData();
@ -263,8 +263,8 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
[Fact] [Fact]
public async Task Should_not_add_error_if_required_partial_data_field_is_not_in_bag() public async Task Should_not_add_error_if_required_partial_data_field_is_not_in_bag()
{ {
schema = schema.AddField(new NumberField(1, "my-field", Partitioning.Invariant, schema = schema.AddNumber(1, "my-field", Partitioning.Invariant,
new NumberFieldProperties { IsRequired = true })); new NumberFieldProperties { IsRequired = true });
var data = var data =
new NamedContentData(); new NamedContentData();
@ -277,7 +277,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
[Fact] [Fact]
public async Task Should_add_error_if_partial_data_contains_invalid_language() public async Task Should_add_error_if_partial_data_contains_invalid_language()
{ {
schema = schema.AddField(new NumberField(1, "my-field", Partitioning.Language)); schema = schema.AddNumber(1, "my-field", Partitioning.Language);
var data = var data =
new NamedContentData() new NamedContentData()
@ -298,7 +298,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
[Fact] [Fact]
public async Task Should_add_error_if_partial_data_contains_unsupported_language() public async Task Should_add_error_if_partial_data_contains_unsupported_language()
{ {
schema = schema.AddField(new NumberField(1, "my-field", Partitioning.Language)); schema = schema.AddNumber(1, "my-field", Partitioning.Language);
var data = var data =
new NamedContentData() new NamedContentData()

4
tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/DateTimeFieldTests.cs

@ -103,9 +103,9 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
return v is Instant ? new JValue(v.ToString()) : new JValue(v); return v is Instant ? new JValue(v.ToString()) : new JValue(v);
} }
private static DateTimeField Field(DateTimeFieldProperties properties) private static Field<DateTimeFieldProperties> Field(DateTimeFieldProperties properties)
{ {
return new DateTimeField(1, "my-datetime", Partitioning.Invariant, properties); return Fields.DateTime(1, "my-datetime", Partitioning.Invariant, properties);
} }
} }
} }

4
tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/GeolocationFieldTests.cs

@ -112,9 +112,9 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
return v; return v;
} }
private static GeolocationField Field(GeolocationFieldProperties properties) private static Field<GeolocationFieldProperties> Field(GeolocationFieldProperties properties)
{ {
return new GeolocationField(1, "my-geolocation", Partitioning.Invariant, properties); return Fields.Geolocation(1, "my-geolocation", Partitioning.Invariant, properties);
} }
} }
} }

4
tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/JsonFieldTests.cs

@ -52,9 +52,9 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
return v; return v;
} }
private static JsonField Field(JsonFieldProperties properties) private static Field<JsonFieldProperties> Field(JsonFieldProperties properties)
{ {
return new JsonField(1, "my-json", Partitioning.Invariant, properties); return Fields.Json(1, "my-json", Partitioning.Invariant, properties);
} }
} }
} }

4
tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/NumberFieldTests.cs

@ -97,9 +97,9 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
return new JValue(v); return new JValue(v);
} }
private static NumberField Field(NumberFieldProperties properties) private static Field<NumberFieldProperties> Field(NumberFieldProperties properties)
{ {
return new NumberField(1, "my-number", Partitioning.Invariant, properties); return Fields.Number(1, "my-number", Partitioning.Invariant, properties);
} }
} }
} }

4
tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/ReferencesFieldTests.cs

@ -124,9 +124,9 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
return ids == null ? JValue.CreateNull() : (JToken)new JArray(ids.OfType<object>().ToArray()); return ids == null ? JValue.CreateNull() : (JToken)new JArray(ids.OfType<object>().ToArray());
} }
private static ReferencesField Field(ReferencesFieldProperties properties) private static Field<ReferencesFieldProperties> Field(ReferencesFieldProperties properties)
{ {
return new ReferencesField(1, "my-refs", Partitioning.Invariant, properties); return Fields.References(1, "my-refs", Partitioning.Invariant, properties);
} }
} }
} }

4
tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/StringFieldTests.cs

@ -108,9 +108,9 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
return new JValue(v); return new JValue(v);
} }
private static StringField Field(StringFieldProperties properties) private static Field<StringFieldProperties> Field(StringFieldProperties properties)
{ {
return new StringField(1, "my-string", Partitioning.Invariant, properties); return Fields.String(1, "my-string", Partitioning.Invariant, properties);
} }
} }
} }

4
tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/TagsFieldTests.cs

@ -110,9 +110,9 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent
return ids == null ? JValue.CreateNull() : (JToken)new JArray(ids.OfType<object>().ToArray()); return ids == null ? JValue.CreateNull() : (JToken)new JArray(ids.OfType<object>().ToArray());
} }
private static TagsField Field(TagsFieldProperties properties) private static Field<TagsFieldProperties> Field(TagsFieldProperties properties)
{ {
return new TagsField(1, "my-tags", Partitioning.Invariant, properties); return Fields.Tags(1, "my-tags", Partitioning.Invariant, properties);
} }
} }
} }

44
tests/Squidex.Domain.Apps.Core.Tests/TestData.cs

@ -61,38 +61,38 @@ namespace Squidex.Domain.Apps.Core
schema = schema.Publish(); schema = schema.Publish();
schema = schema.Update(new SchemaProperties { Hints = "The User" }); schema = schema.Update(new SchemaProperties { Hints = "The User" });
schema = schema.AddField(new JsonField(1, "my-json", inv, schema = schema.AddJson(1, "my-json", inv,
new JsonFieldProperties())); new JsonFieldProperties());
schema = schema.AddField(new AssetsField(2, "my-assets", inv, schema = schema.AddAssets(2, "my-assets", inv,
new AssetsFieldProperties())); new AssetsFieldProperties());
schema = schema.AddField(new StringField(3, "my-string1", inv, schema = schema.AddString(3, "my-string1", inv,
new StringFieldProperties { Label = "My String1", IsRequired = true, AllowedValues = ImmutableList.Create("a", "b") })); new StringFieldProperties { Label = "My String1", IsRequired = true, AllowedValues = ImmutableList.Create("a", "b") });
schema = schema.AddField(new StringField(4, "my-string2", inv, schema = schema.AddString(4, "my-string2", inv,
new StringFieldProperties { Hints = "My String1" })); new StringFieldProperties { Hints = "My String1" });
schema = schema.AddField(new NumberField(5, "my-number", inv, schema = schema.AddNumber(5, "my-number", inv,
new NumberFieldProperties { MinValue = 1, MaxValue = 10 })); new NumberFieldProperties { MinValue = 1, MaxValue = 10 });
schema = schema.AddField(new BooleanField(6, "my-boolean", inv, schema = schema.AddBoolean(6, "my-boolean", inv,
new BooleanFieldProperties())); new BooleanFieldProperties());
schema = schema.AddField(new DateTimeField(7, "my-datetime", inv, schema = schema.AddDateTime(7, "my-datetime", inv,
new DateTimeFieldProperties { Editor = DateTimeFieldEditor.DateTime })); new DateTimeFieldProperties { Editor = DateTimeFieldEditor.DateTime });
schema = schema.AddField(new DateTimeField(8, "my-date", inv, schema = schema.AddDateTime(8, "my-date", inv,
new DateTimeFieldProperties { Editor = DateTimeFieldEditor.Date })); new DateTimeFieldProperties { Editor = DateTimeFieldEditor.Date });
schema = schema.AddField(new GeolocationField(9, "my-geolocation", inv, schema = schema.AddGeolocation(9, "my-geolocation", inv,
new GeolocationFieldProperties())); new GeolocationFieldProperties());
schema = schema.AddField(new ReferencesField(10, "my-references", inv, schema = schema.AddReferences(10, "my-references", inv,
new ReferencesFieldProperties())); new ReferencesFieldProperties());
schema = schema.AddField(new TagsField(11, "my-tags", Partitioning.Language, schema = schema.AddTags(11, "my-tags", Partitioning.Language,
new TagsFieldProperties())); new TagsFieldProperties());
schema = schema.HideField(7); schema = schema.HideField(7);
schema = schema.LockField(8); schema = schema.LockField(8);

8
tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentGrainTests.cs

@ -78,10 +78,10 @@ namespace Squidex.Domain.Apps.Entities.Contents
{ {
var schemaDef = var schemaDef =
new Schema("my-schema") new Schema("my-schema")
.AddField(new NumberField(1, "my-field1", Partitioning.Invariant, .AddNumber(1, "my-field1", Partitioning.Invariant,
new NumberFieldProperties { IsRequired = true })) new NumberFieldProperties { IsRequired = true })
.AddField(new NumberField(2, "my-field2", Partitioning.Invariant, .AddNumber(2, "my-field2", Partitioning.Invariant,
new NumberFieldProperties { IsRequired = false })); new NumberFieldProperties { IsRequired = false });
A.CallTo(() => app.LanguagesConfig).Returns(languagesConfig); A.CallTo(() => app.LanguagesConfig).Returns(languagesConfig);

40
tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs

@ -53,26 +53,26 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
{ {
schemaDef = schemaDef =
new Schema("my-schema") new Schema("my-schema")
.AddField(new JsonField(1, "my-json", Partitioning.Invariant, .AddJson(1, "my-json", Partitioning.Invariant,
new JsonFieldProperties())) new JsonFieldProperties())
.AddField(new StringField(2, "my-string", Partitioning.Language, .AddString(2, "my-string", Partitioning.Language,
new StringFieldProperties())) new StringFieldProperties())
.AddField(new NumberField(3, "my-number", Partitioning.Invariant, .AddNumber(3, "my-number", Partitioning.Invariant,
new NumberFieldProperties())) new NumberFieldProperties())
.AddField(new AssetsField(4, "my-assets", Partitioning.Invariant, .AddAssets(4, "my-assets", Partitioning.Invariant,
new AssetsFieldProperties())) new AssetsFieldProperties())
.AddField(new BooleanField(5, "my-boolean", Partitioning.Invariant, .AddBoolean(5, "my-boolean", Partitioning.Invariant,
new BooleanFieldProperties())) new BooleanFieldProperties())
.AddField(new DateTimeField(6, "my-datetime", Partitioning.Invariant, .AddDateTime(6, "my-datetime", Partitioning.Invariant,
new DateTimeFieldProperties())) new DateTimeFieldProperties())
.AddField(new ReferencesField(7, "my-references", Partitioning.Invariant, .AddReferences(7, "my-references", Partitioning.Invariant,
new ReferencesFieldProperties { SchemaId = schemaId })) new ReferencesFieldProperties { SchemaId = schemaId })
.AddField(new ReferencesField(9, "my-invalid", Partitioning.Invariant, .AddReferences(9, "my-invalid", Partitioning.Invariant,
new ReferencesFieldProperties { SchemaId = Guid.NewGuid() })) new ReferencesFieldProperties { SchemaId = Guid.NewGuid() })
.AddField(new GeolocationField(10, "my-geolocation", Partitioning.Invariant, .AddGeolocation(10, "my-geolocation", Partitioning.Invariant,
new GeolocationFieldProperties())) new GeolocationFieldProperties())
.AddField(new TagsField(11, "my-tags", Partitioning.Invariant, .AddTags(11, "my-tags", Partitioning.Invariant,
new TagsFieldProperties())); new TagsFieldProperties());
A.CallTo(() => app.Id).Returns(appId); A.CallTo(() => app.Id).Returns(appId);
A.CallTo(() => app.Name).Returns(appName); A.CallTo(() => app.Name).Returns(appName);

32
tests/Squidex.Domain.Apps.Entities.Tests/Contents/OData/ODataQueryTests.cs

@ -45,22 +45,22 @@ namespace Squidex.Domain.Apps.Entities.Contents.OData
{ {
schemaDef = schemaDef =
new Schema("user") new Schema("user")
.AddField(new StringField(1, "firstName", Partitioning.Language, .AddString(1, "firstName", Partitioning.Language,
new StringFieldProperties { Label = "FirstName", IsRequired = true, AllowedValues = ImmutableList.Create("1", "2") })) new StringFieldProperties { Label = "FirstName", IsRequired = true, AllowedValues = ImmutableList.Create("1", "2") })
.AddField(new StringField(2, "lastName", Partitioning.Language, .AddString(2, "lastName", Partitioning.Language,
new StringFieldProperties { Hints = "Last Name", Editor = StringFieldEditor.Input })) new StringFieldProperties { Hints = "Last Name", Editor = StringFieldEditor.Input })
.AddField(new BooleanField(3, "isAdmin", Partitioning.Invariant, .AddBoolean(3, "isAdmin", Partitioning.Invariant,
new BooleanFieldProperties())) new BooleanFieldProperties())
.AddField(new NumberField(4, "age", Partitioning.Invariant, .AddNumber(4, "age", Partitioning.Invariant,
new NumberFieldProperties { MinValue = 1, MaxValue = 10 })) new NumberFieldProperties { MinValue = 1, MaxValue = 10 })
.AddField(new DateTimeField(5, "birthday", Partitioning.Invariant, .AddDateTime(5, "birthday", Partitioning.Invariant,
new DateTimeFieldProperties())) new DateTimeFieldProperties())
.AddField(new AssetsField(6, "pictures", Partitioning.Invariant, .AddAssets(6, "pictures", Partitioning.Invariant,
new AssetsFieldProperties())) new AssetsFieldProperties())
.AddField(new ReferencesField(7, "friends", Partitioning.Invariant, .AddReferences(7, "friends", Partitioning.Invariant,
new ReferencesFieldProperties())) new ReferencesFieldProperties())
.AddField(new StringField(8, "dashed-field", Partitioning.Invariant, .AddString(8, "dashed-field", Partitioning.Invariant,
new StringFieldProperties())) new StringFieldProperties())
.Update(new SchemaProperties { Hints = "The User" }); .Update(new SchemaProperties { Hints = "The User" });
var builder = new EdmModelBuilder(new MemoryCache(Options.Create(new MemoryCacheOptions()))); var builder = new EdmModelBuilder(new MemoryCache(Options.Create(new MemoryCacheOptions())));

4
tests/Squidex.Domain.Apps.Entities.Tests/Schemas/Guards/GuardSchemaFieldTests.cs

@ -25,8 +25,8 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Guards
{ {
schema_0 = schema_0 =
new Schema("my-schema") new Schema("my-schema")
.AddField(new StringField(1, "field1", Partitioning.Invariant)) .AddString(1, "field1", Partitioning.Invariant)
.AddField(new StringField(2, "field2", Partitioning.Invariant)); .AddString(2, "field2", Partitioning.Invariant);
} }
[Fact] [Fact]

4
tests/Squidex.Domain.Apps.Entities.Tests/Schemas/Guards/GuardSchemaTests.cs

@ -29,8 +29,8 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Guards
{ {
schema_0 = schema_0 =
new Schema("my-schema") new Schema("my-schema")
.AddField(new StringField(1, "field1", Partitioning.Invariant)) .AddString(1, "field1", Partitioning.Invariant)
.AddField(new StringField(2, "field2", Partitioning.Invariant)); .AddString(2, "field2", Partitioning.Invariant);
A.CallTo(() => appProvider.GetSchemaAsync(A<Guid>.Ignored, "new-schema")) A.CallTo(() => appProvider.GetSchemaAsync(A<Guid>.Ignored, "new-schema"))
.Returns(Task.FromResult<ISchemaEntity>(null)); .Returns(Task.FromResult<ISchemaEntity>(null));

Loading…
Cancel
Save