Browse Source

Guideline fixes

pull/107/head
Sebastian Stehle 9 years ago
parent
commit
e6b1e942e6
  1. 6
      src/Squidex.Domain.Apps.Core/Contents/ContentData.cs
  2. 1
      src/Squidex.Domain.Apps.Core/Contents/IdContentData.cs
  3. 1
      src/Squidex.Domain.Apps.Core/InvariantPartitioning.cs
  4. 10
      src/Squidex.Domain.Apps.Core/Schemas/AssetsFieldProperties.cs
  5. 2
      src/Squidex.Domain.Apps.Core/Schemas/AssetsValue.cs
  6. 10
      src/Squidex.Domain.Apps.Core/Schemas/BooleanFieldProperties.cs
  7. 3
      src/Squidex.Domain.Apps.Core/Schemas/CloneableBase.cs
  8. 25
      src/Squidex.Domain.Apps.Core/Schemas/DateTimeFieldProperties.cs
  9. 15
      src/Squidex.Domain.Apps.Core/Schemas/FieldProperties.cs
  10. 5
      src/Squidex.Domain.Apps.Core/Schemas/Field_Generic.cs
  11. 5
      src/Squidex.Domain.Apps.Core/Schemas/GeolocationFieldProperties.cs
  12. 10
      src/Squidex.Domain.Apps.Core/Schemas/NamedElementPropertiesBase.cs
  13. 25
      src/Squidex.Domain.Apps.Core/Schemas/NumberFieldProperties.cs
  14. 2
      src/Squidex.Domain.Apps.Core/Schemas/ReferencesField.cs
  15. 15
      src/Squidex.Domain.Apps.Core/Schemas/ReferencesFieldProperties.cs
  16. 2
      src/Squidex.Domain.Apps.Core/Schemas/ReferencesValue.cs
  17. 35
      src/Squidex.Domain.Apps.Core/Schemas/StringFieldProperties.cs
  18. 1
      src/Squidex.Domain.Apps.Core/Schemas/ValidationContext.cs
  19. 3
      src/Squidex.Domain.Apps.Core/Schemas/Validators/RangeValidator.cs
  20. 2
      src/Squidex.Domain.Apps.Core/Schemas/Validators/RequiredStringValidator.cs
  21. 5
      src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/ContentDataProperty.cs
  22. 5
      src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/ContentFieldProperty.cs
  23. 27
      src/Squidex.Domain.Apps.Core/Scripting/ContentWrapper/JsonMapper.cs
  24. 4
      src/Squidex.Domain.Apps.Core/Squidex.Domain.Apps.Core.csproj
  25. 4
      src/Squidex.Domain.Apps.Events/Squidex.Domain.Apps.Events.csproj
  26. 4
      src/Squidex.Domain.Apps.Read.MongoDb/Squidex.Domain.Apps.Read.MongoDb.csproj
  27. 4
      src/Squidex.Domain.Apps.Read/Squidex.Domain.Apps.Read.csproj
  28. 4
      src/Squidex.Domain.Apps.Write/Squidex.Domain.Apps.Write.csproj
  29. 4
      src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj
  30. 4
      src/Squidex.Domain.Users/Squidex.Domain.Users.csproj
  31. 4
      src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj
  32. 2
      src/Squidex.Infrastructure.GetEventStore/CQRS/Events/GetEventStore.cs
  33. 8
      src/Squidex.Infrastructure.GetEventStore/CQRS/Events/GetEventStoreSubscription.cs
  34. 4
      src/Squidex.Infrastructure.GetEventStore/Squidex.Infrastructure.GetEventStore.csproj
  35. 4
      src/Squidex.Infrastructure.GoogleCloud/Squidex.Infrastructure.GoogleCloud.csproj
  36. 4
      src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj
  37. 4
      src/Squidex.Infrastructure.RabbitMq/Squidex.Infrastructure.RabbitMq.csproj
  38. 4
      src/Squidex.Infrastructure.Redis/Squidex.Infrastructure.Redis.csproj
  39. 14
      src/Squidex.Infrastructure/CollectionExtensions.cs
  40. 4
      src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
  41. 4
      src/Squidex.Shared/Squidex.Shared.csproj
  42. 1
      src/Squidex/Config/Domain/StoreMongoDbModule.cs
  43. 2
      src/Squidex/Config/Domain/WriteModule.cs
  44. 2
      src/Squidex/Config/Identity/GithubHandler.cs
  45. 4
      src/Squidex/Config/Identity/IdentityUsage.cs
  46. 1
      src/Squidex/Config/Identity/LazyClientStore.cs
  47. 2
      src/Squidex/Controllers/Api/Apps/AppClientsController.cs
  48. 1
      src/Squidex/Controllers/Api/Assets/AssetContentController.cs
  49. 3
      src/Squidex/Controllers/Api/Schemas/Models/AddFieldDto.cs
  50. 1
      src/Squidex/Controllers/Api/Schemas/Models/Converters/JsonInheritanceConverter.cs
  51. 3
      src/Squidex/Controllers/Api/Schemas/Models/CreateSchemaFieldDto.cs
  52. 38
      src/Squidex/Controllers/Api/Schemas/Models/GeolocationPropertiesDto.cs
  53. 2
      src/Squidex/Controllers/Api/Webhooks/Models/WebhookDto.cs
  54. 3
      src/Squidex/Controllers/ContentApi/Generator/SchemaSwaggerGenerator.cs
  55. 23
      src/Squidex/Controllers/ContentApi/Models/ContentsDto.cs
  56. 2
      src/Squidex/Controllers/UI/Profile/ProfileController.cs
  57. 3
      src/Squidex/Pipeline/ApiExceptionFilterAttribute.cs
  58. 8
      src/Squidex/Squidex.csproj
  59. 4
      tests/Benchmarks/Benchmarks.csproj
  60. 4
      tests/Benchmarks/Tests/HandleEvents.cs
  61. 4
      tests/Benchmarks/Tests/HandleEventsWithManyWriters.cs
  62. 4
      tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj
  63. 4
      tests/Squidex.Domain.Apps.Read.Tests/Squidex.Domain.Apps.Read.Tests.csproj
  64. 1
      tests/Squidex.Domain.Apps.Write.Tests/Squidex.Domain.Apps.Write.Tests.csproj
  65. 4
      tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj
  66. 110
      tests/Squidex.Infrastructure.Tests/Assets/AssetStoreTestsBase.cs
  67. 3
      tests/Squidex.Infrastructure.Tests/CQRS/Commands/DefaultDomainObjectRepositoryTests.cs
  68. 53
      tests/Squidex.Infrastructure.Tests/CQRS/Commands/EnrichWithTimestampCommandHandlerTests.cs
  69. 6
      tests/Squidex.Infrastructure.Tests/CQRS/Commands/InMemoryCommandBusTests.cs
  70. 91
      tests/Squidex.Infrastructure.Tests/CQRS/Commands/LogCommandHandlerTests.cs
  71. 6
      tests/Squidex.Infrastructure.Tests/CQRS/DomainObjectBaseTests.cs
  72. 2
      tests/Squidex.Infrastructure.Tests/CQRS/Events/CompoundEventConsumerTests.cs
  73. 4
      tests/Squidex.Infrastructure.Tests/CQRS/Events/EventDataFormatterTests.cs
  74. 3
      tests/Squidex.Infrastructure.Tests/Caching/InvalidatingMemoryCacheTests.cs
  75. 2
      tests/Squidex.Infrastructure.Tests/CollectionExtensionsTests.cs
  76. 18
      tests/Squidex.Infrastructure.Tests/DispatchingTests.cs
  77. 20
      tests/Squidex.Infrastructure.Tests/GuardTests.cs
  78. 6
      tests/Squidex.Infrastructure.Tests/Http/DumpFormatterTests.cs
  79. 1
      tests/Squidex.Infrastructure.Tests/InMemoryPubSubTests.cs
  80. 2
      tests/Squidex.Infrastructure.Tests/Log/SemanticLogTests.cs
  81. 10
      tests/Squidex.Infrastructure.Tests/PropertiesBagTests.cs
  82. 4
      tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj
  83. 3
      tests/Squidex.Infrastructure.Tests/UsageTracking/BackgroundUsageTrackerTests.cs
  84. 3
      tools/GenerateLanguages/GenerateLanguages.csproj
  85. 4
      tools/Migrate_01/Migrate_01.csproj

