diff --git a/src/Squidex.Domain.Apps.Core/Contents/ContentData.cs b/src/Squidex.Domain.Apps.Core/Contents/ContentData.cs index 1c5a6ea99..1fe919f17 100644 --- a/src/Squidex.Domain.Apps.Core/Contents/ContentData.cs +++ b/src/Squidex.Domain.Apps.Core/Contents/ContentData.cs @@ -34,7 +34,8 @@ namespace Squidex.Domain.Apps.Core.Contents { } - protected static TResult Merge(TResult source, TResult target) where TResult : ContentData + protected static TResult Merge(TResult source, TResult target) + where TResult : ContentData { if (ReferenceEquals(target, source)) { @@ -54,7 +55,8 @@ namespace Squidex.Domain.Apps.Core.Contents return target; } - protected static TResult Clean(TResult source, TResult target) where TResult : ContentData + protected static TResult Clean(TResult source, TResult target) + where TResult : ContentData { foreach (var fieldValue in source.ValidValues) { diff --git a/src/Squidex.Domain.Apps.Core/Contents/IdContentData.cs b/src/Squidex.Domain.Apps.Core/Contents/IdContentData.cs index 6ddfcc4da..a07a113ba 100644 --- a/src/Squidex.Domain.Apps.Core/Contents/IdContentData.cs +++ b/src/Squidex.Domain.Apps.Core/Contents/IdContentData.cs @@ -113,7 +113,6 @@ namespace Squidex.Domain.Apps.Core.Contents } else { - result[field.Name] = fieldValue.Value; } } diff --git a/src/Squidex.Domain.Apps.Core/InvariantPartitioning.cs b/src/Squidex.Domain.Apps.Core/InvariantPartitioning.cs index ee7c6a7b5..8796c0ddf 100644 --- a/src/Squidex.Domain.Apps.Core/InvariantPartitioning.cs +++ b/src/Squidex.Domain.Apps.Core/InvariantPartitioning.cs @@ -22,6 +22,7 @@ namespace Squidex.Domain.Apps.Core private sealed class InvariantItem : IFieldPartitionItem { public string Key { get; } = "iv"; + public string Name { get; } = "Invariant"; public bool IsOptional { get; } = false; diff --git a/src/Squidex.Domain.Apps.Core/Schemas/AssetsFieldProperties.cs b/src/Squidex.Domain.Apps.Core/Schemas/AssetsFieldProperties.cs index 67e2dbe81..9043bea08 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/AssetsFieldProperties.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/AssetsFieldProperties.cs @@ -20,7 +20,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public int? MinItems { - get { return minItems; } + get + { + return minItems; + } set { ThrowIfFrozen(); @@ -31,7 +34,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public int? MaxItems { - get { return maxItems; } + get + { + return maxItems; + } set { ThrowIfFrozen(); diff --git a/src/Squidex.Domain.Apps.Core/Schemas/AssetsValue.cs b/src/Squidex.Domain.Apps.Core/Schemas/AssetsValue.cs index 548c62dea..492c74548 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/AssetsValue.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/AssetsValue.cs @@ -13,7 +13,7 @@ namespace Squidex.Domain.Apps.Core.Schemas { public sealed class AssetsValue { - private readonly List EmptyAssetIds = new List(); + private static readonly List EmptyAssetIds = new List(); public IReadOnlyList AssetIds { get; } diff --git a/src/Squidex.Domain.Apps.Core/Schemas/BooleanFieldProperties.cs b/src/Squidex.Domain.Apps.Core/Schemas/BooleanFieldProperties.cs index 6e3e2c58e..949ddcb95 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/BooleanFieldProperties.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/BooleanFieldProperties.cs @@ -20,7 +20,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public bool? DefaultValue { - get { return defaultValue; } + get + { + return defaultValue; + } set { ThrowIfFrozen(); @@ -31,7 +34,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public BooleanFieldEditor Editor { - get { return editor; } + get + { + return editor; + } set { ThrowIfFrozen(); diff --git a/src/Squidex.Domain.Apps.Core/Schemas/CloneableBase.cs b/src/Squidex.Domain.Apps.Core/Schemas/CloneableBase.cs index 5ac2ee328..dfa20e0e2 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/CloneableBase.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/CloneableBase.cs @@ -12,7 +12,8 @@ namespace Squidex.Domain.Apps.Core.Schemas { public abstract class CloneableBase { - protected T Clone(Action updater) where T : CloneableBase + protected T Clone(Action updater) + where T : CloneableBase { var clone = (T)MemberwiseClone(); diff --git a/src/Squidex.Domain.Apps.Core/Schemas/DateTimeFieldProperties.cs b/src/Squidex.Domain.Apps.Core/Schemas/DateTimeFieldProperties.cs index ecab5acca..aac249de5 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/DateTimeFieldProperties.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/DateTimeFieldProperties.cs @@ -29,7 +29,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public Instant? MaxValue { - get { return maxValue; } + get + { + return maxValue; + } set { ThrowIfFrozen(); @@ -40,7 +43,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public Instant? MinValue { - get { return minValue; } + get + { + return minValue; + } set { ThrowIfFrozen(); @@ -51,7 +57,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public Instant? DefaultValue { - get { return defaultValue; } + get + { + return defaultValue; + } set { ThrowIfFrozen(); @@ -62,7 +71,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public DateTimeCalculatedDefaultValue? CalculatedDefaultValue { - get { return calculatedDefaultValue; } + get + { + return calculatedDefaultValue; + } set { ThrowIfFrozen(); @@ -73,7 +85,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public DateTimeFieldEditor Editor { - get { return editor; } + get + { + return editor; + } set { ThrowIfFrozen(); diff --git a/src/Squidex.Domain.Apps.Core/Schemas/FieldProperties.cs b/src/Squidex.Domain.Apps.Core/Schemas/FieldProperties.cs index 062b95606..262d8453f 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/FieldProperties.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/FieldProperties.cs @@ -20,7 +20,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public bool IsRequired { - get { return isRequired; } + get + { + return isRequired; + } set { ThrowIfFrozen(); @@ -31,7 +34,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public bool IsListField { - get { return isListField; } + get + { + return isListField; + } set { ThrowIfFrozen(); @@ -42,7 +48,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public string Placeholder { - get { return placeholder; } + get + { + return placeholder; + } set { ThrowIfFrozen(); diff --git a/src/Squidex.Domain.Apps.Core/Schemas/Field_Generic.cs b/src/Squidex.Domain.Apps.Core/Schemas/Field_Generic.cs index 98a2778de..292fe14fd 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/Field_Generic.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/Field_Generic.cs @@ -9,9 +9,12 @@ using System; using Squidex.Infrastructure; +#pragma warning disable SA1649 // File name must match first type name + namespace Squidex.Domain.Apps.Core.Schemas { - public abstract class Field : Field where T : FieldProperties + public abstract class Field : Field + where T : FieldProperties { private T properties; diff --git a/src/Squidex.Domain.Apps.Core/Schemas/GeolocationFieldProperties.cs b/src/Squidex.Domain.Apps.Core/Schemas/GeolocationFieldProperties.cs index 18cda0e8a..701f5d23b 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/GeolocationFieldProperties.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/GeolocationFieldProperties.cs @@ -19,7 +19,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public GeolocationFieldEditor Editor { - get { return editor; } + get + { + return editor; + } set { ThrowIfFrozen(); diff --git a/src/Squidex.Domain.Apps.Core/Schemas/NamedElementPropertiesBase.cs b/src/Squidex.Domain.Apps.Core/Schemas/NamedElementPropertiesBase.cs index 7c4369599..4b7dad2c3 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/NamedElementPropertiesBase.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/NamedElementPropertiesBase.cs @@ -19,7 +19,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public string Label { - get { return label; } + get + { + return label; + } set { ThrowIfFrozen(); @@ -30,7 +33,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public string Hints { - get { return hints; } + get + { + return hints; + } set { ThrowIfFrozen(); diff --git a/src/Squidex.Domain.Apps.Core/Schemas/NumberFieldProperties.cs b/src/Squidex.Domain.Apps.Core/Schemas/NumberFieldProperties.cs index d0d8eba0e..594ec2834 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/NumberFieldProperties.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/NumberFieldProperties.cs @@ -24,7 +24,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public double? MaxValue { - get { return maxValue; } + get + { + return maxValue; + } set { ThrowIfFrozen(); @@ -35,7 +38,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public double? MinValue { - get { return minValue; } + get + { + return minValue; + } set { ThrowIfFrozen(); @@ -46,7 +52,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public double? DefaultValue { - get { return defaultValue; } + get + { + return defaultValue; + } set { ThrowIfFrozen(); @@ -57,7 +66,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public ImmutableList AllowedValues { - get { return allowedValues; } + get + { + return allowedValues; + } set { ThrowIfFrozen(); @@ -68,7 +80,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public NumberFieldEditor Editor { - get { return editor; } + get + { + return editor; + } set { ThrowIfFrozen(); diff --git a/src/Squidex.Domain.Apps.Core/Schemas/ReferencesField.cs b/src/Squidex.Domain.Apps.Core/Schemas/ReferencesField.cs index 606da1bc6..1bbbb20ec 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/ReferencesField.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/ReferencesField.cs @@ -50,7 +50,7 @@ namespace Squidex.Domain.Apps.Core.Schemas referenceIds = EmptyIds; } - return referenceIds.Union(new [] { Properties.SchemaId }); + return referenceIds.Union(new[] { Properties.SchemaId }); } public JToken RemoveDeletedReferences(JToken value, ISet deletedReferencedIds) diff --git a/src/Squidex.Domain.Apps.Core/Schemas/ReferencesFieldProperties.cs b/src/Squidex.Domain.Apps.Core/Schemas/ReferencesFieldProperties.cs index 3617e2a2b..25d73d70e 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/ReferencesFieldProperties.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/ReferencesFieldProperties.cs @@ -22,7 +22,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public int? MinItems { - get { return minItems; } + get + { + return minItems; + } set { ThrowIfFrozen(); @@ -33,7 +36,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public int? MaxItems { - get { return maxItems; } + get + { + return maxItems; + } set { ThrowIfFrozen(); @@ -44,7 +50,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public Guid SchemaId { - get { return schemaId; } + get + { + return schemaId; + } set { ThrowIfFrozen(); diff --git a/src/Squidex.Domain.Apps.Core/Schemas/ReferencesValue.cs b/src/Squidex.Domain.Apps.Core/Schemas/ReferencesValue.cs index 52428a7db..de9b660c9 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/ReferencesValue.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/ReferencesValue.cs @@ -13,7 +13,7 @@ namespace Squidex.Domain.Apps.Core.Schemas { public sealed class ReferencesValue { - private readonly List EmptyReferencedIds = new List(); + private static readonly List EmptyReferencedIds = new List(); public IReadOnlyList ContentIds { get; } diff --git a/src/Squidex.Domain.Apps.Core/Schemas/StringFieldProperties.cs b/src/Squidex.Domain.Apps.Core/Schemas/StringFieldProperties.cs index ebbe72be5..e0b5d8715 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/StringFieldProperties.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/StringFieldProperties.cs @@ -28,7 +28,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public int? MinLength { - get { return minLength; } + get + { + return minLength; + } set { ThrowIfFrozen(); @@ -39,7 +42,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public int? MaxLength { - get { return maxLength; } + get + { + return maxLength; + } set { ThrowIfFrozen(); @@ -50,7 +56,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public string DefaultValue { - get { return defaultValue; } + get + { + return defaultValue; + } set { ThrowIfFrozen(); @@ -61,7 +70,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public string Pattern { - get { return pattern; } + get + { + return pattern; + } set { ThrowIfFrozen(); @@ -72,7 +84,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public string PatternMessage { - get { return patternMessage; } + get + { + return patternMessage; + } set { ThrowIfFrozen(); @@ -83,7 +98,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public ImmutableList AllowedValues { - get { return allowedValues; } + get + { + return allowedValues; + } set { ThrowIfFrozen(); @@ -94,7 +112,10 @@ namespace Squidex.Domain.Apps.Core.Schemas public StringFieldEditor Editor { - get { return editor; } + get + { + return editor; + } set { ThrowIfFrozen(); diff --git a/src/Squidex.Domain.Apps.Core/Schemas/ValidationContext.cs b/src/Squidex.Domain.Apps.Core/Schemas/ValidationContext.cs index 5f15ddcff..ac60af761 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/ValidationContext.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/ValidationContext.cs @@ -25,7 +25,6 @@ namespace Squidex.Domain.Apps.Core.Schemas Func, Task>> checkAsset) : this(checkContent, checkAsset, false) { - } private ValidationContext( diff --git a/src/Squidex.Domain.Apps.Core/Schemas/Validators/RangeValidator.cs b/src/Squidex.Domain.Apps.Core/Schemas/Validators/RangeValidator.cs index 72e0f8b78..3fa3c48e7 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/Validators/RangeValidator.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/Validators/RangeValidator.cs @@ -12,7 +12,8 @@ using Squidex.Infrastructure.Tasks; namespace Squidex.Domain.Apps.Core.Schemas.Validators { - public sealed class RangeValidator : IValidator where T : struct, IComparable + public sealed class RangeValidator : IValidator + where T : struct, IComparable { private readonly T? min; private readonly T? max; diff --git a/src/Squidex.Domain.Apps.Core/Schemas/Validators/RequiredStringValidator.cs b/src/Squidex.Domain.Apps.Core/Schemas/Validators/RequiredStringValidator.cs index b064f55bd..69aabed9f 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/Validators/RequiredStringValidator.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/Validators/RequiredStringValidator.cs @@ -28,7 +28,7 @@ namespace Squidex.Domain.Apps.Core.Schemas.Validators return TaskHelper.Done; } - var valueAsString = (string) value; + var valueAsString = (string)value; if (valueAsString == null || (validateEmptyStrings && string.IsNullOrWhiteSpace(valueAsString))) { diff --git a/src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/ContentDataProperty.cs b/src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/ContentDataProperty.cs index fcc9e4e79..fe28ec462 100644 --- a/src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/ContentDataProperty.cs +++ b/src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/ContentDataProperty.cs @@ -23,7 +23,10 @@ namespace Squidex.Domain.Apps.Core.Scripting.ContentWrapper public override JsValue Value { - get { return value; } + get + { + return value; + } set { if (!Equals(this.value, value)) diff --git a/src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/ContentFieldProperty.cs b/src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/ContentFieldProperty.cs index 267f6caf4..5a2187c67 100644 --- a/src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/ContentFieldProperty.cs +++ b/src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/ContentFieldProperty.cs @@ -23,7 +23,10 @@ namespace Squidex.Domain.Apps.Core.Scripting.ContentWrapper public override JsValue Value { - get { return value ?? (value = JsonMapper.Map(contentValue, contentField.Engine)); } + get + { + return value ?? (value = JsonMapper.Map(contentValue, contentField.Engine)); + } set { if (!Equals(this.value, value)) diff --git a/src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/JsonMapper.cs b/src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/JsonMapper.cs index c46d24c54..8c021ab01 100644 --- a/src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/JsonMapper.cs +++ b/src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/JsonMapper.cs @@ -45,18 +45,7 @@ namespace Squidex.Domain.Apps.Core.Scripting.ContentWrapper case JTokenType.Boolean: return new JsValue((bool)value); case JTokenType.Object: - { - var obj = (JObject)value; - - var target = new ObjectInstance(engine); - - foreach (var property in obj) - { - target.FastAddProperty(property.Key, Map(property.Value, engine), false, true, true); - } - - return target; - } + return FromObject(value, engine); case JTokenType.Array: { var arr = (JArray)value; @@ -75,6 +64,20 @@ namespace Squidex.Domain.Apps.Core.Scripting.ContentWrapper throw new ArgumentException("Invalid json type", nameof(value)); } + private static JsValue FromObject(JToken value, Engine engine) + { + var obj = (JObject)value; + + var target = new ObjectInstance(engine); + + foreach (var property in obj) + { + target.FastAddProperty(property.Key, Map(property.Value, engine), false, true, true); + } + + return target; + } + public static JToken Map(JsValue value) { if (value == null || value.IsNull()) diff --git a/src/Squidex.Domain.Apps.Core/Squidex.Domain.Apps.Core.csproj b/src/Squidex.Domain.Apps.Core/Squidex.Domain.Apps.Core.csproj index 4db7d4e24..136277ccf 100644 --- a/src/Squidex.Domain.Apps.Core/Squidex.Domain.Apps.Core.csproj +++ b/src/Squidex.Domain.Apps.Core/Squidex.Domain.Apps.Core.csproj @@ -15,7 +15,11 @@ + + + ..\..\Squidex.ruleset + diff --git a/src/Squidex.Domain.Apps.Events/Squidex.Domain.Apps.Events.csproj b/src/Squidex.Domain.Apps.Events/Squidex.Domain.Apps.Events.csproj index abbccf682..c9f538485 100644 --- a/src/Squidex.Domain.Apps.Events/Squidex.Domain.Apps.Events.csproj +++ b/src/Squidex.Domain.Apps.Events/Squidex.Domain.Apps.Events.csproj @@ -12,6 +12,10 @@ + + + ..\..\Squidex.ruleset + diff --git a/src/Squidex.Domain.Apps.Read.MongoDb/Squidex.Domain.Apps.Read.MongoDb.csproj b/src/Squidex.Domain.Apps.Read.MongoDb/Squidex.Domain.Apps.Read.MongoDb.csproj index 62570d28e..8965edb25 100644 --- a/src/Squidex.Domain.Apps.Read.MongoDb/Squidex.Domain.Apps.Read.MongoDb.csproj +++ b/src/Squidex.Domain.Apps.Read.MongoDb/Squidex.Domain.Apps.Read.MongoDb.csproj @@ -16,6 +16,10 @@ + + + ..\..\Squidex.ruleset + diff --git a/src/Squidex.Domain.Apps.Read/Squidex.Domain.Apps.Read.csproj b/src/Squidex.Domain.Apps.Read/Squidex.Domain.Apps.Read.csproj index 1a40f85ac..39e43ef61 100644 --- a/src/Squidex.Domain.Apps.Read/Squidex.Domain.Apps.Read.csproj +++ b/src/Squidex.Domain.Apps.Read/Squidex.Domain.Apps.Read.csproj @@ -15,7 +15,11 @@ + + + ..\..\Squidex.ruleset + diff --git a/src/Squidex.Domain.Apps.Write/Squidex.Domain.Apps.Write.csproj b/src/Squidex.Domain.Apps.Write/Squidex.Domain.Apps.Write.csproj index c4e0199d4..296404121 100644 --- a/src/Squidex.Domain.Apps.Write/Squidex.Domain.Apps.Write.csproj +++ b/src/Squidex.Domain.Apps.Write/Squidex.Domain.Apps.Write.csproj @@ -15,6 +15,10 @@ + + + ..\..\Squidex.ruleset + diff --git a/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj b/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj index 31704faa2..495b45121 100644 --- a/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj +++ b/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj @@ -17,6 +17,10 @@ + + + ..\..\Squidex.ruleset + \ No newline at end of file diff --git a/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj b/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj index bd7ffbdb6..dca590086 100644 --- a/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj +++ b/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj @@ -13,7 +13,11 @@ + + + ..\..\Squidex.ruleset + \ No newline at end of file diff --git a/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj b/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj index e9bacace3..64578d240 100644 --- a/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj +++ b/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj @@ -4,9 +4,13 @@ Squidex.Infrastructure + + + ..\..\Squidex.ruleset + \ No newline at end of file diff --git a/src/Squidex.Infrastructure.GetEventStore/CQRS/Events/GetEventStore.cs b/src/Squidex.Infrastructure.GetEventStore/CQRS/Events/GetEventStore.cs index 68dcdddeb..9eb08294b 100644 --- a/src/Squidex.Infrastructure.GetEventStore/CQRS/Events/GetEventStore.cs +++ b/src/Squidex.Infrastructure.GetEventStore/CQRS/Events/GetEventStore.cs @@ -49,7 +49,7 @@ namespace Squidex.Infrastructure.CQRS.Events public IEventSubscription CreateSubscription(string streamFilter = null, string position = null) { - return new EventStoreSubscription(connection, streamFilter, position, prefix, projectionHost); + return new GetEventStoreSubscription(connection, streamFilter, position, prefix, projectionHost); } public async Task> GetEventsAsync(string streamName) diff --git a/src/Squidex.Infrastructure.GetEventStore/CQRS/Events/GetEventStoreSubscription.cs b/src/Squidex.Infrastructure.GetEventStore/CQRS/Events/GetEventStoreSubscription.cs index db0952db4..e793fefcd 100644 --- a/src/Squidex.Infrastructure.GetEventStore/CQRS/Events/GetEventStoreSubscription.cs +++ b/src/Squidex.Infrastructure.GetEventStore/CQRS/Events/GetEventStoreSubscription.cs @@ -22,12 +22,12 @@ using EventStore.ClientAPI.Projections; namespace Squidex.Infrastructure.CQRS.Events { - internal sealed class EventStoreSubscription : DisposableObjectBase, IEventSubscription + internal sealed class GetEventStoreSubscription : DisposableObjectBase, IEventSubscription { private const int ReconnectWindowMax = 5; private const int ReconnectWaitMs = 1000; private static readonly TimeSpan TimeBetweenReconnects = TimeSpan.FromMinutes(5); - private static readonly ConcurrentDictionary subscriptionsCreated = new ConcurrentDictionary(); + private static readonly ConcurrentDictionary SubscriptionsCreated = new ConcurrentDictionary(); private readonly IEventStoreConnection connection; private readonly string streamFilter; private readonly string streamName; @@ -41,7 +41,7 @@ namespace Squidex.Infrastructure.CQRS.Events private EventStoreCatchUpSubscription internalSubscription; private long? position; - public EventStoreSubscription(IEventStoreConnection connection, string streamFilter, string position, string prefix, string projectionHost) + public GetEventStoreSubscription(IEventStoreConnection connection, string streamFilter, string position, string prefix, string projectionHost) { this.prefix = prefix; this.position = ParsePosition(position); @@ -247,7 +247,7 @@ namespace Squidex.Infrastructure.CQRS.Events private async Task CreateProjectionAsync() { - if (subscriptionsCreated.TryAdd(streamName, true)) + if (SubscriptionsCreated.TryAdd(streamName, true)) { var projectsManager = await ConnectToProjections(); diff --git a/src/Squidex.Infrastructure.GetEventStore/Squidex.Infrastructure.GetEventStore.csproj b/src/Squidex.Infrastructure.GetEventStore/Squidex.Infrastructure.GetEventStore.csproj index f83596d9b..ff39e7c0f 100644 --- a/src/Squidex.Infrastructure.GetEventStore/Squidex.Infrastructure.GetEventStore.csproj +++ b/src/Squidex.Infrastructure.GetEventStore/Squidex.Infrastructure.GetEventStore.csproj @@ -9,8 +9,12 @@ + + + ..\..\Squidex.ruleset + \ No newline at end of file diff --git a/src/Squidex.Infrastructure.GoogleCloud/Squidex.Infrastructure.GoogleCloud.csproj b/src/Squidex.Infrastructure.GoogleCloud/Squidex.Infrastructure.GoogleCloud.csproj index d7e1d4d3d..97b29e8a3 100644 --- a/src/Squidex.Infrastructure.GoogleCloud/Squidex.Infrastructure.GoogleCloud.csproj +++ b/src/Squidex.Infrastructure.GoogleCloud/Squidex.Infrastructure.GoogleCloud.csproj @@ -9,9 +9,13 @@ + + + ..\..\Squidex.ruleset + \ No newline at end of file diff --git a/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj b/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj index 06bf7855b..0be75ee3e 100644 --- a/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj +++ b/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj @@ -12,6 +12,10 @@ + + + ..\..\Squidex.ruleset + diff --git a/src/Squidex.Infrastructure.RabbitMq/Squidex.Infrastructure.RabbitMq.csproj b/src/Squidex.Infrastructure.RabbitMq/Squidex.Infrastructure.RabbitMq.csproj index 82ea441f7..0bfe8f4ce 100644 --- a/src/Squidex.Infrastructure.RabbitMq/Squidex.Infrastructure.RabbitMq.csproj +++ b/src/Squidex.Infrastructure.RabbitMq/Squidex.Infrastructure.RabbitMq.csproj @@ -9,9 +9,13 @@ + + + ..\..\Squidex.ruleset + \ No newline at end of file diff --git a/src/Squidex.Infrastructure.Redis/Squidex.Infrastructure.Redis.csproj b/src/Squidex.Infrastructure.Redis/Squidex.Infrastructure.Redis.csproj index 4b61771db..2455a50b5 100644 --- a/src/Squidex.Infrastructure.Redis/Squidex.Infrastructure.Redis.csproj +++ b/src/Squidex.Infrastructure.Redis/Squidex.Infrastructure.Redis.csproj @@ -12,6 +12,10 @@ + + + ..\..\Squidex.ruleset + diff --git a/src/Squidex.Infrastructure/CollectionExtensions.cs b/src/Squidex.Infrastructure/CollectionExtensions.cs index 4778b9651..d9d2c8196 100644 --- a/src/Squidex.Infrastructure/CollectionExtensions.cs +++ b/src/Squidex.Infrastructure/CollectionExtensions.cs @@ -30,7 +30,7 @@ namespace Squidex.Infrastructure { if (item != null) { - hashCode = hashCode * 23 + comparer.GetHashCode(item); + hashCode = (hashCode * 23) + comparer.GetHashCode(item); } } @@ -52,7 +52,7 @@ namespace Squidex.Infrastructure foreach (var code in hashCodes) { - hashCode = hashCode * 23 + code; + hashCode = (hashCode * 23) + code; } return hashCode; @@ -69,11 +69,11 @@ namespace Squidex.Infrastructure foreach (var kvp in dictionary.OrderBy(x => x.Key)) { - hashCode = hashCode * 23 + keyComparer.GetHashCode(kvp.Key); + hashCode = (hashCode * 23) + keyComparer.GetHashCode(kvp.Key); if (kvp.Value != null) { - hashCode = hashCode * 23 + valueComparer.GetHashCode(kvp.Value); + hashCode = (hashCode * 23) + valueComparer.GetHashCode(kvp.Value); } } @@ -102,12 +102,14 @@ namespace Squidex.Infrastructure return dictionary.GetOrAdd(key, _ => default(TValue)); } - public static TValue GetOrNew(this IReadOnlyDictionary dictionary, TKey key) where TValue : class, new() + public static TValue GetOrNew(this IReadOnlyDictionary dictionary, TKey key) + where TValue : class, new() { return dictionary.GetOrCreate(key, _ => new TValue()); } - public static TValue GetOrAddNew(this IDictionary dictionary, TKey key) where TValue : class, new() + public static TValue GetOrAddNew(this IDictionary dictionary, TKey key) + where TValue : class, new() { return dictionary.GetOrAdd(key, _ => new TValue()); } diff --git a/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj b/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj index c799429a5..4552a56c0 100644 --- a/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj +++ b/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj @@ -13,10 +13,14 @@ + + + ..\..\Squidex.ruleset + diff --git a/src/Squidex.Shared/Squidex.Shared.csproj b/src/Squidex.Shared/Squidex.Shared.csproj index 41487595d..408b0946c 100644 --- a/src/Squidex.Shared/Squidex.Shared.csproj +++ b/src/Squidex.Shared/Squidex.Shared.csproj @@ -7,6 +7,10 @@ True + + + ..\..\Squidex.ruleset + \ No newline at end of file diff --git a/src/Squidex/Config/Domain/StoreMongoDbModule.cs b/src/Squidex/Config/Domain/StoreMongoDbModule.cs index 1a24adc1a..36ad801b5 100644 --- a/src/Squidex/Config/Domain/StoreMongoDbModule.cs +++ b/src/Squidex/Config/Domain/StoreMongoDbModule.cs @@ -181,7 +181,6 @@ namespace Squidex.Config.Domain .AsSelf() .SingleInstance(); - builder.Register(c => new CompoundEventConsumer( c.Resolve(), diff --git a/src/Squidex/Config/Domain/WriteModule.cs b/src/Squidex/Config/Domain/WriteModule.cs index 15ac005b3..c3e4336a1 100644 --- a/src/Squidex/Config/Domain/WriteModule.cs +++ b/src/Squidex/Config/Domain/WriteModule.cs @@ -105,7 +105,7 @@ namespace Squidex.Config.Domain { var fieldRegistry = c.Resolve(); - return (id => new SchemaDomainObject(id, -1, fieldRegistry)); + return id => new SchemaDomainObject(id, -1, fieldRegistry); }) .AsSelf() .SingleInstance(); diff --git a/src/Squidex/Config/Identity/GithubHandler.cs b/src/Squidex/Config/Identity/GithubHandler.cs index 5a9f24b9e..a1e1cb433 100644 --- a/src/Squidex/Config/Identity/GithubHandler.cs +++ b/src/Squidex/Config/Identity/GithubHandler.cs @@ -18,7 +18,7 @@ namespace Squidex.Config.Identity public override Task CreatingTicket(OAuthCreatingTicketContext context) { var userLogin = context.User.Value("login"); - var userName = context.User.Value("name"); + var userName = context.User.Value("name"); if (!string.IsNullOrEmpty(userName)) { diff --git a/src/Squidex/Config/Identity/IdentityUsage.cs b/src/Squidex/Config/Identity/IdentityUsage.cs index e1efcd336..3ef183fe6 100644 --- a/src/Squidex/Config/Identity/IdentityUsage.cs +++ b/src/Squidex/Config/Identity/IdentityUsage.cs @@ -66,11 +66,11 @@ namespace Squidex.Config.Identity Task.Run(async () => { - if ((userManager.SupportsQueryableUsers && !userManager.Users.Any())) + if (userManager.SupportsQueryableUsers && !userManager.Users.Any()) { try { - var user = await userManager.CreateAsync(userFactory, adminEmail, adminEmail, adminPass); + var user = await userManager.CreateAsync(userFactory, adminEmail, adminEmail, adminPass); await userManager.AddToRoleAsync(user, SquidexRoles.Administrator); } diff --git a/src/Squidex/Config/Identity/LazyClientStore.cs b/src/Squidex/Config/Identity/LazyClientStore.cs index 82bae96d7..ef95e825c 100644 --- a/src/Squidex/Config/Identity/LazyClientStore.cs +++ b/src/Squidex/Config/Identity/LazyClientStore.cs @@ -58,7 +58,6 @@ namespace Squidex.Config.Identity if (appClient == null) { return null; - } client = CreateClientFromApp(clientId, appClient); diff --git a/src/Squidex/Controllers/Api/Apps/AppClientsController.cs b/src/Squidex/Controllers/Api/Apps/AppClientsController.cs index 1afebd934..7eee86d82 100644 --- a/src/Squidex/Controllers/Api/Apps/AppClientsController.cs +++ b/src/Squidex/Controllers/Api/Apps/AppClientsController.cs @@ -80,7 +80,7 @@ namespace Squidex.Controllers.Api.Apps await CommandBus.PublishAsync(command); - var response = SimpleMapper.Map(command, new ClientDto { Name = command .Id }); + var response = SimpleMapper.Map(command, new ClientDto { Name = command.Id }); return CreatedAtAction(nameof(GetClients), new { app }, response); } diff --git a/src/Squidex/Controllers/Api/Assets/AssetContentController.cs b/src/Squidex/Controllers/Api/Assets/AssetContentController.cs index cbe552ec8..f427c4000 100644 --- a/src/Squidex/Controllers/Api/Assets/AssetContentController.cs +++ b/src/Squidex/Controllers/Api/Assets/AssetContentController.cs @@ -99,7 +99,6 @@ namespace Squidex.Controllers.Api.Assets await destinationStream.CopyToAsync(bodyStream); } } - } } diff --git a/src/Squidex/Controllers/Api/Schemas/Models/AddFieldDto.cs b/src/Squidex/Controllers/Api/Schemas/Models/AddFieldDto.cs index e98fba456..5b8672050 100644 --- a/src/Squidex/Controllers/Api/Schemas/Models/AddFieldDto.cs +++ b/src/Squidex/Controllers/Api/Schemas/Models/AddFieldDto.cs @@ -30,5 +30,4 @@ namespace Squidex.Controllers.Api.Schemas.Models [Required] public FieldPropertiesDto Properties { get; set; } } -} - +} \ No newline at end of file diff --git a/src/Squidex/Controllers/Api/Schemas/Models/Converters/JsonInheritanceConverter.cs b/src/Squidex/Controllers/Api/Schemas/Models/Converters/JsonInheritanceConverter.cs index 8e40942ef..cb11f2dfa 100644 --- a/src/Squidex/Controllers/Api/Schemas/Models/Converters/JsonInheritanceConverter.cs +++ b/src/Squidex/Controllers/Api/Schemas/Models/Converters/JsonInheritanceConverter.cs @@ -14,6 +14,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using NJsonSchema.Annotations; +#pragma warning disable SA1306 // Field names must begin with lower-case letter // ReSharper disable ConvertIfStatementToReturnStatement namespace Squidex.Controllers.Api.Schemas.Models.Converters diff --git a/src/Squidex/Controllers/Api/Schemas/Models/CreateSchemaFieldDto.cs b/src/Squidex/Controllers/Api/Schemas/Models/CreateSchemaFieldDto.cs index b42db8444..7a043aeb5 100644 --- a/src/Squidex/Controllers/Api/Schemas/Models/CreateSchemaFieldDto.cs +++ b/src/Squidex/Controllers/Api/Schemas/Models/CreateSchemaFieldDto.cs @@ -45,5 +45,4 @@ namespace Squidex.Controllers.Api.Schemas.Models [Required] public FieldPropertiesDto Properties { get; set; } } -} - +} \ No newline at end of file diff --git a/src/Squidex/Controllers/Api/Schemas/Models/GeolocationPropertiesDto.cs b/src/Squidex/Controllers/Api/Schemas/Models/GeolocationPropertiesDto.cs deleted file mode 100644 index 4ad558c5c..000000000 --- a/src/Squidex/Controllers/Api/Schemas/Models/GeolocationPropertiesDto.cs +++ /dev/null @@ -1,38 +0,0 @@ -// ========================================================================== -// GeolocationPropertiesDto.cs -// Squidex Headless CMS -// ========================================================================== -// Copyright (c) Squidex Group -// All rights reserved. -// ========================================================================== - -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using NJsonSchema.Annotations; -using Squidex.Domain.Apps.Core.Schemas; -using Squidex.Infrastructure.Reflection; - -namespace Squidex.Controllers.Api.Schemas.Models -{ - [JsonSchema("Geolocation")] - public sealed class GeolocationFieldPropertiesDto : FieldPropertiesDto - { - /// - /// The default value for the field value. - /// - public bool? DefaultValue { get; set; } - - /// - /// The editor that is used to manage this field. - /// - [JsonConverter(typeof(StringEnumConverter))] - public GeolocationFieldEditor Editor { get; set; } - - public override FieldProperties ToProperties() - { - var result = SimpleMapper.Map(this, new GeolocationFieldProperties()); - - return result; - } - } -} diff --git a/src/Squidex/Controllers/Api/Webhooks/Models/WebhookDto.cs b/src/Squidex/Controllers/Api/Webhooks/Models/WebhookDto.cs index f6a90e7a7..29bb7670e 100644 --- a/src/Squidex/Controllers/Api/Webhooks/Models/WebhookDto.cs +++ b/src/Squidex/Controllers/Api/Webhooks/Models/WebhookDto.cs @@ -7,10 +7,10 @@ // ========================================================================== using System; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using NodaTime; using Squidex.Infrastructure; -using System.Collections.Generic; namespace Squidex.Controllers.Api.Webhooks.Models { diff --git a/src/Squidex/Controllers/ContentApi/Generator/SchemaSwaggerGenerator.cs b/src/Squidex/Controllers/ContentApi/Generator/SchemaSwaggerGenerator.cs index 030118f70..cc5983de9 100644 --- a/src/Squidex/Controllers/ContentApi/Generator/SchemaSwaggerGenerator.cs +++ b/src/Squidex/Controllers/ContentApi/Generator/SchemaSwaggerGenerator.cs @@ -64,8 +64,7 @@ namespace Squidex.Controllers.ContentApi.Generator }; } - public SchemaSwaggerGenerator(SwaggerDocument document, string path, Schema schema, - Func schemaResolver, PartitionResolver partitionResolver) + public SchemaSwaggerGenerator(SwaggerDocument document, string path, Schema schema, Func schemaResolver, PartitionResolver partitionResolver) { this.document = document; diff --git a/src/Squidex/Controllers/ContentApi/Models/ContentsDto.cs b/src/Squidex/Controllers/ContentApi/Models/ContentsDto.cs deleted file mode 100644 index 62c345510..000000000 --- a/src/Squidex/Controllers/ContentApi/Models/ContentsDto.cs +++ /dev/null @@ -1,23 +0,0 @@ -// ========================================================================== -// ContentsDto.cs -// Squidex Headless CMS -// ========================================================================== -// Copyright (c) Squidex Group -// All rights reserved. -// ========================================================================== - -namespace Squidex.Controllers.ContentApi.Models -{ - public sealed class AssetsDto - { - /// - /// The total number of content items. - /// - public long Total { get; set; } - - /// - /// The content items. - /// - public ContentDto[] Items { get; set; } - } -} diff --git a/src/Squidex/Controllers/UI/Profile/ProfileController.cs b/src/Squidex/Controllers/UI/Profile/ProfileController.cs index 7a605e673..86456516b 100644 --- a/src/Squidex/Controllers/UI/Profile/ProfileController.cs +++ b/src/Squidex/Controllers/UI/Profile/ProfileController.cs @@ -114,7 +114,7 @@ namespace Squidex.Controllers.UI.Profile [Route("/account/profile/password-change")] public Task ChangePassword(ChangePasswordModel model) { - return MakeChangeAsync(user => userManager.ChangePasswordAsync(user, model.OldPassword, model.Password), + return MakeChangeAsync(user => userManager.ChangePasswordAsync(user, model.OldPassword, model.Password), "Password changed successfully."); } diff --git a/src/Squidex/Pipeline/ApiExceptionFilterAttribute.cs b/src/Squidex/Pipeline/ApiExceptionFilterAttribute.cs index 76ed48cef..b9bc221a1 100644 --- a/src/Squidex/Pipeline/ApiExceptionFilterAttribute.cs +++ b/src/Squidex/Pipeline/ApiExceptionFilterAttribute.cs @@ -22,7 +22,8 @@ namespace Squidex.Pipeline { private static readonly List> Handlers = new List>(); - private static void AddHandler(Func handler) where T : Exception + private static void AddHandler(Func handler) + where T : Exception { Handlers.Add(ex => ex is T typed ? handler(typed) : null); } diff --git a/src/Squidex/Squidex.csproj b/src/Squidex/Squidex.csproj index 45e8be182..0f17c1bd5 100644 --- a/src/Squidex/Squidex.csproj +++ b/src/Squidex/Squidex.csproj @@ -79,6 +79,7 @@ + @@ -89,4 +90,9 @@ - + + + ..\..\Squidex.ruleset + + + diff --git a/tests/Benchmarks/Benchmarks.csproj b/tests/Benchmarks/Benchmarks.csproj index 89d807004..93ea623c2 100644 --- a/tests/Benchmarks/Benchmarks.csproj +++ b/tests/Benchmarks/Benchmarks.csproj @@ -9,6 +9,10 @@ + + + ..\..\Squidex.ruleset + diff --git a/tests/Benchmarks/Tests/HandleEvents.cs b/tests/Benchmarks/Tests/HandleEvents.cs index 163cfd3fd..96b94fd1f 100644 --- a/tests/Benchmarks/Tests/HandleEvents.cs +++ b/tests/Benchmarks/Tests/HandleEvents.cs @@ -22,10 +22,10 @@ namespace Benchmarks.Tests { public sealed class HandleEvents : IBenchmark { + private const int NumEvents = 5000; private readonly TypeNameRegistry typeNameRegistry = new TypeNameRegistry().Map(typeof(MyEvent)); private readonly EventDataFormatter formatter; private readonly JsonSerializerSettings serializerSettings = new JsonSerializerSettings(); - private const int NumEvents = 5000; private IMongoClient mongoClient; private IMongoDatabase mongoDatabase; private IEventStore eventStore; @@ -81,7 +81,7 @@ namespace Benchmarks.Tests { var eventData = formatter.ToEventData(new Envelope(new MyEvent { EventNumber = eventId + 1 }), Guid.NewGuid()); - eventStore.AppendEventsAsync(Guid.NewGuid(), streamName, eventId - 1, new [] { eventData }).Wait(); + eventStore.AppendEventsAsync(Guid.NewGuid(), streamName, eventId - 1, new[] { eventData }).Wait(); } eventConsumer.WaitAndVerify(); diff --git a/tests/Benchmarks/Tests/HandleEventsWithManyWriters.cs b/tests/Benchmarks/Tests/HandleEventsWithManyWriters.cs index abb39e1d9..9712a8e3e 100644 --- a/tests/Benchmarks/Tests/HandleEventsWithManyWriters.cs +++ b/tests/Benchmarks/Tests/HandleEventsWithManyWriters.cs @@ -23,11 +23,11 @@ namespace Benchmarks.Tests { public sealed class HandleEventsWithManyWriters : IBenchmark { + private const int NumCommits = 200; + private const int NumStreams = 10; private readonly TypeNameRegistry typeNameRegistry = new TypeNameRegistry().Map(typeof(MyEvent)); private readonly EventDataFormatter formatter; private readonly JsonSerializerSettings serializerSettings = new JsonSerializerSettings(); - private const int NumCommits = 200; - private const int NumStreams = 10; private IMongoClient mongoClient; private IMongoDatabase mongoDatabase; private IEventStore eventStore; diff --git a/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj b/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj index e9e6bba39..56b36b28a 100644 --- a/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj +++ b/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj @@ -12,6 +12,7 @@ + @@ -22,4 +23,7 @@ + + ..\..\Squidex.ruleset + diff --git a/tests/Squidex.Domain.Apps.Read.Tests/Squidex.Domain.Apps.Read.Tests.csproj b/tests/Squidex.Domain.Apps.Read.Tests/Squidex.Domain.Apps.Read.Tests.csproj index ce136a6a7..7e0923252 100644 --- a/tests/Squidex.Domain.Apps.Read.Tests/Squidex.Domain.Apps.Read.Tests.csproj +++ b/tests/Squidex.Domain.Apps.Read.Tests/Squidex.Domain.Apps.Read.Tests.csproj @@ -21,6 +21,7 @@ + @@ -31,4 +32,7 @@ + + ..\..\Squidex.ruleset + \ No newline at end of file diff --git a/tests/Squidex.Domain.Apps.Write.Tests/Squidex.Domain.Apps.Write.Tests.csproj b/tests/Squidex.Domain.Apps.Write.Tests/Squidex.Domain.Apps.Write.Tests.csproj index d2773d9dc..79bbbc8e1 100644 --- a/tests/Squidex.Domain.Apps.Write.Tests/Squidex.Domain.Apps.Write.Tests.csproj +++ b/tests/Squidex.Domain.Apps.Write.Tests/Squidex.Domain.Apps.Write.Tests.csproj @@ -13,6 +13,7 @@ + diff --git a/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj b/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj index e3b6b8c7e..02a3fc2cc 100644 --- a/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj +++ b/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj @@ -14,6 +14,7 @@ + @@ -24,4 +25,7 @@ + + ..\..\Squidex.ruleset + \ No newline at end of file diff --git a/tests/Squidex.Infrastructure.Tests/Assets/AssetStoreTestsBase.cs b/tests/Squidex.Infrastructure.Tests/Assets/AssetStoreTestsBase.cs deleted file mode 100644 index 8a19e0013..000000000 --- a/tests/Squidex.Infrastructure.Tests/Assets/AssetStoreTestsBase.cs +++ /dev/null @@ -1,110 +0,0 @@ -// ========================================================================== -// AssetStoreTestsBase.cs -// Squidex Headless CMS -// ========================================================================== -// Copyright (c) Squidex Group -// All rights reserved. -// ========================================================================== - -using System; -using System.IO; -using System.Threading.Tasks; -using Xunit; - -// ReSharper disable VirtualMemberCallInConstructor -// ReSharper disable MemberCanBeProtected.Global - -namespace Squidex.Infrastructure.Assets -{ - public abstract class AssetStoreTests : IDisposable where T : IAssetStore - { - private readonly T sut; - - protected AssetStoreTests() - { - sut = CreateStore(); - } - - protected T Sut - { - get { return sut; } - } - - public abstract T CreateStore(); - - public abstract void Dispose(); - - - [Fact] - public Task Should_throw_exception_if_asset_to_download_is_not_found() - { - ((IExternalSystem)Sut).Connect(); - - return Assert.ThrowsAsync(() => Sut.DownloadAsync(Id(), 1, "suffix", new MemoryStream())); - } - - [Fact] - public Task Should_throw_exception_if_asset_to_copy_is_not_found() - { - ((IExternalSystem)Sut).Connect(); - - return Assert.ThrowsAsync(() => Sut.CopyTemporaryAsync(Id(), Id(), 1, null)); - } - - [Fact] - public async Task Should_read_and_write_file() - { - ((IExternalSystem)Sut).Connect(); - - var assetId = Id(); - var assetData = new MemoryStream(new byte[] { 0x1, 0x2, 0x3, 0x4 }); - - await Sut.UploadAsync(assetId, 1, "suffix", assetData); - - var readData = new MemoryStream(); - - await Sut.DownloadAsync(assetId, 1, "suffix", readData); - - Assert.Equal(assetData.ToArray(), readData.ToArray()); - } - - [Fact] - public async Task Should_commit_temporary_file() - { - ((IExternalSystem)Sut).Connect(); - - var tempId = Id(); - - var assetId = Id(); - var assetData = new MemoryStream(new byte[] { 0x1, 0x2, 0x3, 0x4 }); - - await Sut.UploadTemporaryAsync(tempId, assetData); - await Sut.CopyTemporaryAsync(tempId, assetId, 1, "suffix"); - - var readData = new MemoryStream(); - - await Sut.DownloadAsync(assetId, 1, "suffix", readData); - - Assert.Equal(assetData.ToArray(), readData.ToArray()); - } - - [Fact] - public async Task Should_ignore_when_deleting_twice() - { - ((IExternalSystem)Sut).Connect(); - - var tempId = Id(); - - var assetData = new MemoryStream(new byte[] { 0x1, 0x2, 0x3, 0x4 }); - - await Sut.UploadTemporaryAsync(tempId, assetData); - await Sut.DeleteTemporaryAsync(tempId); - await Sut.DeleteTemporaryAsync(tempId); - } - - private static string Id() - { - return Guid.NewGuid().ToString(); - } - } -} diff --git a/tests/Squidex.Infrastructure.Tests/CQRS/Commands/DefaultDomainObjectRepositoryTests.cs b/tests/Squidex.Infrastructure.Tests/CQRS/Commands/DefaultDomainObjectRepositoryTests.cs index 352a8137b..ac0388af8 100644 --- a/tests/Squidex.Infrastructure.Tests/CQRS/Commands/DefaultDomainObjectRepositoryTests.cs +++ b/tests/Squidex.Infrastructure.Tests/CQRS/Commands/DefaultDomainObjectRepositoryTests.cs @@ -56,7 +56,8 @@ namespace Squidex.Infrastructure.CQRS.Commands get { return appliedEvents; } } - public MyDomainObject(Guid id, int version) : base(id, version) + public MyDomainObject(Guid id, int version) + : base(id, version) { } diff --git a/tests/Squidex.Infrastructure.Tests/CQRS/Commands/EnrichWithTimestampCommandHandlerTests.cs b/tests/Squidex.Infrastructure.Tests/CQRS/Commands/EnrichWithTimestampCommandHandlerTests.cs deleted file mode 100644 index 53cf147a8..000000000 --- a/tests/Squidex.Infrastructure.Tests/CQRS/Commands/EnrichWithTimestampCommandHandlerTests.cs +++ /dev/null @@ -1,53 +0,0 @@ -// ========================================================================== -// EnrichWithTimestampCommandMiddlewareTests.cs -// Squidex Headless CMS -// ========================================================================== -// Copyright (c) Squidex Group -// All rights reserved. -// ========================================================================== - -using System.Threading.Tasks; -using FakeItEasy; -using NodaTime; -using Xunit; - -namespace Squidex.Infrastructure.CQRS.Commands -{ - public sealed class EnrichWithTimestampCommandMiddlewareTests - { - private sealed class MyTimestampCommand : ITimestampCommand - { - public Instant Timestamp { get; set; } - - public long? ExpectedVersion { get; set; } - } - - private readonly IClock clock = A.Fake(); - - [Fact] - public async Task Should_set_timestamp_for_timestamp_command() - { - var utc = Instant.FromUnixTimeSeconds(1000); - var sut = new EnrichWithTimestampHandler(clock); - - A.CallTo(() => clock.GetCurrentInstant()) - .Returns(utc); - - var command = new MyTimestampCommand(); - - await sut.HandleAsync(new CommandContext(command)); - - Assert.Equal(utc, command.Timestamp); - } - - [Fact] - public async Task Should_do_nothing_for_normal_command() - { - var sut = new EnrichWithTimestampHandler(clock); - - await sut.HandleAsync(new CommandContext(A.Dummy())); - - A.CallTo(() => clock.GetCurrentInstant()).MustNotHaveHappened(); - } - } -} diff --git a/tests/Squidex.Infrastructure.Tests/CQRS/Commands/InMemoryCommandBusTests.cs b/tests/Squidex.Infrastructure.Tests/CQRS/Commands/InMemoryCommandBusTests.cs index 5683a214f..67180b331 100644 --- a/tests/Squidex.Infrastructure.Tests/CQRS/Commands/InMemoryCommandBusTests.cs +++ b/tests/Squidex.Infrastructure.Tests/CQRS/Commands/InMemoryCommandBusTests.cs @@ -20,7 +20,7 @@ namespace Squidex.Infrastructure.CQRS.Commands private sealed class HandledHandler : ICommandMiddleware { - public ICommand LastCommand; + public ICommand LastCommand { get; set; } public Task HandleAsync(CommandContext context, Func next) { @@ -34,7 +34,7 @@ namespace Squidex.Infrastructure.CQRS.Commands private sealed class NonHandledHandler : ICommandMiddleware { - public ICommand LastCommand; + public ICommand LastCommand { get; private set; } public Task HandleAsync(CommandContext context, Func next) { @@ -46,7 +46,7 @@ namespace Squidex.Infrastructure.CQRS.Commands private sealed class ThrowHandledHandler : ICommandMiddleware { - public ICommand LastCommand; + public ICommand LastCommand { get; private set; } public Task HandleAsync(CommandContext context, Func next) { diff --git a/tests/Squidex.Infrastructure.Tests/CQRS/Commands/LogCommandHandlerTests.cs b/tests/Squidex.Infrastructure.Tests/CQRS/Commands/LogCommandHandlerTests.cs deleted file mode 100644 index ce4d1da30..000000000 --- a/tests/Squidex.Infrastructure.Tests/CQRS/Commands/LogCommandHandlerTests.cs +++ /dev/null @@ -1,91 +0,0 @@ -// ========================================================================== -// LogExceptionHandlerTests.cs -// Squidex Headless CMS -// ========================================================================== -// Copyright (c) Squidex Group -// All rights reserved. -// ========================================================================== - -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using FakeItEasy; -using Squidex.Infrastructure.Log; -using Squidex.Infrastructure.Tasks; -using Xunit; - -namespace Squidex.Infrastructure.CQRS.Commands -{ - public class LogExceptionHandlerTests - { - private readonly MyLog log = new MyLog(); - private readonly LogCommandMiddleware sut; - private readonly ICommand command = A.Dummy(); - - private sealed class MyLog : ISemanticLog - { - public int LogCount { get; private set; } - - public Dictionary LogLevels { get; } = new Dictionary(); - - public void Log(SemanticLogLevel logLevel, Action action) - { - LogCount++; - LogLevels[logLevel] = LogLevels.GetOrDefault(logLevel) + 1; - } - - public ISemanticLog CreateScope(Action objectWriter) - { - throw new NotSupportedException(); - } - } - - public LogExceptionHandlerTests() - { - sut = new LogCommandMiddleware(log); - } - - [Fact] - public async Task Should_log_before_and_after_request() - { - var context = new CommandContext(command); - - await sut.HandleAsync(context, () => - { - context.Complete(true); - - return TaskHelper.Done; - }); - - Assert.Equal(3, log.LogCount); - Assert.Equal(3, log.LogLevels[SemanticLogLevel.Information]); - } - - [Fact] - public async Task Should_log_error_if_command_failed() - { - var context = new CommandContext(command); - - await Assert.ThrowsAsync(async () => - { - await sut.HandleAsync(context, () => throw new InvalidOperationException()); - }); - - Assert.Equal(3, log.LogCount); - Assert.Equal(2, log.LogLevels[SemanticLogLevel.Information]); - Assert.Equal(1, log.LogLevels[SemanticLogLevel.Error]); - } - - [Fact] - public async Task Should_log_if_command_is_not_handled() - { - var context = new CommandContext(command); - - await sut.HandleAsync(context, () => TaskHelper.Done); - - Assert.Equal(4, log.LogCount); - Assert.Equal(3, log.LogLevels[SemanticLogLevel.Information]); - Assert.Equal(1, log.LogLevels[SemanticLogLevel.Fatal]); - } - } -} \ No newline at end of file diff --git a/tests/Squidex.Infrastructure.Tests/CQRS/DomainObjectBaseTests.cs b/tests/Squidex.Infrastructure.Tests/CQRS/DomainObjectBaseTests.cs index e2a1d023a..32831e219 100644 --- a/tests/Squidex.Infrastructure.Tests/CQRS/DomainObjectBaseTests.cs +++ b/tests/Squidex.Infrastructure.Tests/CQRS/DomainObjectBaseTests.cs @@ -112,11 +112,11 @@ namespace Squidex.Infrastructure.CQRS var user1a = new DO(id1, 1); object user1b = new DO(id1, 2); - object user2 = new DO(id2, 2); + object user2a = new DO(id2, 2); Assert.True(user1a.Equals(user1b)); - Assert.False(user1a.Equals(user2)); + Assert.False(user1a.Equals(user2a)); } [Fact] @@ -127,7 +127,7 @@ namespace Squidex.Infrastructure.CQRS var user1a = new DO(id1, 1); var user1b = new DO(id1, 2); - var user2 = new DO(id2, 2); + var user2 = new DO(id2, 2); Assert.Equal(user1a.GetHashCode(), user1b.GetHashCode()); diff --git a/tests/Squidex.Infrastructure.Tests/CQRS/Events/CompoundEventConsumerTests.cs b/tests/Squidex.Infrastructure.Tests/CQRS/Events/CompoundEventConsumerTests.cs index 023d3c89a..1c44e943f 100644 --- a/tests/Squidex.Infrastructure.Tests/CQRS/Events/CompoundEventConsumerTests.cs +++ b/tests/Squidex.Infrastructure.Tests/CQRS/Events/CompoundEventConsumerTests.cs @@ -55,7 +55,7 @@ namespace Squidex.Infrastructure.CQRS.Events public void Should_ignore_empty_filters() { A.CallTo(() => consumer1.EventsFilter).Returns("filter1"); - A.CallTo(() => consumer2.EventsFilter).Returns(""); + A.CallTo(() => consumer2.EventsFilter).Returns(string.Empty); var sut = new CompoundEventConsumer("my", consumer1, consumer2); diff --git a/tests/Squidex.Infrastructure.Tests/CQRS/Events/EventDataFormatterTests.cs b/tests/Squidex.Infrastructure.Tests/CQRS/Events/EventDataFormatterTests.cs index 53f3ef92c..771c24ab3 100644 --- a/tests/Squidex.Infrastructure.Tests/CQRS/Events/EventDataFormatterTests.cs +++ b/tests/Squidex.Infrastructure.Tests/CQRS/Events/EventDataFormatterTests.cs @@ -15,7 +15,7 @@ using Xunit; namespace Squidex.Infrastructure.CQRS.Events { - public class EventStoreFormatterTests + public class EventDataFormatterTests { public sealed class MyEvent : IEvent { @@ -25,7 +25,7 @@ namespace Squidex.Infrastructure.CQRS.Events private readonly JsonSerializerSettings serializerSettings = new JsonSerializerSettings(); private readonly TypeNameRegistry typeNameRegistry = new TypeNameRegistry(); - public EventStoreFormatterTests() + public EventDataFormatterTests() { serializerSettings.Converters.Add(new PropertiesBagConverter()); diff --git a/tests/Squidex.Infrastructure.Tests/Caching/InvalidatingMemoryCacheTests.cs b/tests/Squidex.Infrastructure.Tests/Caching/InvalidatingMemoryCacheTests.cs index ac1951162..1a79537d0 100644 --- a/tests/Squidex.Infrastructure.Tests/Caching/InvalidatingMemoryCacheTests.cs +++ b/tests/Squidex.Infrastructure.Tests/Caching/InvalidatingMemoryCacheTests.cs @@ -18,7 +18,8 @@ namespace Squidex.Infrastructure.Caching { public class InvalidatingMemoryCacheTests { - internal sealed class MyOptions : IOptions where T : class, new() + internal sealed class MyOptions : IOptions + where T : class, new() { public MyOptions(T value) { diff --git a/tests/Squidex.Infrastructure.Tests/CollectionExtensionsTests.cs b/tests/Squidex.Infrastructure.Tests/CollectionExtensionsTests.cs index 078743155..b7547e3de 100644 --- a/tests/Squidex.Infrastructure.Tests/CollectionExtensionsTests.cs +++ b/tests/Squidex.Infrastructure.Tests/CollectionExtensionsTests.cs @@ -11,7 +11,7 @@ using Xunit; namespace Squidex.Infrastructure { - public class CollectionExtensionTests + public class CollectionExtensionsTests { private readonly Dictionary valueDictionary = new Dictionary(); private readonly Dictionary> listDictionary = new Dictionary>(); diff --git a/tests/Squidex.Infrastructure.Tests/DispatchingTests.cs b/tests/Squidex.Infrastructure.Tests/DispatchingTests.cs index ef7696af6..f400842ef 100644 --- a/tests/Squidex.Infrastructure.Tests/DispatchingTests.cs +++ b/tests/Squidex.Infrastructure.Tests/DispatchingTests.cs @@ -19,11 +19,21 @@ namespace Squidex.Infrastructure { public sealed class DispatchingTests { - private interface IMyEvent { } + private interface IMyEvent + { + } + + private class MyEventA : IMyEvent + { + } - private class MyEventA : IMyEvent { } - private class MyEventB : IMyEvent { } - private class MyUnknown : IMyEvent { } + private class MyEventB : IMyEvent + { + } + + private class MyUnknown : IMyEvent + { + } private class MyAsyncFuncConsumer { diff --git a/tests/Squidex.Infrastructure.Tests/GuardTests.cs b/tests/Squidex.Infrastructure.Tests/GuardTests.cs index 9d9dc7f18..481f3305c 100644 --- a/tests/Squidex.Infrastructure.Tests/GuardTests.cs +++ b/tests/Squidex.Infrastructure.Tests/GuardTests.cs @@ -12,23 +12,23 @@ using Xunit; namespace Squidex.Infrastructure { - public sealed class MyValidatableValid : IValidatable + public class GuardTests { - public void Validate(IList errors) + private sealed class MyValidatableValid : IValidatable { + public void Validate(IList errors) + { + } } - } - public sealed class MyValidatableInvalid : IValidatable - { - public void Validate(IList errors) + private sealed class MyValidatableInvalid : IValidatable { - errors.Add(new ValidationError("error", "error")); + public void Validate(IList errors) + { + errors.Add(new ValidationError("error", "error")); + } } - } - public class GuardTest - { [Theory] [InlineData("")] [InlineData(" ")] diff --git a/tests/Squidex.Infrastructure.Tests/Http/DumpFormatterTests.cs b/tests/Squidex.Infrastructure.Tests/Http/DumpFormatterTests.cs index 1adc1e92e..517fa72a1 100644 --- a/tests/Squidex.Infrastructure.Tests/Http/DumpFormatterTests.cs +++ b/tests/Squidex.Infrastructure.Tests/Http/DumpFormatterTests.cs @@ -13,6 +13,8 @@ using System.Net.Http.Headers; using System.Text; using Xunit; +#pragma warning disable SA1122 // Use string.Empty for empty strings + namespace Squidex.Infrastructure.Http { public class DumpFormatterTests @@ -41,7 +43,7 @@ namespace Squidex.Infrastructure.Http [Fact] public void Should_format_dump_without_content() { - var httpRequest = CreateRequest(); + var httpRequest = CreateRequest(); var httpResponse = CreateResponse(); var dump = DumpFormatter.BuildDump(httpRequest, httpResponse, null, null, TimeSpan.FromMinutes(1), false); @@ -67,7 +69,7 @@ namespace Squidex.Infrastructure.Http [Fact] public void Should_format_dump_with_content_without_timeout() { - var httpRequest = CreateRequest(new StringContent("Hello Squidex", Encoding.UTF8, "text/plain")); + var httpRequest = CreateRequest(new StringContent("Hello Squidex", Encoding.UTF8, "text/plain")); var httpResponse = CreateResponse(new StringContent("Hello Back", Encoding.UTF8, "text/plain")); var dump = DumpFormatter.BuildDump(httpRequest, httpResponse, "Hello Squidex", "Hello Back", TimeSpan.FromMinutes(1), false); diff --git a/tests/Squidex.Infrastructure.Tests/InMemoryPubSubTests.cs b/tests/Squidex.Infrastructure.Tests/InMemoryPubSubTests.cs index f455bd4b1..56ec23778 100644 --- a/tests/Squidex.Infrastructure.Tests/InMemoryPubSubTests.cs +++ b/tests/Squidex.Infrastructure.Tests/InMemoryPubSubTests.cs @@ -45,7 +45,6 @@ namespace Squidex.Infrastructure Assert.Equal(new[] { "1", "1", "2", "2" }, channel1Events.ToArray()); Assert.Equal(new[] { "a", "b" }, channel2Events.ToArray()); - } } } diff --git a/tests/Squidex.Infrastructure.Tests/Log/SemanticLogTests.cs b/tests/Squidex.Infrastructure.Tests/Log/SemanticLogTests.cs index 322ba7825..b6ddf9df1 100644 --- a/tests/Squidex.Infrastructure.Tests/Log/SemanticLogTests.cs +++ b/tests/Squidex.Infrastructure.Tests/Log/SemanticLogTests.cs @@ -49,7 +49,7 @@ namespace Squidex.Infrastructure.Log appenders.Add(new TimestampLogAppender(() => now)); - Log.LogFatal(w => {}); + Log.LogFatal(w => { /* Do Nothing */ }); var expected = LogTest(w => w diff --git a/tests/Squidex.Infrastructure.Tests/PropertiesBagTests.cs b/tests/Squidex.Infrastructure.Tests/PropertiesBagTests.cs index 2afa4703b..a1603715f 100644 --- a/tests/Squidex.Infrastructure.Tests/PropertiesBagTests.cs +++ b/tests/Squidex.Infrastructure.Tests/PropertiesBagTests.cs @@ -20,13 +20,13 @@ using Xunit; namespace Squidex.Infrastructure { - public class PropertiesBagTest + public class PropertiesBagTests { private readonly CultureInfo c = CultureInfo.InvariantCulture; private readonly PropertiesBag bag = new PropertiesBag(); private readonly dynamic dynamicBag; - public PropertiesBagTest() + public PropertiesBagTests() { dynamicBag = bag; } @@ -39,7 +39,7 @@ namespace Squidex.Infrastructure serializerSettings.Converters.Add(new PropertiesBagConverter()); var content = JsonConvert.SerializeObject(bag, serializerSettings); - var output = JsonConvert.DeserializeObject(content, serializerSettings); + var output = JsonConvert.DeserializeObject(content, serializerSettings); Assert.Equal(bag.Count, output.Count); } @@ -277,7 +277,7 @@ namespace Squidex.Infrastructure [Fact] public void Should_convert_from_guid_value() { - var id = new Guid(); + var id = Guid.NewGuid(); bag.Set("Key", id); @@ -287,7 +287,7 @@ namespace Squidex.Infrastructure [Fact] public void Should_convert_from_guid_string() { - var id = new Guid(); + var id = Guid.NewGuid(); bag.Set("Key", id.ToString()); diff --git a/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj b/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj index d99b3ad5f..97cf8a852 100644 --- a/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj +++ b/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj @@ -16,6 +16,7 @@ + @@ -26,4 +27,7 @@ + + ..\..\Squidex.ruleset + \ No newline at end of file diff --git a/tests/Squidex.Infrastructure.Tests/UsageTracking/BackgroundUsageTrackerTests.cs b/tests/Squidex.Infrastructure.Tests/UsageTracking/BackgroundUsageTrackerTests.cs index a0f4a49b6..aa9ae45a0 100644 --- a/tests/Squidex.Infrastructure.Tests/UsageTracking/BackgroundUsageTrackerTests.cs +++ b/tests/Squidex.Infrastructure.Tests/UsageTracking/BackgroundUsageTrackerTests.cs @@ -76,8 +76,7 @@ namespace Squidex.Infrastructure.UsageTracking [Fact] public async Task Should_fill_missing_days() { - var dateFrom = DateTime.Today; - var dateTo = DateTime.Today.AddDays(7); + DateTime dateFrom = DateTime.Today, dateTo = DateTime.Today.AddDays(7); IReadOnlyList originalData = new List { diff --git a/tools/GenerateLanguages/GenerateLanguages.csproj b/tools/GenerateLanguages/GenerateLanguages.csproj index ae2311eb6..0e6127d69 100644 --- a/tools/GenerateLanguages/GenerateLanguages.csproj +++ b/tools/GenerateLanguages/GenerateLanguages.csproj @@ -3,4 +3,7 @@ netcoreapp2.0 Exe + + ..\..\Squidex.ruleset + diff --git a/tools/Migrate_01/Migrate_01.csproj b/tools/Migrate_01/Migrate_01.csproj index ce2521dbb..a512174cc 100644 --- a/tools/Migrate_01/Migrate_01.csproj +++ b/tools/Migrate_01/Migrate_01.csproj @@ -5,5 +5,9 @@ + + + ..\..\Squidex.ruleset +