diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index bde2d00c7..3899d0143 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -178,7 +178,7 @@ jobs:
if: ${{ success() || steps.report.conclusion == 'failure' }}
run: cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY
- name: Create code coverage report
- uses: danielpalme/ReportGenerator-GitHub-Action@5.3.11
+ uses: danielpalme/ReportGenerator-GitHub-Action@5.4.1
if: ${{ success() || steps.report.conclusion == 'failure' }}
with:
reports: "./src/HomeInventory/coverage.cobertura.xml" # REQUIRED # The coverage reports that should be parsed (separated by semicolon). Globbing is supported.
@@ -293,7 +293,7 @@ jobs:
- name: Install Living Documentation Tool
run: dotnet tool install --global SpecFlow.Plus.LivingDoc.CLI
- name: Generate Living Documentation Specification
- run: livingdoc test-assembly "HomeInventory.Tests.Acceptance/bin/Release/net8/HomeInventory.Tests.Acceptance.dll" -t "HomeInventory.Tests.Acceptance/bin/Release/net8/TestExecution.json" -o "./Acceptance/AcceptanceTestResults.html"
+ run: livingdoc test-assembly "HomeInventory.Tests.Acceptance/bin/Release/net9/HomeInventory.Tests.Acceptance.dll" -t "HomeInventory.Tests.Acceptance/bin/Release/net9/TestExecution.json" -o "./Acceptance/AcceptanceTestResults.html"
working-directory: ./src/HomeInventory
- name: Publish Specflow Test Results
if: success() || failure()
diff --git a/.gitignore b/.gitignore
index 3e895aa13..d0709c8d6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -350,3 +350,17 @@ MigrationBackup/
.ionide/
*.feature.cs
src/HomeInventory/coverage
+
+# Default ignored files for Idea
+/shelf/
+/workspace.xml
+# Rider ignored files
+/projectSettingsUpdater.xml
+/.idea.HomeInventory.iml
+/contentModel.xml
+/modules.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 000000000..8f5aaa3f6
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,13 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Rider ignored files
+/.idea.HomeInventory.iml
+/projectSettingsUpdater.xml
+/modules.xml
+/contentModel.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/indexLayout.xml b/.idea/indexLayout.xml
new file mode 100644
index 000000000..7b08163ce
--- /dev/null
+++ b/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 000000000..35eb1ddfb
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/HomeInventory/.editorconfig b/src/HomeInventory/.editorconfig
index 3dd0c3bb6..a8aa075ca 100644
--- a/src/HomeInventory/.editorconfig
+++ b/src/HomeInventory/.editorconfig
@@ -4,7 +4,7 @@
dotnet_diagnostic.CA2016.severity = warning
# IDE0008: Use explicit type
-csharp_style_var_elsewhere = true
+csharp_style_var_elsewhere = true:suggestion
[*.cs]
#### Naming styles ####
@@ -30,21 +30,30 @@ dotnet_naming_style.begin_with__.capitalization = camel_case
csharp_indent_labels = one_less_than_current
csharp_using_directive_placement = outside_namespace:silent
csharp_prefer_simple_using_statement = true:suggestion
-csharp_prefer_braces = true:silent
+csharp_prefer_braces = true:suggestion
csharp_style_namespace_declarations = file_scoped:suggestion
csharp_style_prefer_method_group_conversion = true:silent
csharp_style_prefer_top_level_statements = true:silent
-csharp_style_expression_bodied_methods = false:silent
-csharp_style_expression_bodied_constructors = false:silent
-csharp_style_expression_bodied_operators = false:silent
-csharp_style_expression_bodied_properties = true:silent
-csharp_style_expression_bodied_indexers = true:silent
-csharp_style_expression_bodied_accessors = true:silent
-csharp_style_expression_bodied_lambdas = true:silent
-csharp_style_expression_bodied_local_functions = false:silent
+csharp_style_expression_bodied_methods = true:suggestion
+csharp_style_expression_bodied_constructors = true:suggestion
+csharp_style_expression_bodied_operators = true:suggestion
+csharp_style_expression_bodied_properties = true:suggestion
+csharp_style_expression_bodied_indexers = true:suggestion
+csharp_style_expression_bodied_accessors = true:suggestion
+csharp_style_expression_bodied_lambdas = true:suggestion
+csharp_style_expression_bodied_local_functions = true:suggestion
csharp_style_throw_expression = true:suggestion
csharp_style_prefer_null_check_over_type_check = true:suggestion
+# CS1591: Missing XML comment for publicly visible type or member
+dotnet_diagnostic.CS1591.severity = none
+
+# IDE0058: Expression value is never used
+dotnet_diagnostic.IDE0058.severity = suggestion
+
+# CA1515: Consider making public types internal
+dotnet_diagnostic.CA1515.severity = suggestion
+
[*.{cs,vb}]
#### Naming styles ####
@@ -121,3 +130,50 @@ spelling_exclusion_path = .\exclusion.dic
spelling_use_default_exclusion_dictionary = true
csharp_style_prefer_primary_constructors = true:suggestion
dotnet_style_prefer_collection_expression = when_types_loosely_match:suggestion
+csharp_space_around_binary_operators = before_and_after
+csharp_prefer_system_threading_lock = true:suggestion
+csharp_prefer_simple_default_expression = true:suggestion
+csharp_style_prefer_local_over_anonymous_function = true:suggestion
+csharp_style_prefer_index_operator = true:suggestion
+csharp_style_prefer_range_operator = true:suggestion
+csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion
+csharp_style_prefer_tuple_swap = true:suggestion
+csharp_style_prefer_utf8_string_literals = true:suggestion
+csharp_style_inlined_variable_declaration = true:suggestion
+csharp_style_deconstructed_variable_declaration = true:suggestion
+csharp_style_unused_value_assignment_preference = unused_local_variable:silent
+csharp_style_unused_value_expression_statement_preference = unused_local_variable:suggestion
+dotnet_style_readonly_field = true:suggestion
+dotnet_style_predefined_type_for_member_access = true:silent
+dotnet_style_predefined_type_for_locals_parameters_members = true:silent
+dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
+csharp_prefer_static_anonymous_function = true:suggestion
+csharp_prefer_static_local_function = true:suggestion
+csharp_style_prefer_readonly_struct_member = true:suggestion
+csharp_style_prefer_readonly_struct = true:suggestion
+dotnet_style_allow_multiple_blank_lines_experimental = false:suggestion
+dotnet_style_allow_statement_immediately_after_block_experimental = false:suggestion
+csharp_style_allow_embedded_statements_on_same_line_experimental = false:suggestion
+csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false:suggestion
+csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = false:suggestion
+csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = false:suggestion
+csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true:suggestion
+csharp_style_conditional_delegate_call = true:suggestion
+dotnet_code_quality_unused_parameters = non_public:suggestion
+dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
+dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
+csharp_style_var_for_built_in_types = true:suggestion
+csharp_style_var_when_type_is_apparent = true:suggestion
+dotnet_style_qualification_for_event = false:silent
+dotnet_style_qualification_for_method = false:silent
+dotnet_style_qualification_for_property = false:silent
+dotnet_style_qualification_for_field = false:silent
+dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
+dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
+csharp_style_prefer_extended_property_pattern = true:suggestion
+csharp_style_prefer_not_pattern = true:suggestion
+csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
+csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
+csharp_style_prefer_pattern_matching = true:suggestion
+csharp_style_prefer_switch_expression = true:suggestion
+dotnet_diagnostic.xUnit2001.severity = suggestion
diff --git a/src/HomeInventory/.idea/.idea.HomeInventory/.idea/workspace.xml b/src/HomeInventory/.idea/.idea.HomeInventory/.idea/workspace.xml
new file mode 100644
index 000000000..d0792d880
--- /dev/null
+++ b/src/HomeInventory/.idea/.idea.HomeInventory/.idea/workspace.xml
@@ -0,0 +1,71 @@
+
+
+
+ HomeInventory.Api/HomeInventory.Api.csproj
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1731499300524
+
+
+ 1731499300524
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/HomeInventory/Directory.Build.props b/src/HomeInventory/Directory.Build.props
index 437392fff..699184928 100644
--- a/src/HomeInventory/Directory.Build.props
+++ b/src/HomeInventory/Directory.Build.props
@@ -1,7 +1,7 @@
- net8
+ net9
enable
enable
latest
@@ -12,13 +12,15 @@
True
9999
false
- CA1062;CA2007;CA1716;VISLIB0001
+ $(NoWarn);CA1062;CA2007;CA1716
+ True
+
diff --git a/src/HomeInventory/Directory.Packages.props b/src/HomeInventory/Directory.Packages.props
index 3627d5711..8c1c501bb 100644
--- a/src/HomeInventory/Directory.Packages.props
+++ b/src/HomeInventory/Directory.Packages.props
@@ -2,8 +2,7 @@
true
-
-
+
@@ -16,9 +15,9 @@
-
+
-
+
@@ -28,13 +27,9 @@
-
-
-
-
-
+
@@ -45,34 +40,40 @@
-
-
-
+
-
-
+
+
+
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
@@ -80,28 +81,27 @@
-
-
+
+
-
+
-
+
-
-
-
+
-
-
+
+
+
\ No newline at end of file
diff --git a/src/HomeInventory/Dockerfile b/src/HomeInventory/Dockerfile
index 7be5506d0..75c1c8865 100644
--- a/src/HomeInventory/Dockerfile
+++ b/src/HomeInventory/Dockerfile
@@ -6,7 +6,7 @@ WORKDIR /app
EXPOSE 80
EXPOSE 443
-FROM mcr.microsoft.com/dotnet/sdk:8.0.403 AS build
+FROM mcr.microsoft.com/dotnet/sdk:9.0.100 AS build
WORKDIR /src
COPY ["Directory.Packages.props", "."]
COPY ["Directory.Build.props", "."]
diff --git a/src/HomeInventory/HomeInventory.Api/HomeInventory.Api.csproj b/src/HomeInventory/HomeInventory.Api/HomeInventory.Api.csproj
index 176033893..169eff49b 100644
--- a/src/HomeInventory/HomeInventory.Api/HomeInventory.Api.csproj
+++ b/src/HomeInventory/HomeInventory.Api/HomeInventory.Api.csproj
@@ -24,6 +24,8 @@
+
+
diff --git a/src/HomeInventory/HomeInventory.Application.Framework/HomeInventory.Application.Framework.csproj b/src/HomeInventory/HomeInventory.Application.Framework/HomeInventory.Application.Framework.csproj
index 86c7ec251..1c87742a7 100644
--- a/src/HomeInventory/HomeInventory.Application.Framework/HomeInventory.Application.Framework.csproj
+++ b/src/HomeInventory/HomeInventory.Application.Framework/HomeInventory.Application.Framework.csproj
@@ -2,6 +2,7 @@
+
diff --git a/src/HomeInventory/HomeInventory.Application.UserManagement.Interfaces/HomeInventory.Application.UserManagement.Interfaces.csproj b/src/HomeInventory/HomeInventory.Application.UserManagement.Interfaces/HomeInventory.Application.UserManagement.Interfaces.csproj
index ab9fbce6a..3bcfd5459 100644
--- a/src/HomeInventory/HomeInventory.Application.UserManagement.Interfaces/HomeInventory.Application.UserManagement.Interfaces.csproj
+++ b/src/HomeInventory/HomeInventory.Application.UserManagement.Interfaces/HomeInventory.Application.UserManagement.Interfaces.csproj
@@ -1,4 +1,7 @@
+
+
+
diff --git a/src/HomeInventory/HomeInventory.Application.UserManagement/HomeInventory.Application.UserManagement.csproj b/src/HomeInventory/HomeInventory.Application.UserManagement/HomeInventory.Application.UserManagement.csproj
index 6a513b08f..f2dce19ad 100644
--- a/src/HomeInventory/HomeInventory.Application.UserManagement/HomeInventory.Application.UserManagement.csproj
+++ b/src/HomeInventory/HomeInventory.Application.UserManagement/HomeInventory.Application.UserManagement.csproj
@@ -1,4 +1,7 @@
+
+
+
diff --git a/src/HomeInventory/HomeInventory.Application/HomeInventory.Application.csproj b/src/HomeInventory/HomeInventory.Application/HomeInventory.Application.csproj
index 3adeea544..e85a7461f 100644
--- a/src/HomeInventory/HomeInventory.Application/HomeInventory.Application.csproj
+++ b/src/HomeInventory/HomeInventory.Application/HomeInventory.Application.csproj
@@ -2,6 +2,7 @@
+
diff --git a/src/HomeInventory/HomeInventory.Contracts.UserManagement.Validators/PasswordCharacterSets.cs b/src/HomeInventory/HomeInventory.Contracts.UserManagement.Validators/PasswordCharacterSets.cs
index 879e803b1..007f8d92c 100644
--- a/src/HomeInventory/HomeInventory.Contracts.UserManagement.Validators/PasswordCharacterSets.cs
+++ b/src/HomeInventory/HomeInventory.Contracts.UserManagement.Validators/PasswordCharacterSets.cs
@@ -8,5 +8,5 @@ internal static class PasswordCharacterSets
public static IPasswordCharacterSet Lowercase { get; } = new PasswordCharacterSet(char.IsLower, "lowercase");
- public static IPasswordCharacterSet NonAlphanumeric { get; } = new PasswordCharacterSet(c => !char.IsLetterOrDigit(c), "non-alphanumeric");
+ public static IPasswordCharacterSet NonAlphanumeric { get; } = new PasswordCharacterSet(static c => !char.IsLetterOrDigit(c), "non-alphanumeric");
}
diff --git a/src/HomeInventory/HomeInventory.Contracts.UserManagement.Validators/RegisterRequestValidator.cs b/src/HomeInventory/HomeInventory.Contracts.UserManagement.Validators/RegisterRequestValidator.cs
index 8d8c13373..878436208 100644
--- a/src/HomeInventory/HomeInventory.Contracts.UserManagement.Validators/RegisterRequestValidator.cs
+++ b/src/HomeInventory/HomeInventory.Contracts.UserManagement.Validators/RegisterRequestValidator.cs
@@ -6,11 +6,11 @@ public class RegisterRequestValidator : AbstractValidator
{
public RegisterRequestValidator()
{
- RuleFor(x => x.Email).NotEmpty();
- RuleFor(x => x.Email).EmailAddress();
+ RuleFor(static x => x.Email).NotEmpty();
+ RuleFor(static x => x.Email).EmailAddress();
- RuleFor(x => x.Password).NotEmpty();
- RuleFor(x => x.Password).MinimumLength(8);
- RuleFor(x => x.Password).Password();
+ RuleFor(static x => x.Password).NotEmpty();
+ RuleFor(static x => x.Password).MinimumLength(8);
+ RuleFor(static x => x.Password).Password();
}
}
diff --git a/src/HomeInventory/HomeInventory.Contracts.Validations/LoginRequestValidator.cs b/src/HomeInventory/HomeInventory.Contracts.Validations/LoginRequestValidator.cs
index 1c6f086dc..e79c84996 100644
--- a/src/HomeInventory/HomeInventory.Contracts.Validations/LoginRequestValidator.cs
+++ b/src/HomeInventory/HomeInventory.Contracts.Validations/LoginRequestValidator.cs
@@ -6,9 +6,9 @@ internal sealed class LoginRequestValidator : AbstractValidator
{
public LoginRequestValidator()
{
- RuleFor(x => x.Email).NotEmpty();
- RuleFor(x => x.Email).EmailAddress();
+ RuleFor(static x => x.Email).NotEmpty();
+ RuleFor(static x => x.Email).EmailAddress();
- RuleFor(x => x.Password).NotEmpty();
+ RuleFor(static x => x.Password).NotEmpty();
}
}
diff --git a/src/HomeInventory/HomeInventory.Core/ScopeAccessorExtensions.cs b/src/HomeInventory/HomeInventory.Core/ScopeAccessorExtensions.cs
index 7f84280f9..8133b4383 100644
--- a/src/HomeInventory/HomeInventory.Core/ScopeAccessorExtensions.cs
+++ b/src/HomeInventory/HomeInventory.Core/ScopeAccessorExtensions.cs
@@ -7,5 +7,5 @@ public static TContext GetRequiredContext(this IScopeAccessor scopeAcc
scopeAccessor
.GetScope()
.Get()
- .ThrowIfNone(() => new InvalidOperationException($"Required context of type {typeof(TContext).FullName} not found"));
+ .ThrowIfNone(static () => new InvalidOperationException($"Required context of type {typeof(TContext).FullName} not found"));
}
diff --git a/src/HomeInventory/HomeInventory.Core/TypeExtensions.cs b/src/HomeInventory/HomeInventory.Core/TypeExtensions.cs
index af077e7f9..ce0541bb2 100644
--- a/src/HomeInventory/HomeInventory.Core/TypeExtensions.cs
+++ b/src/HomeInventory/HomeInventory.Core/TypeExtensions.cs
@@ -30,7 +30,6 @@ public static string GetFormattedName(this Type type) =>
_ => type.Name,
};
-
private static string FormatGenericType(Type type)
{
var args = type.GenericTypeArguments;
diff --git a/src/HomeInventory/HomeInventory.Domain.Primitives/IRepository.cs b/src/HomeInventory/HomeInventory.Domain.Primitives/IRepository.cs
index 7dfc4db05..98f7ba32f 100644
--- a/src/HomeInventory/HomeInventory.Domain.Primitives/IRepository.cs
+++ b/src/HomeInventory/HomeInventory.Domain.Primitives/IRepository.cs
@@ -7,6 +7,7 @@ public interface IRepository : IReadOnlyRepository
/// The entity to add.
+ ///
///
/// A task that represents the asynchronous operation.
/// The task result contains the .
@@ -20,7 +21,6 @@ public interface IRepository : IReadOnlyRepository
///
/// A task that represents the asynchronous operation.
- /// The task result contains the .
///
Task AddRangeAsync(IEnumerable entities, CancellationToken cancellationToken = default);
@@ -28,6 +28,7 @@ public interface IRepository : IReadOnlyRepository
/// The entity to update.
+ ///
/// A task that represents the asynchronous operation.
Task UpdateAsync(TAggregateRoot entity, CancellationToken cancellationToken = default);
@@ -43,6 +44,7 @@ public interface IRepository : IReadOnlyRepository
/// The entity to delete.
+ ///
/// A task that represents the asynchronous operation.
Task DeleteAsync(TAggregateRoot entity, CancellationToken cancellationToken = default);
@@ -50,6 +52,7 @@ public interface IRepository : IReadOnlyRepository
/// The entities to remove.
+ ///
/// A task that represents the asynchronous operation.
Task DeleteRangeAsync(IEnumerable entities, CancellationToken cancellationToken = default);
}
diff --git a/src/HomeInventory/HomeInventory.Domain/ValueObjects/AmountFactory.cs b/src/HomeInventory/HomeInventory.Domain/ValueObjects/AmountFactory.cs
index 054955f27..3c3689a53 100644
--- a/src/HomeInventory/HomeInventory.Domain/ValueObjects/AmountFactory.cs
+++ b/src/HomeInventory/HomeInventory.Domain/ValueObjects/AmountFactory.cs
@@ -5,7 +5,7 @@ internal sealed class AmountFactory : IAmountFactory
public Validation Create(decimal value, AmountUnit unit) =>
new UnitValidator(unit)
.Validate(value)
- .Bind(t => new Amount(t.Value, t.Unit));
+ .Bind(static t => new Amount(t.Value, t.Unit));
private readonly ref struct UnitValidator(AmountUnit unit)
{
diff --git a/src/HomeInventory/HomeInventory.Infrastructure.Framework/InfrastructureFrameworkServiceCollectionExtensions.cs b/src/HomeInventory/HomeInventory.Infrastructure.Framework/InfrastructureFrameworkServiceCollectionExtensions.cs
index c086b9b63..67aefd6a6 100644
--- a/src/HomeInventory/HomeInventory.Infrastructure.Framework/InfrastructureFrameworkServiceCollectionExtensions.cs
+++ b/src/HomeInventory/HomeInventory.Infrastructure.Framework/InfrastructureFrameworkServiceCollectionExtensions.cs
@@ -11,6 +11,6 @@ public static IServiceCollection AddRepository
services
.AddScoped()
- .AddScoped>(sp => sp.GetRequiredService())
- .AddScoped>(sp => sp.GetRequiredService>());
+ .AddScoped>(static sp => sp.GetRequiredService())
+ .AddScoped>(static sp => sp.GetRequiredService>());
}
diff --git a/src/HomeInventory/HomeInventory.Infrastructure.Framework/Repository.cs b/src/HomeInventory/HomeInventory.Infrastructure.Framework/Repository.cs
index 88a862bb8..fd96b693f 100644
--- a/src/HomeInventory/HomeInventory.Infrastructure.Framework/Repository.cs
+++ b/src/HomeInventory/HomeInventory.Infrastructure.Framework/Repository.cs
@@ -101,7 +101,9 @@ public async Task HasAsync(ISpecification specification, Cancellat
/// Filters the entities of , to those that match the encapsulated query logic of the
/// .
///
+ ///
/// The encapsulated query logic.
+ ///
/// The filtered entities as an .
protected virtual IQueryable ApplySpecification(IQueryable inputQuery, ISpecification specification, bool evaluateCriteriaOnly = false) =>
_evaluator.GetQuery(inputQuery, specification, evaluateCriteriaOnly);
@@ -114,16 +116,17 @@ protected virtual IQueryable ApplySpecification(IQueryable input
///
///
/// The type of the value returned by the projection.
+ ///
/// The encapsulated query logic.
/// The filtered projected entities as an .
protected virtual IQueryable ApplySpecification(IQueryable inputQuery, ISpecification specification) =>
_evaluator.GetQuery(inputQuery, specification);
- private async Task> InternalAddAsync(DbSet set, TAggregateRoot entity, CancellationToken cancellationToken) => await InternalModifyAsync(set, entity, (s, m) => s.Add(m), cancellationToken);
+ private async Task> InternalAddAsync(DbSet set, TAggregateRoot entity, CancellationToken cancellationToken) => await InternalModifyAsync(set, entity, static (s, m) => s.Add(m), cancellationToken);
- private async Task> InternalUpdateAsync(DbSet set, TAggregateRoot entity, CancellationToken cancellationToken) => await InternalModifyAsync(set, entity, (s, m) => s.Update(m), cancellationToken);
+ private async Task> InternalUpdateAsync(DbSet set, TAggregateRoot entity, CancellationToken cancellationToken) => await InternalModifyAsync(set, entity, static (s, m) => s.Update(m), cancellationToken);
- private async Task> InternalDeleteAsync(DbSet set, TAggregateRoot entity, CancellationToken cancellationToken) => await InternalModifyAsync(set, entity, (s, m) => s.Remove(m), cancellationToken);
+ private async Task> InternalDeleteAsync(DbSet set, TAggregateRoot entity, CancellationToken cancellationToken) => await InternalModifyAsync(set, entity, static (s, m) => s.Remove(m), cancellationToken);
private async Task> InternalModifyAsync(DbSet set, TAggregateRoot entity, Func, TModel, EntityEntry> modifyAction, CancellationToken cancellationToken)
{
diff --git a/src/HomeInventory/HomeInventory.Infrastructure.UserManagement/Models/Configurations/DomainEventJsonTypeInfo.cs b/src/HomeInventory/HomeInventory.Infrastructure.UserManagement/Models/Configurations/DomainEventJsonTypeInfo.cs
index 257f32997..88627a9f9 100644
--- a/src/HomeInventory/HomeInventory.Infrastructure.UserManagement/Models/Configurations/DomainEventJsonTypeInfo.cs
+++ b/src/HomeInventory/HomeInventory.Infrastructure.UserManagement/Models/Configurations/DomainEventJsonTypeInfo.cs
@@ -7,5 +7,5 @@ internal sealed class DomainEventJsonTypeInfo(params Type[] types) : IJsonDerive
{
private readonly Type[] _types = types;
- public IEnumerable DerivedTypes => _types.Select(t => new JsonDerivedType(t, t.FullName ?? t.Name));
+ public IEnumerable DerivedTypes => _types.Select(static t => new JsonDerivedType(t, t.FullName ?? t.Name));
}
diff --git a/src/HomeInventory/HomeInventory.Infrastructure.UserManagement/Models/Configurations/UserModelConfiguration.cs b/src/HomeInventory/HomeInventory.Infrastructure.UserManagement/Models/Configurations/UserModelConfiguration.cs
index ceedeec24..14db3ac29 100644
--- a/src/HomeInventory/HomeInventory.Infrastructure.UserManagement/Models/Configurations/UserModelConfiguration.cs
+++ b/src/HomeInventory/HomeInventory.Infrastructure.UserManagement/Models/Configurations/UserModelConfiguration.cs
@@ -8,14 +8,14 @@ internal sealed class UserModelConfiguration : IEntityTypeConfiguration builder)
{
- builder.HasKey(x => x.Id);
- builder.Property(x => x.Id)
+ builder.HasKey(static x => x.Id);
+ builder.Property(static x => x.Id)
.HasIdConversion();
- builder.Property(x => x.Email)
+ builder.Property(static x => x.Email)
.IsRequired();
- builder.Property(x => x.Password)
+ builder.Property(static x => x.Password)
.IsRequired();
}
}
diff --git a/src/HomeInventory/HomeInventory.Infrastructure.UserManagement/UserRepository.cs b/src/HomeInventory/HomeInventory.Infrastructure.UserManagement/UserRepository.cs
index 5d9df765c..d6311e116 100644
--- a/src/HomeInventory/HomeInventory.Infrastructure.UserManagement/UserRepository.cs
+++ b/src/HomeInventory/HomeInventory.Infrastructure.UserManagement/UserRepository.cs
@@ -22,7 +22,7 @@ public async Task
diff --git a/src/HomeInventory/HomeInventory.Infrastructure/Persistence/DatabaseContext.cs b/src/HomeInventory/HomeInventory.Infrastructure/Persistence/DatabaseContext.cs
index b795d41f1..2dcceed1c 100644
--- a/src/HomeInventory/HomeInventory.Infrastructure/Persistence/DatabaseContext.cs
+++ b/src/HomeInventory/HomeInventory.Infrastructure/Persistence/DatabaseContext.cs
@@ -24,7 +24,7 @@ public Option FindTracked(Func condition)
where TEntity : class =>
ChangeTracker
.Entries()
- .Select(e => e.Entity)
+ .Select(static e => e.Entity)
.Where(condition)
.HeadOrNone();
@@ -49,8 +49,8 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
private void UpdateAuditableEntities(DateTimeOffset now)
{
- UpdateTimeAuditEntities(now, EntityState.Added, x => x.CreatedOn);
- UpdateTimeAuditEntities(now, EntityState.Modified, x => x.ModifiedOn);
+ UpdateTimeAuditEntities(now, EntityState.Added, static x => x.CreatedOn);
+ UpdateTimeAuditEntities(now, EntityState.Modified, static x => x.ModifiedOn);
}
private void UpdateTimeAuditEntities(DateTimeOffset now, EntityState state, Expression> propertyExpression)
diff --git a/src/HomeInventory/HomeInventory.Infrastructure/Persistence/Mapping/ModelMappings.cs b/src/HomeInventory/HomeInventory.Infrastructure/Persistence/Mapping/ModelMappings.cs
index 58656a683..7de8dd30c 100644
--- a/src/HomeInventory/HomeInventory.Infrastructure/Persistence/Mapping/ModelMappings.cs
+++ b/src/HomeInventory/HomeInventory.Infrastructure/Persistence/Mapping/ModelMappings.cs
@@ -8,7 +8,7 @@ internal sealed class ModelMappings : BaseMappingsProfile
{
public ModelMappings()
{
- CreateMap().Using(x => x.Value, ProductId.Converter);
- CreateMap().Using(obj => new() { Value = obj.Value, UnitName = obj.Unit.Name });
+ CreateMap().Using(static x => x.Value, ProductId.Converter);
+ CreateMap().Using(static obj => new() { Value = obj.Value, UnitName = obj.Unit.Name });
}
}
diff --git a/src/HomeInventory/HomeInventory.Infrastructure/Persistence/Models/Configurations/PolymorphicDomainEventTypeResolver.cs b/src/HomeInventory/HomeInventory.Infrastructure/Persistence/Models/Configurations/PolymorphicDomainEventTypeResolver.cs
index 374a1b733..c70359d1f 100644
--- a/src/HomeInventory/HomeInventory.Infrastructure/Persistence/Models/Configurations/PolymorphicDomainEventTypeResolver.cs
+++ b/src/HomeInventory/HomeInventory.Infrastructure/Persistence/Models/Configurations/PolymorphicDomainEventTypeResolver.cs
@@ -8,7 +8,7 @@ namespace HomeInventory.Infrastructure.Persistence.Models.Configurations;
internal sealed class PolymorphicDomainEventTypeResolver(IEnumerable eventTypeInfoProviders) : DefaultJsonTypeInfoResolver
{
- private readonly IReadOnlyCollection _derivedTypes = eventTypeInfoProviders.SelectMany(p => p.DerivedTypes).ToArray();
+ private readonly IReadOnlyCollection _derivedTypes = eventTypeInfoProviders.SelectMany(static p => p.DerivedTypes).ToArray();
public override JsonTypeInfo GetTypeInfo(Type type, JsonSerializerOptions options)
{
diff --git a/src/HomeInventory/HomeInventory.Infrastructure/Persistence/Models/Interceptors/PublishDomainEventsInterceptor.cs b/src/HomeInventory/HomeInventory.Infrastructure/Persistence/Models/Interceptors/PublishDomainEventsInterceptor.cs
index c593c6796..30fa8c958 100644
--- a/src/HomeInventory/HomeInventory.Infrastructure/Persistence/Models/Interceptors/PublishDomainEventsInterceptor.cs
+++ b/src/HomeInventory/HomeInventory.Infrastructure/Persistence/Models/Interceptors/PublishDomainEventsInterceptor.cs
@@ -23,7 +23,7 @@ private async ValueTask PublishEventsAsync(DbContext context, CancellationToken
{
var domainEvents = context.ChangeTracker
.Entries()
- .Select(e => e.Entity.Content);
+ .Select(static e => e.Entity.Content);
foreach (var domainEvent in domainEvents)
{
diff --git a/src/HomeInventory/HomeInventory.Tests.Acceptance/Drivers/HomeInventoryAPIDriver.cs b/src/HomeInventory/HomeInventory.Tests.Acceptance/Drivers/HomeInventoryAPIDriver.cs
index 81b8116fa..c543e8464 100644
--- a/src/HomeInventory/HomeInventory.Tests.Acceptance/Drivers/HomeInventoryAPIDriver.cs
+++ b/src/HomeInventory/HomeInventory.Tests.Acceptance/Drivers/HomeInventoryAPIDriver.cs
@@ -7,7 +7,7 @@
namespace HomeInventory.Tests.Acceptance.Drivers;
-internal sealed class HomeInventoryApiDriver : WebApplicationFactory, IHomeInventoryApiDriver
+internal sealed class HomeInventoryApiDriver : WebApplicationFactory, IHomeInventoryApiDriver
{
private readonly ITestingConfiguration _configuration;
private readonly Lazy _lazyUserManagement;
diff --git a/src/HomeInventory/HomeInventory.Tests.Framework/Assertions/ObjectExtensions.cs b/src/HomeInventory/HomeInventory.Tests.Framework/Assertions/ObjectExtensions.cs
index d8c822c5c..5955f0288 100644
--- a/src/HomeInventory/HomeInventory.Tests.Framework/Assertions/ObjectExtensions.cs
+++ b/src/HomeInventory/HomeInventory.Tests.Framework/Assertions/ObjectExtensions.cs
@@ -8,7 +8,7 @@ internal static class ObjectExtensions
{
if (typeof(T) == typeof(object))
{
- return (actual, expected) =>
+ return static (actual, expected) =>
{
if (actual is null && expected is null)
{
diff --git a/src/HomeInventory/HomeInventory.Tests.Framework/BaseTest.cs b/src/HomeInventory/HomeInventory.Tests.Framework/BaseTest.cs
index 7ccbdae80..c0180e772 100644
--- a/src/HomeInventory/HomeInventory.Tests.Framework/BaseTest.cs
+++ b/src/HomeInventory/HomeInventory.Tests.Framework/BaseTest.cs
@@ -7,9 +7,9 @@ namespace HomeInventory.Tests.Framework;
public abstract class BaseTest : IAsyncLifetime
{
private readonly List _asyncDisposables = [];
- private readonly Lazy _lazyCancellation = new(() => new());
- private readonly Lazy _lazyFixture = new(() => new Fixture());
- private readonly Lazy _lazyDateTime = new(() => new FixedTimeProvider(TimeProvider.System));
+ private readonly Lazy _lazyCancellation = new(static () => new());
+ private readonly Lazy _lazyFixture = new(static () => new Fixture());
+ private readonly Lazy _lazyDateTime = new(static () => new FixedTimeProvider(TimeProvider.System));
protected BaseTest()
{
diff --git a/src/HomeInventory/HomeInventory.Tests.Framework/Customizations/ApiBehaviorOptionsCustomization.cs b/src/HomeInventory/HomeInventory.Tests.Framework/Customizations/ApiBehaviorOptionsCustomization.cs
index 0b5e55600..1280bddbc 100644
--- a/src/HomeInventory/HomeInventory.Tests.Framework/Customizations/ApiBehaviorOptionsCustomization.cs
+++ b/src/HomeInventory/HomeInventory.Tests.Framework/Customizations/ApiBehaviorOptionsCustomization.cs
@@ -6,7 +6,7 @@ internal class ApiBehaviorOptionsCustomization : ICustomization
{
public void Customize(IFixture fixture)
{
- fixture.Customize(c => c
- .Without(x => x.InvalidModelStateResponseFactory));
+ fixture.Customize(static c => c
+ .Without(static x => x.InvalidModelStateResponseFactory));
}
}
diff --git a/src/HomeInventory/HomeInventory.Tests.Framework/Customizations/FixtureExtensions.cs b/src/HomeInventory/HomeInventory.Tests.Framework/Customizations/FixtureExtensions.cs
index 96ec53780..8c1bfa88c 100644
--- a/src/HomeInventory/HomeInventory.Tests.Framework/Customizations/FixtureExtensions.cs
+++ b/src/HomeInventory/HomeInventory.Tests.Framework/Customizations/FixtureExtensions.cs
@@ -9,7 +9,7 @@ public static IFixture CustomizeId(this IFixture fixture)
where TId : class, IUlidBuildable, IUlidIdentifierObject, IValuableIdentifierObject =>
fixture
.CustomizeUlid()
- .CustomizeFromFactory>(s => (TId)TId.CreateBuilder().WithValue(s.Supply()).Build());
+ .CustomizeFromFactory>(static s => (TId)TId.CreateBuilder().WithValue(s.Supply()).Build());
public static IFixture CustomizeId(this IFixture fixture, DateTimeOffset timeStamp, Random? random = null)
where TId : class, IUlidBuildable, IUlidIdentifierObject, IValuableIdentifierObject =>
@@ -20,12 +20,12 @@ public static IFixture CustomizeId(this IFixture fixture, DateTimeOffset ti
public static IFixture CustomizeEmail(this IFixture fixture) =>
fixture
.CustomizeUlid()
- .CustomizeFromFactory>(s => new(s.Supply().ToString() + "@email.com"));
+ .CustomizeFromFactory>(static s => new(s.Supply().ToString() + "@email.com"));
public static IFixture CustomizeEmail(this IFixture fixture, DateTimeOffset timeStamp, Random? random = null) =>
fixture
.CustomizeUlid(timeStamp, random)
- .CustomizeFromFactory>(s => new(s.Supply().ToString() + "@email.com"));
+ .CustomizeFromFactory>(static s => new(s.Supply().ToString() + "@email.com"));
public static IFixture CustomizeFromFactory(this IFixture fixture, Func createFunc)
{
diff --git a/src/HomeInventory/HomeInventory.Tests.Framework/GivenContext.cs b/src/HomeInventory/HomeInventory.Tests.Framework/GivenContext.cs
index 1834c273a..2c1823a9a 100644
--- a/src/HomeInventory/HomeInventory.Tests.Framework/GivenContext.cs
+++ b/src/HomeInventory/HomeInventory.Tests.Framework/GivenContext.cs
@@ -23,7 +23,7 @@ public TContext New(out IVariable variable, Func create, int count = 1,
New(out variable, _ => create(), count, name);
public TContext EmptyHashCode(out IVariable emptyHash) =>
- New(out emptyHash, () => new());
+ New(out emptyHash, static () => new());
public TContext SubstituteFor(out IVariable variable, IVariable arg1, IVariable arg2, Action setup, [CallerArgumentExpression(nameof(variable))] string? name = null)
where T : class
diff --git a/src/HomeInventory/HomeInventory.Tests.Framework/HomeInventory.Tests.Framework.csproj b/src/HomeInventory/HomeInventory.Tests.Framework/HomeInventory.Tests.Framework.csproj
index 74c276670..80a9fbddb 100644
--- a/src/HomeInventory/HomeInventory.Tests.Framework/HomeInventory.Tests.Framework.csproj
+++ b/src/HomeInventory/HomeInventory.Tests.Framework/HomeInventory.Tests.Framework.csproj
@@ -13,6 +13,10 @@
+
+
+
+
diff --git a/src/HomeInventory/HomeInventory.Tests.Framework/VariableValues.cs b/src/HomeInventory/HomeInventory.Tests.Framework/VariableValues.cs
index 4d7d0ad1c..15237eca4 100644
--- a/src/HomeInventory/HomeInventory.Tests.Framework/VariableValues.cs
+++ b/src/HomeInventory/HomeInventory.Tests.Framework/VariableValues.cs
@@ -26,7 +26,7 @@ public Option> TryGetOrAdd(int index, Func createValueFunc)
? OptionNone.Default
: GetOrAdd(index, createValueFunc);
- public IEnumerable GetAll() => _values.Select(x => x.Value);
+ public IEnumerable GetAll() => _values.Select(static x => x.Value);
private PropertyValue GetOrAdd(int index, Func createValueFunc) =>
index == _values.Count
@@ -51,8 +51,11 @@ public async ValueTask DisposeAsync()
case IDisposable disposable:
disposable.Dispose();
break;
+ default:
+ break;
}
}
+
_values.Clear();
}
}
diff --git a/src/HomeInventory/HomeInventory.Tests.Integration/BaseIntegrationTest.cs b/src/HomeInventory/HomeInventory.Tests.Integration/BaseIntegrationTest.cs
index 48df6a75b..27df4931c 100644
--- a/src/HomeInventory/HomeInventory.Tests.Integration/BaseIntegrationTest.cs
+++ b/src/HomeInventory/HomeInventory.Tests.Integration/BaseIntegrationTest.cs
@@ -11,7 +11,7 @@ namespace HomeInventory.Tests.Integration;
[System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1001:Types that own disposable fields should be disposable", Justification = "See InitializeDisposables")]
public abstract class BaseIntegrationTest : BaseTest
{
- private readonly WebApplicationFactory _appFactory = new();
+ private readonly WebApplicationFactory _appFactory = new();
private readonly HttpClient _client;
private readonly ITestOutputHelper _testOutputHelper;
@@ -28,7 +28,7 @@ protected IEnumerable GetEndpoints() =>
_appFactory
.Services
.GetServices()
- .SelectMany(s => s.Endpoints)
+ .SelectMany(static s => s.Endpoints)
.OfType();
protected async Task PostAsync(string route, JsonContent content)
diff --git a/src/HomeInventory/HomeInventory.Tests.Integration/HomeInventory.Tests.Integration.csproj b/src/HomeInventory/HomeInventory.Tests.Integration/HomeInventory.Tests.Integration.csproj
index a5bf9b1ab..b1e7644e4 100644
--- a/src/HomeInventory/HomeInventory.Tests.Integration/HomeInventory.Tests.Integration.csproj
+++ b/src/HomeInventory/HomeInventory.Tests.Integration/HomeInventory.Tests.Integration.csproj
@@ -1,4 +1,4 @@
-
+
CA1707
diff --git a/src/HomeInventory/HomeInventory.Tests.Integration/UserManagementApiTests.cs b/src/HomeInventory/HomeInventory.Tests.Integration/UserManagementApiTests.cs
index 1db1ef50d..7afc0eca8 100644
--- a/src/HomeInventory/HomeInventory.Tests.Integration/UserManagementApiTests.cs
+++ b/src/HomeInventory/HomeInventory.Tests.Integration/UserManagementApiTests.cs
@@ -33,7 +33,7 @@ public void VerifyEndpoints()
using var scope = new AssertionScope();
endpoints.Should().ContainEndpoint(_registerRoute, HttpMethods.Post)
- .Which.Metadata.Should().ContainSingle(x => x is AllowAnonymousAttribute);
+ .Which.Metadata.Should().ContainSingle(static x => x is AllowAnonymousAttribute);
}
[Fact]
@@ -74,7 +74,7 @@ public async Task RegisterSameTwice_ReturnsFailure()
#pragma warning disable CA1308 // Normalize strings to uppercase
body.Extensions.Should().ContainKey("errors")
.WhoseValue.Should().BeJsonElement()
- .Which.Should().BeArray(e => e.Should().HaveProperty(nameof(DuplicateEmailError.Message).ToLowerInvariant())
+ .Which.Should().BeArray(static e => e.Should().HaveProperty(nameof(DuplicateEmailError.Message).ToLowerInvariant())
.Which.Should().HaveValue(DuplicateEmailError.DefaultMessage));
#pragma warning restore CA1308 // Normalize strings to uppercase
}
diff --git a/src/HomeInventory/HomeInventory.Tests/Application/FeatureFlagGivenTestContext.cs b/src/HomeInventory/HomeInventory.Tests/Application/FeatureFlagGivenTestContext.cs
new file mode 100644
index 000000000..322d0e861
--- /dev/null
+++ b/src/HomeInventory/HomeInventory.Tests/Application/FeatureFlagGivenTestContext.cs
@@ -0,0 +1,22 @@
+using HomeInventory.Application.Framework;
+
+namespace HomeInventory.Tests.Application;
+
+public sealed class FeatureFlagGivenTestContext(BaseTest test) : GivenContext(test)
+{
+ private static readonly Variable _sut = new(nameof(_sut));
+ private static readonly Variable> _sutContext = new(nameof(_sutContext));
+
+ internal FeatureFlagGivenTestContext Sut(out IVariable sut, IVariable nameVariable) =>
+ New(out sut, () => Create(nameVariable));
+
+ internal FeatureFlagGivenTestContext Sut(out IVariable> sut, IVariable nameVariable, IVariable contextVariable) =>
+ New(out sut, () => Create(nameVariable, contextVariable));
+
+ private IFeatureFlag Create(IVariable nameVariable) =>
+ FeatureFlag.Create(GetValue(nameVariable));
+
+ private IFeatureFlag Create(IVariable nameVariable, IVariable contextVariable)
+ where TContext : notnull =>
+ FeatureFlag.Create(GetValue(nameVariable), GetValue(contextVariable));
+}
diff --git a/src/HomeInventory/HomeInventory.Tests/Application/FeatureFlagTests.cs b/src/HomeInventory/HomeInventory.Tests/Application/FeatureFlagTests.cs
index 8aed94ef1..0fa43be7d 100644
--- a/src/HomeInventory/HomeInventory.Tests/Application/FeatureFlagTests.cs
+++ b/src/HomeInventory/HomeInventory.Tests/Application/FeatureFlagTests.cs
@@ -5,7 +5,7 @@
namespace HomeInventory.Tests.Application;
[UnitTest]
-public sealed class FeatureFlagTests() : BaseTest(t => new(t))
+public sealed class FeatureFlagTests() : BaseTest(static t => new(t))
{
[Fact]
public void ConstructorShouldPreserveName()
@@ -15,10 +15,10 @@ public void ConstructorShouldPreserveName()
.Sut(out var sutVar, nameVar);
var then = When
- .Invoked(sutVar, sut => sut.Name);
+ .Invoked(sutVar, static sut => sut.Name);
then
- .Result(nameVar, (actual, expected) => actual.Should().Be(expected));
+ .Result(nameVar, static (actual, expected) => actual.Should().Be(expected));
}
[Fact]
@@ -31,8 +31,8 @@ public void CreateShouldPreserveName()
.Invoked(nameVar, FeatureFlag.Create);
then
- .Result(flag => flag.Should().NotBeNull())
- .Result(nameVar, (actual, expected) => actual.Name.Should().Be(expected));
+ .Result(static flag => flag.Should().NotBeNull())
+ .Result(nameVar, static (actual, expected) => actual.Name.Should().Be(expected));
}
[Fact]
@@ -46,9 +46,9 @@ public void CreateWithContextShouldPreserveName()
.Invoked(nameVar, contextVar, FeatureFlag.Create);
then
- .Result(flag => flag.Should().NotBeNull())
- .Result(nameVar, (actual, expected) => actual.Name.Should().Be(expected))
- .Result(contextVar, (actual, expected) => actual.Context.Should().Be(expected));
+ .Result(static flag => flag.Should().NotBeNull())
+ .Result(nameVar, static (actual, expected) => actual.Name.Should().Be(expected))
+ .Result(contextVar, static (actual, expected) => actual.Context.Should().Be(expected));
}
[Theory]
@@ -78,12 +78,12 @@ public void WithContextShouldReturn()
.Sut(out var sutVar, nameVar);
var then = When
- .Invoked(sutVar, contextVar, (sut, context) => sut.WithContext(context));
+ .Invoked(sutVar, contextVar, static (sut, context) => sut.WithContext(context));
then
- .Result(flag => flag.Should().NotBeNull())
- .Result(nameVar, (actual, expected) => actual.Name.Should().Be(expected))
- .Result(contextVar, (actual, expected) => actual.Context.Should().Be(expected));
+ .Result(static flag => flag.Should().NotBeNull())
+ .Result(nameVar, static (actual, expected) => actual.Name.Should().Be(expected))
+ .Result(contextVar, static (actual, expected) => actual.Context.Should().Be(expected));
}
[Theory]
@@ -104,22 +104,4 @@ public async Task IsEnabledContextShouldReturnManagerValue(bool expectedValue)
then
.Result(flag => flag.Should().Be(expectedValue));
}
-
-#pragma warning disable CA1034 // Nested types should not be visible
- public sealed class GivenTestContext(BaseTest test) : GivenContext(test)
-#pragma warning restore CA1034 // Nested types should not be visible
- {
- internal GivenTestContext Sut(out IVariable sut, IVariable nameVariable) =>
- New(out sut, () => Create(nameVariable));
-
- internal GivenTestContext Sut(out IVariable> sut, IVariable nameVariable, IVariable contextVariable) =>
- New(out sut, () => Create(nameVariable, contextVariable));
-
- private IFeatureFlag Create(IVariable nameVariable) =>
- FeatureFlag.Create(GetValue(nameVariable));
-
- private IFeatureFlag Create(IVariable nameVariable, IVariable contextVariable)
- where TContext : notnull =>
- FeatureFlag.Create(GetValue(nameVariable), GetValue(contextVariable));
- }
}
diff --git a/src/HomeInventory/HomeInventory.Tests/Core/InternalTestSubject.cs b/src/HomeInventory/HomeInventory.Tests/Core/InternalTestSubject.cs
index 81a35e7b6..a188beec0 100644
--- a/src/HomeInventory/HomeInventory.Tests/Core/InternalTestSubject.cs
+++ b/src/HomeInventory/HomeInventory.Tests/Core/InternalTestSubject.cs
@@ -1,13 +1,10 @@
namespace HomeInventory.Tests.Core;
-public sealed class InternalTestSubject
+internal sealed class InternalTestSubject
{
internal InternalTestSubject()
{
}
- internal InternalTestSubject(object arg)
- {
- _ = arg;
- }
+ internal InternalTestSubject(object arg) => _ = arg;
}
diff --git a/src/HomeInventory/HomeInventory.Tests/DependencyInjection/TestAppBuilder.cs b/src/HomeInventory/HomeInventory.Tests/DependencyInjection/TestAppBuilder.cs
index 0de4c4392..bdbcd2bf1 100644
--- a/src/HomeInventory/HomeInventory.Tests/DependencyInjection/TestAppBuilder.cs
+++ b/src/HomeInventory/HomeInventory.Tests/DependencyInjection/TestAppBuilder.cs
@@ -22,7 +22,7 @@ public TestAppBuilder(IServiceCollection collection)
public IServiceProvider ServiceProvider { get; }
public ICollection DataSources { get; } = [];
- public RequestDelegate Build() => _ => Task.CompletedTask;
+ public RequestDelegate Build() => static _ => Task.CompletedTask;
public IApplicationBuilder CreateApplicationBuilder() => this;
diff --git a/src/HomeInventory/HomeInventory.Tests/Domain/EntityTests.cs b/src/HomeInventory/HomeInventory.Tests/Domain/EntityTests.cs
index 3aae42abb..73db60fe8 100644
--- a/src/HomeInventory/HomeInventory.Tests/Domain/EntityTests.cs
+++ b/src/HomeInventory/HomeInventory.Tests/Domain/EntityTests.cs
@@ -4,7 +4,7 @@
namespace HomeInventory.Tests.Domain;
[UnitTest]
-public sealed class EntityTests() : BaseTest(t => new(t))
+public sealed class EntityTests() : BaseTest(static t => new(t))
{
[Fact]
public void EqualsTEntity_Should_ReturnTrueWhenSameReference()
@@ -14,8 +14,8 @@ public void EqualsTEntity_Should_ReturnTrueWhenSameReference()
.Sut(out var sutVar, idVar);
When
- .Invoked(sutVar, sut => sut.Equals(sut))
- .Result(actual => actual.Should().BeTrue());
+ .Invoked(sutVar, static sut => sut.Equals(sut))
+ .Result(static actual => actual.Should().BeTrue());
}
[Fact]
@@ -27,8 +27,8 @@ public void EqualsTEntity_Should_ReturnTrueWhenOtherHasSameId()
.Sut(out var sutVar, idVar);
When
- .Invoked(sutVar, otherVar, (sut, other) => sut.Equals(other))
- .Result(actual => actual.Should().BeTrue());
+ .Invoked(sutVar, otherVar, static (sut, other) => sut.Equals(other))
+ .Result(static actual => actual.Should().BeTrue());
}
[Fact]
@@ -39,8 +39,8 @@ public void EqualsTEntity_Should_ReturnFalseWhenOtherIsNull()
.Sut(out var sutVar, idVar);
When
- .Invoked(sutVar, sut => sut.Equals(default))
- .Result(actual => actual.Should().BeFalse());
+ .Invoked(sutVar, static sut => sut.Equals(default))
+ .Result(static actual => actual.Should().BeFalse());
}
[Fact]
@@ -52,8 +52,8 @@ public void EqualsTEntity_Should_ReturnFalseWhenOtherHasDifferentId()
.Sut(out var sutVar, idVar[1]);
When
- .Invoked(sutVar, otherVar, (sut, other) => sut.Equals(other))
- .Result(actual => actual.Should().BeFalse());
+ .Invoked(sutVar, otherVar, static (sut, other) => sut.Equals(other))
+ .Result(static actual => actual.Should().BeFalse());
}
[Fact]
@@ -65,8 +65,8 @@ public void EqualsObject_Should_ReturnFalseWhenOtherHasDifferentType()
.Sut(out var sutVar, idVar);
When
- .Invoked(sutVar, otherVar, (sut, other) => sut.Equals(other))
- .Result(actual => actual.Should().BeFalse());
+ .Invoked(sutVar, otherVar, static (sut, other) => sut.Equals(other))
+ .Result(static actual => actual.Should().BeFalse());
}
[Fact]
@@ -77,8 +77,8 @@ public void EqualsObject_Should_ReturnTrueWhenSameReference()
.Sut(out var sutVar, idVar);
When
- .Invoked(sutVar, sut => sut.Equals((object)sut))
- .Result(actual => actual.Should().BeTrue());
+ .Invoked(sutVar, static sut => sut.Equals((object)sut))
+ .Result(static actual => actual.Should().BeTrue());
}
[Fact]
@@ -90,8 +90,8 @@ public void EqualsObject_Should_ReturnTrueWhenOtherHasSameId()
.Sut(out var sutVar, idVar);
When
- .Invoked(sutVar, otherVar, (sut, other) => sut.Equals((object)other))
- .Result(actual => actual.Should().BeTrue());
+ .Invoked(sutVar, otherVar, static (sut, other) => sut.Equals((object)other))
+ .Result(static actual => actual.Should().BeTrue());
}
[Fact]
@@ -102,8 +102,8 @@ public void EqualsObject_Should_ReturnFalseWhenOtherIsNull()
.Sut(out var sutVar, idVar);
When
- .Invoked(sutVar, sut => sut.Equals(default(object?)))
- .Result(actual => actual.Should().BeFalse());
+ .Invoked(sutVar, static sut => sut.Equals(default(object?)))
+ .Result(static actual => actual.Should().BeFalse());
}
[Fact]
@@ -115,8 +115,8 @@ public void EqualsObject_Should_ReturnFalseWhenOtherHasDifferentId()
.Sut(out var sutVar, idVar[1]);
When
- .Invoked(sutVar, otherVar, (sut, other) => sut.Equals((object)other))
- .Result(actual => actual.Should().BeFalse());
+ .Invoked(sutVar, otherVar, static (sut, other) => sut.Equals((object)other))
+ .Result(static actual => actual.Should().BeFalse());
}
[Fact]
@@ -128,8 +128,8 @@ public void GetHashCode_Should_ReturnGetHashCodeFromId()
.Sut(out var sutVar, idVar);
When
- .Invoked(sutVar, sut => sut.GetHashCode())
- .Result(hashVar, (actual, hash) => actual.Should().Be(hash.ToHashCode()));
+ .Invoked(sutVar, static sut => sut.GetHashCode())
+ .Result(hashVar, static (actual, hash) => actual.Should().Be(hash.ToHashCode()));
}
[Fact]
@@ -141,8 +141,8 @@ public void OpEquals_Should_ReturnTrueWhenOtherHasSameId()
.Sut(out var sutVar, idVar);
When
- .Invoked(sutVar, otherVar, (sut, other) => sut == other)
- .Result(actual => actual.Should().BeTrue());
+ .Invoked(sutVar, otherVar, static (sut, other) => sut == other)
+ .Result(static actual => actual.Should().BeTrue());
}
[Fact]
@@ -154,8 +154,8 @@ public void OpEquals_Should_ReturnFalseWhenOtherHasDifferentId()
.Sut(out var sutVar, idVar[1]);
When
- .Invoked(sutVar, otherVar, (sut, other) => sut == other)
- .Result(actual => actual.Should().BeFalse());
+ .Invoked(sutVar, otherVar, static (sut, other) => sut == other)
+ .Result(static actual => actual.Should().BeFalse());
}
[Fact]
@@ -167,8 +167,8 @@ public void OpNotEquals_Should_ReturnFalseWhenOtherHasSameId()
.Sut(out var sutVar, idVar);
When
- .Invoked(sutVar, otherVar, (sut, other) => sut != other)
- .Result(actual => actual.Should().BeFalse());
+ .Invoked(sutVar, otherVar, static (sut, other) => sut != other)
+ .Result(static actual => actual.Should().BeFalse());
}
[Fact]
@@ -180,8 +180,8 @@ public void OpNotEquals_Should_ReturnTrueWhenOtherHasDifferentId()
.Sut(out var sutVar, idVar[1]);
When
- .Invoked(sutVar, otherVar, (sut, other) => sut != other)
- .Result(actual => actual.Should().BeTrue());
+ .Invoked(sutVar, otherVar, static (sut, other) => sut != other)
+ .Result(static actual => actual.Should().BeTrue());
}
}
diff --git a/src/HomeInventory/HomeInventory.Tests/Domain/EquatableComponentTests.cs b/src/HomeInventory/HomeInventory.Tests/Domain/EquatableComponentTests.cs
index 62279e527..3a2f23c9f 100644
--- a/src/HomeInventory/HomeInventory.Tests/Domain/EquatableComponentTests.cs
+++ b/src/HomeInventory/HomeInventory.Tests/Domain/EquatableComponentTests.cs
@@ -4,7 +4,7 @@
namespace HomeInventory.Tests.Domain;
[UnitTest]
-public class EquatableComponentTests() : BaseTest(t => new(t))
+public class EquatableComponentTests() : BaseTest(static t => new(t))
{
[Fact]
public void GetHashCode_ShouldReturnZero_WhenNoComponents()
@@ -14,8 +14,8 @@ public void GetHashCode_ShouldReturnZero_WhenNoComponents()
.EmptyHashCode(out var hashVar);
When
- .Invoked(sutVar, sut => sut.GetHashCode())
- .Result(hashVar, (actual, hash) => actual.Should().Be(hash.ToHashCode()));
+ .Invoked(sutVar, static sut => sut.GetHashCode())
+ .Result(hashVar, static (actual, hash) => actual.Should().Be(hash.ToHashCode()));
}
[Theory]
@@ -30,8 +30,8 @@ public void GetHashCode_ShouldReturnCombinedComponentsHash_WhenManyComponents(in
.Sut(out var sutVar, componentVar);
When
- .Invoked(sutVar, sut => sut.GetHashCode())
- .Result(hashVar, (actual, hash) => actual.Should().Be(hash.ToHashCode()));
+ .Invoked(sutVar, static sut => sut.GetHashCode())
+ .Result(hashVar, static (actual, hash) => actual.Should().Be(hash.ToHashCode()));
}
[Fact]
@@ -41,8 +41,8 @@ public void Equals_ShouldBeEqualToEmpty_WhenNoComponents()
.Sut(out var sutVar, 2);
When
- .Invoked(sutVar[0], sutVar[1], (sut, other) => sut.Equals(other))
- .Result(actual => actual.Should().BeTrue());
+ .Invoked(sutVar[0], sutVar[1], static (sut, other) => sut.Equals(other))
+ .Result(static actual => actual.Should().BeTrue());
}
[Theory]
@@ -57,8 +57,8 @@ public void Equals_ShouldNotBeEqualToEmpty_WhenManyComponents(int count)
.Sut(out var sutVar2);
When
- .Invoked(sutVar1, sutVar2, (sut, other) => sut.Equals(other))
- .Result(actual => actual.Should().BeFalse());
+ .Invoked(sutVar1, sutVar2, static (sut, other) => sut.Equals(other))
+ .Result(static actual => actual.Should().BeFalse());
}
[Theory]
@@ -72,8 +72,8 @@ public void Equals_ShouldBeEqualToComponentWithSameItems_WhenManyComponents(int
.Sut(out var sutVar, componentVar, 2);
When
- .Invoked(sutVar[0], sutVar[1], (sut, other) => sut.Equals(other))
- .Result(actual => actual.Should().BeTrue());
+ .Invoked(sutVar[0], sutVar[1], static (sut, other) => sut.Equals(other))
+ .Result(static actual => actual.Should().BeTrue());
}
[Theory]
@@ -87,8 +87,8 @@ public void Equals_ShouldNotBeEqualToComponentWithDifferentItems_WhenManyCompone
.Sut(out var sutVar, componentVar, ..count, count..);
When
- .Invoked(sutVar[0], sutVar[1], (sut, other) => sut.Equals(other))
- .Result(actual => actual.Should().BeFalse());
+ .Invoked(sutVar[0], sutVar[1], static (sut, other) => sut.Equals(other))
+ .Result(static actual => actual.Should().BeFalse());
}
}
@@ -113,7 +113,7 @@ public EquatableComponentTestsGivenContext Sut(out IVariable> sut, IVariable variable, string name, params Range[] ranges) =>
New(out sut, i => CreateSut(variable, ranges[i]), ranges.Length, name);
- private EquatableComponent CreateSut(IVariable variable, Range range) => new(Array.ConvertAll(Variables.GetMany(variable, range).ToArray(), x => (object)x));
+ private EquatableComponent CreateSut(IVariable variable, Range range) => new(Array.ConvertAll(Variables.GetMany(variable, range).ToArray(), static x => (object)x));
protected override EquatableComponent CreateSut(Ulid arg) => throw new NotImplementedException();
}
diff --git a/src/HomeInventory/HomeInventory.Tests/Domain/ValueObjects/AmountUnitTests.cs b/src/HomeInventory/HomeInventory.Tests/Domain/ValueObjects/AmountUnitTests.cs
index 5c022d2f5..1f1881a07 100644
--- a/src/HomeInventory/HomeInventory.Tests/Domain/ValueObjects/AmountUnitTests.cs
+++ b/src/HomeInventory/HomeInventory.Tests/Domain/ValueObjects/AmountUnitTests.cs
@@ -57,14 +57,14 @@ public void FieldsShoulHaveMatchedName()
var fields = typeof(AmountUnit).GetFieldsOfType().ToArray();
fields.Should().NotBeEmpty()
- .And.AllSatisfy(t => t.Value!.Name.Should().Be(t.Field.Name));
+ .And.AllSatisfy(static t => t.Value!.Name.Should().Be(t.Field.Name));
}
[Fact]
public void CanBeUsedAsDictionaryKey()
{
- var dictionary = _items.ToDictionary(x => x, x => x.Name);
+ var dictionary = _items.ToDictionary(static x => x, static x => x.Name);
var values = typeof(AmountUnit).GetFieldValuesOfType().ToArray();
dictionary.Should().ContainKeys(values);
diff --git a/src/HomeInventory/HomeInventory.Tests/Domain/ValueObjects/MeasurementTypeTests.cs b/src/HomeInventory/HomeInventory.Tests/Domain/ValueObjects/MeasurementTypeTests.cs
index 47a24baac..72c3b98ae 100644
--- a/src/HomeInventory/HomeInventory.Tests/Domain/ValueObjects/MeasurementTypeTests.cs
+++ b/src/HomeInventory/HomeInventory.Tests/Domain/ValueObjects/MeasurementTypeTests.cs
@@ -40,13 +40,13 @@ public void FieldsShoulHaveMatchedName()
var fields = typeof(MeasurementType).GetFieldsOfType().ToArray();
fields.Should().NotBeEmpty()
- .And.AllSatisfy(t => t.Value!.Name.Should().Be(t.Field.Name));
+ .And.AllSatisfy(static t => t.Value!.Name.Should().Be(t.Field.Name));
}
[Fact]
public void CanBeUsedAsDictionaryKey()
{
- var dictionary = _items.ToDictionary(x => x, x => x.Name);
+ var dictionary = _items.ToDictionary(static x => x, static x => x.Name);
var values = typeof(MeasurementType).GetFieldValuesOfType().ToArray();
dictionary.Should().ContainKeys(values);
diff --git a/src/HomeInventory/HomeInventory.Tests/Framework/Assertions/ServiceDescriptorExtensionsTests.cs b/src/HomeInventory/HomeInventory.Tests/Framework/Assertions/ServiceDescriptorExtensionsTests.cs
index f43ebde9b..0da5cbdd6 100644
--- a/src/HomeInventory/HomeInventory.Tests/Framework/Assertions/ServiceDescriptorExtensionsTests.cs
+++ b/src/HomeInventory/HomeInventory.Tests/Framework/Assertions/ServiceDescriptorExtensionsTests.cs
@@ -35,7 +35,9 @@ public void GetInstance_ShouldReturnFromImplementationFactory()
public void GetInstance_ShouldReturnFromImplementationType()
{
var expectedType = typeof(object);
+#pragma warning disable CA2263 // Prefer generic overload when type is known
var descriptor = ServiceDescriptor.Singleton(typeof(object), expectedType);
+#pragma warning restore CA2263 // Prefer generic overload when type is known
var actual = ServiceDescriptorExtensions.GetInstance(descriptor, _serviceProvider);
diff --git a/src/HomeInventory/HomeInventory.Tests/HomeInventory.Tests.csproj b/src/HomeInventory/HomeInventory.Tests/HomeInventory.Tests.csproj
index 3de83dfa1..9e88e5657 100644
--- a/src/HomeInventory/HomeInventory.Tests/HomeInventory.Tests.csproj
+++ b/src/HomeInventory/HomeInventory.Tests/HomeInventory.Tests.csproj
@@ -1,4 +1,4 @@
-
+
$(NoWarn);CA1707;AD0001
@@ -9,10 +9,11 @@
-
+
+
diff --git a/src/HomeInventory/HomeInventory.Tests/Middlewares/CorrelationIdMiddlewareTests.cs b/src/HomeInventory/HomeInventory.Tests/Middlewares/CorrelationIdMiddlewareTests.cs
index 2c5c653ec..859bb52f9 100644
--- a/src/HomeInventory/HomeInventory.Tests/Middlewares/CorrelationIdMiddlewareTests.cs
+++ b/src/HomeInventory/HomeInventory.Tests/Middlewares/CorrelationIdMiddlewareTests.cs
@@ -95,8 +95,8 @@ public async Task InvokeAsync_Should_CreateCorrelationId_When_HeaderIsNotSet()
public async Task InvokeAsync_Should_AddCorrelationIdToResponse()
{
_httpResponseFeature
- .When(f => f.OnStarting(Arg.Any>(), Arg.Any
diff --git a/src/HomeInventory/HomeInventory.Web.Framework/Infrastructure/ProblemDetailsFactoryExtensions.cs b/src/HomeInventory/HomeInventory.Web.Framework/Infrastructure/ProblemDetailsFactoryExtensions.cs
index 9013ffd55..a63da84e7 100644
--- a/src/HomeInventory/HomeInventory.Web.Framework/Infrastructure/ProblemDetailsFactoryExtensions.cs
+++ b/src/HomeInventory/HomeInventory.Web.Framework/Infrastructure/ProblemDetailsFactoryExtensions.cs
@@ -12,7 +12,7 @@ public static ProblemDetails ConvertToProblem(this IProblemDetailsFactory factor
factory.ConvertToProblem(result.Errors, traceIdentifier);
public static ProblemDetails ConvertToProblem(this IProblemDetailsFactory factory, IEnumerable results, string? traceIdentifier = null) =>
- factory.ConvertToProblem(results.SelectMany(r => r.Errors), traceIdentifier);
+ factory.ConvertToProblem(results.SelectMany(static r => r.Errors), traceIdentifier);
public static Results, ProblemHttpResult> MatchToOk(this IProblemDetailsFactory factory, IQueryResult errorOrResult, Func onValue, string? traceIdentifier = null)
where T : notnull =>
@@ -28,5 +28,5 @@ public static Results, ProblemHttpResult> MatchToOk(
});
private static ProblemDetails ConvertToProblem(this IProblemDetailsFactory factory, IEnumerable failures, string? traceIdentifier = null) =>
- factory.ConvertToProblem(failures.Select(x => new ValidationError(x.ErrorMessage, x.AttemptedValue)).Cast().ToSeq(), traceIdentifier);
+ factory.ConvertToProblem(failures.Select(static x => new ValidationError(x.ErrorMessage, x.AttemptedValue)).Cast().ToSeq(), traceIdentifier);
}
diff --git a/src/HomeInventory/HomeInventory.Web.Framework/ValidationContextFactory.cs b/src/HomeInventory/HomeInventory.Web.Framework/ValidationContextFactory.cs
index b7b772f93..a64c524b8 100644
--- a/src/HomeInventory/HomeInventory.Web.Framework/ValidationContextFactory.cs
+++ b/src/HomeInventory/HomeInventory.Web.Framework/ValidationContextFactory.cs
@@ -5,7 +5,7 @@ namespace HomeInventory.Web.Framework;
internal sealed class ValidationContextFactory(Action>? validationOptions = null) : IValidationContextFactory
{
- private readonly Action> _validationOptions = validationOptions ?? (_ => { });
+ private readonly Action> _validationOptions = validationOptions ?? (static _ => { });
public IValidationContext CreateContext(TOptions options) =>
ValidationContext.CreateWithOptions(options, _validationOptions);
diff --git a/src/HomeInventory/HomeInventory.Web.Framework/ValidationEndpointFilter.cs b/src/HomeInventory/HomeInventory.Web.Framework/ValidationEndpointFilter.cs
index a11afe4f6..a4415af13 100644
--- a/src/HomeInventory/HomeInventory.Web.Framework/ValidationEndpointFilter.cs
+++ b/src/HomeInventory/HomeInventory.Web.Framework/ValidationEndpointFilter.cs
@@ -18,12 +18,12 @@ internal sealed class ValidationEndpointFilter(IValidationContextFactory v
var validator = httpContext.RequestServices.GetValidator();
var results = await ValidateArgumentAsync(validator, arguments, httpContext.RequestAborted).ToArrayAsync(httpContext.RequestAborted);
- if (results.Length == 0 || Array.TrueForAll(results, r => r.IsValid))
+ if (results.Length == 0 || Array.TrueForAll(results, static r => r.IsValid))
{
return await next(context);
}
- var problem = _problemDetailsFactory.ConvertToProblem(results.Where(r => !r.IsValid), httpContext.TraceIdentifier);
+ var problem = _problemDetailsFactory.ConvertToProblem(results.Where(static r => !r.IsValid), httpContext.TraceIdentifier);
return TypedResults.Problem(problem);
}
diff --git a/src/HomeInventory/HomeInventory.Web.UserManagement/HomeInventory.Web.UserManagement.csproj b/src/HomeInventory/HomeInventory.Web.UserManagement/HomeInventory.Web.UserManagement.csproj
index f99c2a577..3ad5919af 100644
--- a/src/HomeInventory/HomeInventory.Web.UserManagement/HomeInventory.Web.UserManagement.csproj
+++ b/src/HomeInventory/HomeInventory.Web.UserManagement/HomeInventory.Web.UserManagement.csproj
@@ -14,4 +14,8 @@
+
+
+
+
diff --git a/src/HomeInventory/HomeInventory.Web.UserManagement/UserManagementContractsMappings.cs b/src/HomeInventory/HomeInventory.Web.UserManagement/UserManagementContractsMappings.cs
index 31334af77..cb5d9f05e 100644
--- a/src/HomeInventory/HomeInventory.Web.UserManagement/UserManagementContractsMappings.cs
+++ b/src/HomeInventory/HomeInventory.Web.UserManagement/UserManagementContractsMappings.cs
@@ -12,8 +12,8 @@ internal sealed class UserManagementContractsMappings : BaseMappingsProfile
{
public UserManagementContractsMappings()
{
- CreateMap().Using(x => x.Value, UserId.Converter);
- CreateMap().Using(x => x.Value, x => new(x));
+ CreateMap().Using(static x => x.Value, UserId.Converter);
+ CreateMap().Using(static x => x.Value, static x => new(x));
CreateMap().Using(CreateRegisterCommand);
diff --git a/src/HomeInventory/HomeInventory.Web/Authorization/Dynamic/DynamicAuthorizationServiceCollectionExtensions.cs b/src/HomeInventory/HomeInventory.Web/Authorization/Dynamic/DynamicAuthorizationServiceCollectionExtensions.cs
index 8bfa39884..204e5a9e4 100644
--- a/src/HomeInventory/HomeInventory.Web/Authorization/Dynamic/DynamicAuthorizationServiceCollectionExtensions.cs
+++ b/src/HomeInventory/HomeInventory.Web/Authorization/Dynamic/DynamicAuthorizationServiceCollectionExtensions.cs
@@ -5,6 +5,6 @@ namespace HomeInventory.Web.Authorization.Dynamic;
public static class DynamicAuthorizationServiceCollectionExtensions
{
public static TBuilder RequireDynamicAuthorization(this TBuilder builder, params PermissionType[] permissions)
- where TBuilder : IEndpointConventionBuilder =>
+ where TBuilder : IEndpointConventionBuilder =>
builder.RequireAuthorization(AuthorizationPolicyNames.Dynamic).WithMetadata(new PermissionMetadata(permissions));
}
diff --git a/src/HomeInventory/HomeInventory.Web/Configuration/Validation/JwtOptionsValidator.cs b/src/HomeInventory/HomeInventory.Web/Configuration/Validation/JwtOptionsValidator.cs
index b3e511e2a..8bcd91237 100644
--- a/src/HomeInventory/HomeInventory.Web/Configuration/Validation/JwtOptionsValidator.cs
+++ b/src/HomeInventory/HomeInventory.Web/Configuration/Validation/JwtOptionsValidator.cs
@@ -6,10 +6,10 @@ internal sealed class JwtOptionsValidator : AbstractValidator, IOpti
{
public JwtOptionsValidator()
{
- RuleFor(x => x.Secret).NotEmpty();
- RuleFor(x => x.Issuer).NotEmpty();
- RuleFor(x => x.Audience).NotEmpty();
- RuleFor(x => x.Algorithm).NotEmpty();
- RuleFor(x => x.Expiry).GreaterThan(TimeSpan.FromSeconds(1));
+ RuleFor(static x => x.Secret).NotEmpty();
+ RuleFor(static x => x.Issuer).NotEmpty();
+ RuleFor(static x => x.Audience).NotEmpty();
+ RuleFor(static x => x.Algorithm).NotEmpty();
+ RuleFor(static x => x.Expiry).GreaterThan(TimeSpan.FromSeconds(1));
}
}
diff --git a/src/HomeInventory/HomeInventory.Web/ErrorHandling/HomeInventoryProblemDetailsFactory.cs b/src/HomeInventory/HomeInventory.Web/ErrorHandling/HomeInventoryProblemDetailsFactory.cs
index 917d767b9..2f6dd271c 100644
--- a/src/HomeInventory/HomeInventory.Web/ErrorHandling/HomeInventoryProblemDetailsFactory.cs
+++ b/src/HomeInventory/HomeInventory.Web/ErrorHandling/HomeInventoryProblemDetailsFactory.cs
@@ -64,7 +64,7 @@ private ProblemDetails InternalConvertToProblem(IEnumerable errors)
return problems.FirstOrDefault() ?? throw new InvalidOperationException("Has to be at least one error provided");
}
- var statuses = problems.Select(x => x.Status).ToHashSet();
+ var statuses = problems.Select(static x => x.Status).ToHashSet();
var status = (statuses.Count == 1 ? statuses.First() : default) ?? _defaultStatusCode;
return CreateProblem(
status,
diff --git a/src/HomeInventory/HomeInventory.Web/ErrorHandling/ProblemDetailsExtensions.cs b/src/HomeInventory/HomeInventory.Web/ErrorHandling/ProblemDetailsExtensions.cs
index 5ee676560..3df3a6266 100644
--- a/src/HomeInventory/HomeInventory.Web/ErrorHandling/ProblemDetailsExtensions.cs
+++ b/src/HomeInventory/HomeInventory.Web/ErrorHandling/ProblemDetailsExtensions.cs
@@ -39,7 +39,7 @@ public static TProblem AddProblemDetailsExtensions(this TProblem probl
public static TProblem AddProblemDetailsExtensions(this TProblem problemDetails, Seq errors)
where TProblem : ProblemDetails
{
- problemDetails.Extensions["errorCodes"] = errors.Select(e => e.GetType().Name).ToArray();
+ problemDetails.Extensions["errorCodes"] = errors.Select(static e => e.GetType().Name).ToArray();
problemDetails.Extensions["errors"] = errors.ToArray();
return problemDetails;
}
@@ -53,15 +53,15 @@ public static TProblem AddProblemsAndStatuses(this TProblem problemDet
private static Dictionary ToErrorDictionary(this ModelStateDictionary modelState) =>
modelState
- .Select(p => (p.Key, Messages: p.Value?.Errors.GetErrorMessages() ?? []))
- .Where(x => x.Messages.Length > 0)
- .ToDictionary(x => x.Key, x => x.Messages);
+ .Select(static p => (p.Key, Messages: p.Value?.Errors.GetErrorMessages() ?? []))
+ .Where(static x => x.Messages.Length > 0)
+ .ToDictionary(static x => x.Key, static x => x.Messages);
private static string[] GetErrorMessages(this ModelErrorCollection collection) =>
collection switch
{
{ Count: 1 } errors => [errors[0].GetErrorMessage()],
- { } errors => errors.Select(e => e.GetErrorMessage()).ToArray(),
+ { } errors => errors.Select(static e => e.GetErrorMessage()).ToArray(),
_ => [],
};
diff --git a/src/HomeInventory/HomeInventory.Web/HomeInventory.Web.csproj b/src/HomeInventory/HomeInventory.Web/HomeInventory.Web.csproj
index 1bd60ba45..a69242ba3 100644
--- a/src/HomeInventory/HomeInventory.Web/HomeInventory.Web.csproj
+++ b/src/HomeInventory/HomeInventory.Web/HomeInventory.Web.csproj
@@ -13,6 +13,7 @@
+
diff --git a/src/HomeInventory/HomeInventory.Web/Modules/AuthenticationModule.cs b/src/HomeInventory/HomeInventory.Web/Modules/AuthenticationModule.cs
index 0178fdfbb..04cf73576 100644
--- a/src/HomeInventory/HomeInventory.Web/Modules/AuthenticationModule.cs
+++ b/src/HomeInventory/HomeInventory.Web/Modules/AuthenticationModule.cs
@@ -22,7 +22,7 @@ protected override void AddRoutes(RouteGroupBuilder group)
{
group.MapPost("login", LoginAsync)
.AllowAnonymous()
- .WithValidationOf(s => s.IncludeAllRuleSets());
+ .WithValidationOf(static s => s.IncludeAllRuleSets());
}
public async Task, ProblemHttpResult>> LoginAsync([FromBody] LoginRequest body, HttpContext context, CancellationToken cancellationToken = default)
diff --git a/src/HomeInventory/HomeInventory.Web/Modules/PermissionModule.cs b/src/HomeInventory/HomeInventory.Web/Modules/PermissionModule.cs
index b44b51340..7c324fea8 100644
--- a/src/HomeInventory/HomeInventory.Web/Modules/PermissionModule.cs
+++ b/src/HomeInventory/HomeInventory.Web/Modules/PermissionModule.cs
@@ -22,5 +22,5 @@ protected override void AddRoutes(RouteGroupBuilder group)
}
public static Task>> GetPermissionsAsync([FromServices] PermissionList list, CancellationToken cancellationToken = default)
- => Task.FromResult(TypedResults.Ok(list.Select(p => p.ToString())));
+ => Task.FromResult(TypedResults.Ok(list.Select(static p => p.ToString())));
}
diff --git a/src/HomeInventory/global.json b/src/HomeInventory/global.json
index a3cf554a1..4eda52220 100644
--- a/src/HomeInventory/global.json
+++ b/src/HomeInventory/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "8.0.403",
+ "version": "9.0.100",
"rollForward": "latestMajor",
"allowPrerelease": false
}