6
src/Squidex.Domain.Apps.Core/Contents/ContentData.cs

@ -34,7 +34,8 @@ namespace Squidex.Domain.Apps.Core.Contents
{
}
protected static TResult Merge<TResult>(TResult source, TResult target) where TResult : ContentData<T>
protected static TResult Merge<TResult>(TResult source, TResult target)
where TResult : ContentData<T>
{
if (ReferenceEquals(target, source))
{
@ -54,7 +55,8 @@ namespace Squidex.Domain.Apps.Core.Contents
return target;
}
protected static TResult Clean<TResult>(TResult source, TResult target) where TResult : ContentData<T>
protected static TResult Clean<TResult>(TResult source, TResult target)
where TResult : ContentData<T>
{
foreach (var fieldValue in source.ValidValues)
{

1
src/Squidex.Domain.Apps.Core/Contents/IdContentData.cs

@ -113,7 +113,6 @@ namespace Squidex.Domain.Apps.Core.Contents
}
else
{
result[field.Name] = fieldValue.Value;
}
}

1
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;

10
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();

2
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<Guid> EmptyAssetIds = new List<Guid>();
private static readonly List<Guid> EmptyAssetIds = new List<Guid>();
public IReadOnlyList<Guid> AssetIds { get; }

10
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();

3
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<T>(Action<T> updater) where T : CloneableBase
protected T Clone<T>(Action<T> updater)
where T : CloneableBase
{
var clone = (T)MemberwiseClone();

25
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();

15
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();

5
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<T> : Field where T : FieldProperties
public abstract class Field<T> : Field
where T : FieldProperties
{
private T properties;

5
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();

10
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();

25
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<double> 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();

2
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<Guid> deletedReferencedIds)

15
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();

2
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<Guid> EmptyReferencedIds = new List<Guid>();
private static readonly List<Guid> EmptyReferencedIds = new List<Guid>();
public IReadOnlyList<Guid> ContentIds { get; }

35
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<string> 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();

1
src/Squidex.Domain.Apps.Core/Schemas/ValidationContext.cs

@ -25,7 +25,6 @@ namespace Squidex.Domain.Apps.Core.Schemas
Func<IEnumerable<Guid>, Task<IReadOnlyList<Guid>>> checkAsset)
: this(checkContent, checkAsset, false)
{
}
private ValidationContext(

3
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<T> : IValidator where T : struct, IComparable<T>
public sealed class RangeValidator<T> : IValidator
where T : struct, IComparable<T>
{
private readonly T? min;
private readonly T? max;

2
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)))
{

5
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))

5
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))

27
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())

4
src/Squidex.Domain.Apps.Core/Squidex.Domain.Apps.Core.csproj

@ -15,7 +15,11 @@
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
<PackageReference Include="NJsonSchema" Version="9.5.0" />
<PackageReference Include="NodaTime" Version="2.2.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.Collections.Immutable" Version="1.4.0" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
src/Squidex.Domain.Apps.Events/Squidex.Domain.Apps.Events.csproj

@ -12,6 +12,10 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="NodaTime" Version="2.2.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
src/Squidex.Domain.Apps.Read.MongoDb/Squidex.Domain.Apps.Read.MongoDb.csproj

@ -16,6 +16,10 @@
<ItemGroup>
<PackageReference Include="Microsoft.OData.Core" Version="7.3.1" />
<PackageReference Include="MongoDB.Driver" Version="2.4.4" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
src/Squidex.Domain.Apps.Read/Squidex.Domain.Apps.Read.csproj

@ -15,7 +15,11 @@
<PackageReference Include="GraphQL" Version="0.17.2" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="1.1.2" />
<PackageReference Include="NodaTime" Version="2.2.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.Threading.Tasks.Dataflow" Version="4.8.0" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
src/Squidex.Domain.Apps.Write/Squidex.Domain.Apps.Write.csproj

@ -15,6 +15,10 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="NodaTime" Version="2.2.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj

@ -17,6 +17,10 @@
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="1.1.2" />
<PackageReference Include="Microsoft.Win32.Registry" Version="4.4.0" />
<PackageReference Include="MongoDB.Driver" Version="2.4.4" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.Security.Principal.Windows" Version="4.4.0" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
src/Squidex.Domain.Users/Squidex.Domain.Users.csproj

@ -13,7 +13,11 @@
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="1.1.2" />
<PackageReference Include="Microsoft.Win32.Registry" Version="4.4.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.Linq.Queryable" Version="4.3.0" />
<PackageReference Include="System.Security.Principal.Windows" Version="4.4.0" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj

@ -4,9 +4,13 @@
<RootNamespace>Squidex.Infrastructure</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="WindowsAzure.Storage" Version="8.4.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Squidex.Infrastructure\Squidex.Infrastructure.csproj" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

2
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<IReadOnlyList<StoredEvent>> GetEventsAsync(string streamName)

8
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<string, bool> subscriptionsCreated = new ConcurrentDictionary<string, bool>();
private static readonly ConcurrentDictionary<string, bool> SubscriptionsCreated = new ConcurrentDictionary<string, bool>();
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();

4
src/Squidex.Infrastructure.GetEventStore/Squidex.Infrastructure.GetEventStore.csproj

@ -9,8 +9,12 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="EventStore.ClientAPI.NetCore" Version="4.0.0-alpha-1" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Squidex.Infrastructure\Squidex.Infrastructure.csproj" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
src/Squidex.Infrastructure.GoogleCloud/Squidex.Infrastructure.GoogleCloud.csproj

@ -9,9 +9,13 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Google.Cloud.Storage.V1" Version="2.0.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Squidex.Infrastructure\Squidex.Infrastructure.csproj" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj

@ -12,6 +12,10 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="MongoDB.Driver" Version="2.4.4" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
src/Squidex.Infrastructure.RabbitMq/Squidex.Infrastructure.RabbitMq.csproj

@ -9,9 +9,13 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="RabbitMQ.Client" Version="5.0.1" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Squidex.Infrastructure\Squidex.Infrastructure.csproj" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
src/Squidex.Infrastructure.Redis/Squidex.Infrastructure.Redis.csproj

@ -12,6 +12,10 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="StackExchange.Redis.StrongName" Version="1.2.6" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

14
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<TKey, TValue>(this IReadOnlyDictionary<TKey, TValue> dictionary, TKey key) where TValue : class, new()
public static TValue GetOrNew<TKey, TValue>(this IReadOnlyDictionary<TKey, TValue> dictionary, TKey key)
where TValue : class, new()
{
return dictionary.GetOrCreate(key, _ => new TValue());
}
public static TValue GetOrAddNew<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key) where TValue : class, new()
public static TValue GetOrAddNew<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key)
where TValue : class, new()
{
return dictionary.GetOrAdd(key, _ => new TValue());
}

4
src/Squidex.Infrastructure/Squidex.Infrastructure.csproj

@ -13,10 +13,14 @@
<PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.2" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
<PackageReference Include="NodaTime" Version="2.2.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.Linq" Version="4.3.0" />
<PackageReference Include="System.Reactive" Version="3.1.1" />
<PackageReference Include="System.Reflection.TypeExtensions" Version="4.4.0" />
<PackageReference Include="System.Security.Claims" Version="4.3.0" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
src/Squidex.Shared/Squidex.Shared.csproj

@ -7,6 +7,10 @@
<DebugSymbols>True</DebugSymbols>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.Security.Claims" Version="4.3.0" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

1
src/Squidex/Config/Domain/StoreMongoDbModule.cs

@ -181,7 +181,6 @@ namespace Squidex.Config.Domain
.AsSelf()
.SingleInstance();
builder.Register(c =>
new CompoundEventConsumer(
c.Resolve<MongoSchemaRepository>(),

2
src/Squidex/Config/Domain/WriteModule.cs

@ -105,7 +105,7 @@ namespace Squidex.Config.Domain
{
var fieldRegistry = c.Resolve<FieldRegistry>();
return (id => new SchemaDomainObject(id, -1, fieldRegistry));
return id => new SchemaDomainObject(id, -1, fieldRegistry);
})
.AsSelf()
.SingleInstance();

2
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<string>("login");
var userName = context.User.Value<string>("name");
var userName = context.User.Value<string>("name");
if (!string.IsNullOrEmpty(userName))
{

4
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);
}

1
src/Squidex/Config/Identity/LazyClientStore.cs

@ -58,7 +58,6 @@ namespace Squidex.Config.Identity
if (appClient == null)
{
return null;
}
client = CreateClientFromApp(clientId, appClient);

2
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);
}

1
src/Squidex/Controllers/Api/Assets/AssetContentController.cs

@ -99,7 +99,6 @@ namespace Squidex.Controllers.Api.Assets
await destinationStream.CopyToAsync(bodyStream);
}
}
}
}

3
src/Squidex/Controllers/Api/Schemas/Models/AddFieldDto.cs

@ -30,5 +30,4 @@ namespace Squidex.Controllers.Api.Schemas.Models
[Required]
public FieldPropertiesDto Properties { get; set; }
}
}
}

1
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

3
src/Squidex/Controllers/Api/Schemas/Models/CreateSchemaFieldDto.cs

@ -45,5 +45,4 @@ namespace Squidex.Controllers.Api.Schemas.Models
[Required]
public FieldPropertiesDto Properties { get; set; }
}
}
}

38
src/Squidex/Controllers/Api/Schemas/Models/GeolocationPropertiesDto.cs

@ -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
{
/// <summary>
/// The default value for the field value.
/// </summary>
public bool? DefaultValue { get; set; }
/// <summary>
/// The editor that is used to manage this field.
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public GeolocationFieldEditor Editor { get; set; }
public override FieldProperties ToProperties()
{
var result = SimpleMapper.Map(this, new GeolocationFieldProperties());
return result;
}
}
}

2
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
{

3
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<string, JsonSchema4, JsonSchema4> schemaResolver, PartitionResolver partitionResolver)
public SchemaSwaggerGenerator(SwaggerDocument document, string path, Schema schema, Func<string, JsonSchema4, JsonSchema4> schemaResolver, PartitionResolver partitionResolver)
{
this.document = document;

23
src/Squidex/Controllers/ContentApi/Models/ContentsDto.cs

@ -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
{
/// <summary>
/// The total number of content items.
/// </summary>
public long Total { get; set; }
/// <summary>
/// The content items.
/// </summary>
public ContentDto[] Items { get; set; }
}
}

2
src/Squidex/Controllers/UI/Profile/ProfileController.cs

@ -114,7 +114,7 @@ namespace Squidex.Controllers.UI.Profile
[Route("/account/profile/password-change")]
public Task<IActionResult> 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.");
}

3
src/Squidex/Pipeline/ApiExceptionFilterAttribute.cs

@ -22,7 +22,8 @@ namespace Squidex.Pipeline
{
private static readonly List<Func<Exception, IActionResult>> Handlers = new List<Func<Exception, IActionResult>>();
private static void AddHandler<T>(Func<T, IActionResult> handler) where T : Exception
private static void AddHandler<T>(Func<T, IActionResult> handler)
where T : Exception
{
Handlers.Add(ex => ex is T typed ? handler(typed) : null);
}

8
src/Squidex/Squidex.csproj

@ -79,6 +79,7 @@
<PackageReference Include="OpenCover" Version="4.6.519" />
<PackageReference Include="ReportGenerator" Version="2.5.11" />
<PackageReference Include="StackExchange.Redis.StrongName" Version="1.2.6" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.Linq" Version="4.3.0" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
</ItemGroup>
@ -89,4 +90,9 @@
<ContentWithTargetPath Include="@(_DocumentationFile->'%(FullPath)')" RelativePath="%(_DocumentationFile.Identity)" TargetPath="%(_DocumentationFile.Filename)%(_DocumentationFile.Extension)" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
</Target>
</Project>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
tests/Benchmarks/Benchmarks.csproj

@ -9,6 +9,10 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="MongoDB.Driver" Version="2.4.4" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
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<IEvent>(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();

4
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;

4
tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj

@ -12,6 +12,7 @@
<PackageReference Include="FluentAssertions" Version="4.19.4" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
<PackageReference Include="Moq" Version="4.7.99" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
@ -22,4 +23,7 @@
<ItemGroup>
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
tests/Squidex.Domain.Apps.Read.Tests/Squidex.Domain.Apps.Read.Tests.csproj

@ -21,6 +21,7 @@
<PackageReference Include="FluentAssertions" Version="4.19.4" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
<PackageReference Include="MongoDB.Driver" Version="2.4.4" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
@ -31,4 +32,7 @@
<ItemGroup>
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

1
tests/Squidex.Domain.Apps.Write.Tests/Squidex.Domain.Apps.Write.Tests.csproj

@ -13,6 +13,7 @@
<PackageReference Include="FakeItEasy" Version="4.0.0" />
<PackageReference Include="FluentAssertions" Version="4.19.4" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />

4
tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj

@ -14,6 +14,7 @@
<PackageReference Include="FakeItEasy" Version="4.0.0" />
<PackageReference Include="FluentAssertions" Version="4.19.4" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
@ -24,4 +25,7 @@
<ItemGroup>
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

110
tests/Squidex.Infrastructure.Tests/Assets/AssetStoreTestsBase.cs

@ -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<T> : 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<AssetNotFoundException>(() => 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<AssetNotFoundException>(() => 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();
}
}
}

3
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)
{
}

53
tests/Squidex.Infrastructure.Tests/CQRS/Commands/EnrichWithTimestampCommandHandlerTests.cs

@ -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<IClock>();
[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<ICommand>()));
A.CallTo(() => clock.GetCurrentInstant()).MustNotHaveHappened();
}
}
}

6
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<Task> 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<Task> 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<Task> next)
{

91
tests/Squidex.Infrastructure.Tests/CQRS/Commands/LogCommandHandlerTests.cs

@ -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<ICommand>();
private sealed class MyLog : ISemanticLog
{
public int LogCount { get; private set; }
public Dictionary<SemanticLogLevel, int> LogLevels { get; } = new Dictionary<SemanticLogLevel, int>();
public void Log(SemanticLogLevel logLevel, Action<IObjectWriter> action)
{
LogCount++;
LogLevels[logLevel] = LogLevels.GetOrDefault(logLevel) + 1;
}
public ISemanticLog CreateScope(Action<IObjectWriter> 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<InvalidOperationException>(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]);
}
}
}

6
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());

2
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);

4
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());

3
tests/Squidex.Infrastructure.Tests/Caching/InvalidatingMemoryCacheTests.cs

@ -18,7 +18,8 @@ namespace Squidex.Infrastructure.Caching
{
public class InvalidatingMemoryCacheTests
{
internal sealed class MyOptions<T> : IOptions<T> where T : class, new()
internal sealed class MyOptions<T> : IOptions<T>
where T : class, new()
{
public MyOptions(T value)
{

2
tests/Squidex.Infrastructure.Tests/CollectionExtensionsTests.cs

@ -11,7 +11,7 @@ using Xunit;
namespace Squidex.Infrastructure
{
public class CollectionExtensionTests
public class CollectionExtensionsTests
{
private readonly Dictionary<int, int> valueDictionary = new Dictionary<int, int>();
private readonly Dictionary<int, List<int>> listDictionary = new Dictionary<int, List<int>>();

18
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
{

20
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<ValidationError> errors)
private sealed class MyValidatableValid : IValidatable
{
public void Validate(IList<ValidationError> errors)
{
}
}
}
public sealed class MyValidatableInvalid : IValidatable
{
public void Validate(IList<ValidationError> errors)
private sealed class MyValidatableInvalid : IValidatable
{
errors.Add(new ValidationError("error", "error"));
public void Validate(IList<ValidationError> errors)
{
errors.Add(new ValidationError("error", "error"));
}
}
}
public class GuardTest
{
[Theory]
[InlineData("")]
[InlineData(" ")]

6
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);

1
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());
}
}
}

2
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

10
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<PropertiesBag>(content, serializerSettings);
var output = JsonConvert.DeserializeObject<PropertiesBag>(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());

4
tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj

@ -16,6 +16,7 @@
<PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="1.1.2" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
@ -26,4 +27,7 @@
<ItemGroup>
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

3
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<StoredUsage> originalData = new List<StoredUsage>
{

3
tools/GenerateLanguages/GenerateLanguages.csproj

@ -3,4 +3,7 @@
<TargetFramework>netcoreapp2.0</TargetFramework>
<OutputType>Exe</OutputType>
</PropertyGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

4
tools/Migrate_01/Migrate_01.csproj

@ -5,5 +5,9 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MongoDB.Driver" Version="2.4.4" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
</ItemGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>..\..\Squidex.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>

Loading…
Cancel
Save