diff --git a/.editorconfig b/.editorconfig
index 31931b5..222a736 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -215,6 +215,16 @@ dotnet_naming_symbols.async_methods.required_modifiers = async
dotnet_naming_style.end_in_async.required_suffix = Async
dotnet_naming_style.end_in_async.capitalization = pascal_case
+# Async Naming Rules Exceptions
+[*ArchitectureTests/**/*.cs]
+dotnet_naming_rule.async_methods_end_in_async.severity = silent
+
+[*IntegrationTests/**/*.cs]
+dotnet_naming_rule.async_methods_end_in_async.severity = silent
+
+[*UnitTests*/**/*.cs]
+dotnet_naming_rule.async_methods_end_in_async.severity = silent
+
# Symbol specifications
dotnet_naming_symbols.interface.applicable_kinds = interface
diff --git a/.github/workflows/callstack-reviewer.yml b/.github/workflows/callstack-reviewer.yml
deleted file mode 100644
index f08982f..0000000
--- a/.github/workflows/callstack-reviewer.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-name: Callstack.ai PR Review
-
-permissions:
- contents: read
-
-on:
- workflow_dispatch:
- inputs:
- config:
- type: string
- description: "config for reviewer"
- required: true
- head:
- type: string
- description: "head commit sha"
- required: true
-
-jobs:
- callstack_pr_review_job:
- runs-on: ubuntu-latest
- steps:
- - name: Review PR
- uses: callstackai/action@main
- with:
- config: ${{ inputs.config }}
- head: ${{ inputs.head }}
\ No newline at end of file
diff --git a/Directory.Packages.props b/Directory.Packages.props
index e708603..8495e6b 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -5,66 +5,66 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
+
-
-
+
+
-
-
-
+
+
+
-
+
-
+
-
-
-
+
+
+
diff --git a/InvoiceReminder.API/Endpoints/InvoiceEndpoints.cs b/InvoiceReminder.API/Endpoints/InvoiceEndpoints.cs
index f4b8a94..aa52e12 100644
--- a/InvoiceReminder.API/Endpoints/InvoiceEndpoints.cs
+++ b/InvoiceReminder.API/Endpoints/InvoiceEndpoints.cs
@@ -32,7 +32,7 @@ private static void MapGetInvoices(RouteGroupBuilder endpoint)
})
.WithName("GetInvoices")
.RequireAuthorization()
- .Produces(StatusCodes.Status200OK)
+ .Produces>(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
@@ -50,7 +50,7 @@ private static void MapGetInvoice(RouteGroupBuilder endpoint)
})
.WithName("GetInvoice")
.RequireAuthorization()
- .Produces(StatusCodes.Status200OK)
+ .Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
@@ -70,7 +70,7 @@ private static void MapGetInvoiceByBarcode(RouteGroupBuilder endpoint)
})
.WithName("GetInvoiceByBarcode")
.RequireAuthorization()
- .Produces(StatusCodes.Status200OK)
+ .Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
diff --git a/InvoiceReminder.API/Endpoints/JobScheduleEndpoints.cs b/InvoiceReminder.API/Endpoints/JobScheduleEndpoints.cs
index 10e9199..a3452a7 100644
--- a/InvoiceReminder.API/Endpoints/JobScheduleEndpoints.cs
+++ b/InvoiceReminder.API/Endpoints/JobScheduleEndpoints.cs
@@ -32,7 +32,7 @@ private static void MapGetJobSchedules(RouteGroupBuilder endpoint)
})
.WithName("GetJobSchedules")
.RequireAuthorization()
- .Produces(StatusCodes.Status200OK)
+ .Produces>(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
@@ -51,7 +51,7 @@ private static void MapGetJobSchedule(RouteGroupBuilder endpoint)
})
.WithName("GetJobSchedule")
.RequireAuthorization()
- .Produces(StatusCodes.Status200OK)
+ .Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
@@ -71,7 +71,7 @@ private static void MapGetJobScheduleByUserId(RouteGroupBuilder endpoint)
})
.WithName("GetJobScheduleByUserId")
.RequireAuthorization()
- .Produces(StatusCodes.Status200OK)
+ .Produces>(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
diff --git a/InvoiceReminder.API/Endpoints/ScanEmailDefinitionEndpoints.cs b/InvoiceReminder.API/Endpoints/ScanEmailDefinitionEndpoints.cs
index bd65d6c..df43b79 100644
--- a/InvoiceReminder.API/Endpoints/ScanEmailDefinitionEndpoints.cs
+++ b/InvoiceReminder.API/Endpoints/ScanEmailDefinitionEndpoints.cs
@@ -33,7 +33,7 @@ private static void MapGetScanEmailDefinitions(RouteGroupBuilder endpoint)
})
.WithName("GetScanEmailDefinitions")
.RequireAuthorization()
- .Produces(StatusCodes.Status200OK)
+ .Produces>(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
@@ -52,7 +52,7 @@ private static void MapGetScanEmailDefinition(RouteGroupBuilder endpoint)
})
.WithName("GetScanEmailDefinition")
.RequireAuthorization()
- .Produces(StatusCodes.Status200OK)
+ .Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
@@ -72,7 +72,7 @@ private static void MapGetByUserId(RouteGroupBuilder endpoint)
})
.WithName("GetByUserId")
.RequireAuthorization()
- .Produces(StatusCodes.Status200OK)
+ .Produces>(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
@@ -92,7 +92,7 @@ private static void MapGetBySenderEmailAddress(RouteGroupBuilder endpoint)
})
.WithName("GetBySenderEmailAddress")
.RequireAuthorization()
- .Produces(StatusCodes.Status200OK)
+ .Produces>(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
diff --git a/InvoiceReminder.API/Endpoints/UserEndpoints.cs b/InvoiceReminder.API/Endpoints/UserEndpoints.cs
index 3b0985d..bbba0f6 100644
--- a/InvoiceReminder.API/Endpoints/UserEndpoints.cs
+++ b/InvoiceReminder.API/Endpoints/UserEndpoints.cs
@@ -34,7 +34,7 @@ private static void MapGetUsers(RouteGroupBuilder endpoint)
})
.WithName("GetUsers")
.RequireAuthorization()
- .Produces(StatusCodes.Status200OK)
+ .Produces>(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
@@ -52,7 +52,7 @@ private static void MapGetUser(RouteGroupBuilder endpoint)
})
.WithName("GetUser")
.RequireAuthorization()
- .Produces(StatusCodes.Status200OK)
+ .Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
@@ -72,7 +72,7 @@ private static void MapGetUserByEmail(RouteGroupBuilder endpoint)
})
.WithName("GetUserByEmail")
.RequireAuthorization()
- .Produces(StatusCodes.Status200OK)
+ .Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
diff --git a/InvoiceReminder.API/InvoiceReminder.API.csproj b/InvoiceReminder.API/InvoiceReminder.API.csproj
index 2ac0a6d..2d484ac 100644
--- a/InvoiceReminder.API/InvoiceReminder.API.csproj
+++ b/InvoiceReminder.API/InvoiceReminder.API.csproj
@@ -11,7 +11,6 @@
-
diff --git a/InvoiceReminder.API/InvoiceReminder.http b/InvoiceReminder.API/InvoiceReminder.http
index c6e20d9..4ba14cb 100644
--- a/InvoiceReminder.API/InvoiceReminder.http
+++ b/InvoiceReminder.API/InvoiceReminder.http
@@ -41,15 +41,14 @@ Authorization: Bearer your_jwt_token_here
### Create User
POST {{InvoiceReminder_HostAddress}}/api/user
Content-Type: application/json
-Authorization: Bearer your_jwt_token_here
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "João Silva",
"email": "joao@example.com",
- "password": "password123",
- "createdAt": "2025-11-25T00:00:00Z",
- "updatedAt": "2025-11-25T00:00:00Z"
+ "userPassword": {
+ "passwordHash": "123456"
+ }
}
###
@@ -64,17 +63,17 @@ Authorization: Bearer your_jwt_token_here
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "João Silva",
"email": "joao@example.com",
- "password": "password123",
- "createdAt": "2025-11-25T00:00:00Z",
- "updatedAt": "2025-11-25T00:00:00Z"
+ "userPassword": {
+ "passwordHash": "123456"
+ }
},
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"name": "Maria Santos",
"email": "maria@example.com",
- "password": "password123",
- "createdAt": "2025-11-25T00:00:00Z",
- "updatedAt": "2025-11-25T00:00:00Z"
+ "userPassword": {
+ "passwordHash": "123456"
+ }
}
]
@@ -89,9 +88,22 @@ Authorization: Bearer your_jwt_token_here
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "João Silva Updated",
"email": "joao.updated@example.com",
- "password": "newpassword123",
- "createdAt": "2025-11-25T00:00:00Z",
- "updatedAt": "2025-11-25T00:00:00Z"
+ "userPassword": {
+ "passwordHash": "newPassword123456"
+ }
+}
+
+###
+
+### Update Basic User Info
+PATCH {{InvoiceReminder_HostAddress}}/api/user
+Content-Type: application/json
+Authorization: Bearer your_jwt_token_here
+
+{
+ "id": "550e8400-e29b-41d4-a716-446655440000",
+ "name": "João Silva Updated",
+ "email": "joao.updated@example.com"
}
###
@@ -104,10 +116,7 @@ Authorization: Bearer your_jwt_token_here
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "João Silva",
- "email": "joao@example.com",
- "password": "password123",
- "createdAt": "2025-11-25T00:00:00Z",
- "updatedAt": "2025-11-25T00:00:00Z"
+ "email": "joao@example.com"
}
###
@@ -131,7 +140,7 @@ Authorization: Bearer your_jwt_token_here
###
### Get Invoice by Barcode
-GET {{InvoiceReminder_HostAddress}}/api/invoice/getby-barcode/12345678901234567890123456789012345678901234
+GET {{InvoiceReminder_HostAddress}}/api/invoice/getby-barcode/12345678901234567890123456789012345678901244
Accept: application/json
Authorization: Bearer your_jwt_token_here
@@ -147,10 +156,8 @@ Authorization: Bearer your_jwt_token_here
"bank": "Banco do Brasil",
"beneficiary": "João da Silva",
"amount": 100.00,
- "barcode": "12345678901234567890123456789012345678901234",
- "dueDate": "2025-12-25T00:00:00Z",
- "createdAt": "2025-11-25T00:00:00Z",
- "updatedAt": "2025-11-25T00:00:00Z"
+ "barcode": "12345678901234567890123456789012345678901244",
+ "dueDate": "2025-12-25T00:00:00Z"
}
###
@@ -167,8 +174,6 @@ Authorization: Bearer your_jwt_token_here
"amount": 150.00,
"barcode": "12345678901234567890123456789012345678901244",
"dueDate": "2025-12-25T00:00:00Z",
- "createdAt": "2025-11-25T00:00:00Z",
- "updatedAt": "2025-11-25T00:00:00Z"
}
###
@@ -184,9 +189,7 @@ Authorization: Bearer your_jwt_token_here
"beneficiary": "João da Silva",
"amount": 100.00,
"barcode": "12345678901234567890123456789012345678901244",
- "dueDate": "2025-12-25T00:00:00Z",
- "createdAt": "2025-11-25T00:00:00Z",
- "updatedAt": "2025-11-25T00:00:00Z"
+ "dueDate": "2025-12-25T00:00:00Z"
}
###
@@ -224,9 +227,7 @@ Authorization: Bearer your_jwt_token_here
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"userId": "550e8400-e29b-41d4-a716-446655440000",
- "cronExpression": "0 0 * * *",
- "createdAt": "2025-11-25T00:00:00Z",
- "updatedAt": "2025-11-25T00:00:00Z"
+ "cronExpression": "0 0 * * *"
}
###
@@ -239,9 +240,7 @@ Authorization: Bearer your_jwt_token_here
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"userId": "550e8400-e29b-41d4-a716-446655440000",
- "cronExpression": "0 0 * * 1",
- "createdAt": "2025-11-25T00:00:00Z",
- "updatedAt": "2025-11-25T00:00:00Z"
+ "cronExpression": "0 0 * * 1"
}
###
@@ -254,9 +253,7 @@ Authorization: Bearer your_jwt_token_here
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"userId": "550e8400-e29b-41d4-a716-446655440000",
- "cronExpression": "0 0 * * *",
- "createdAt": "2025-11-25T00:00:00Z",
- "updatedAt": "2025-11-25T00:00:00Z"
+ "cronExpression": "0 0 * * *"
}
###
@@ -287,7 +284,7 @@ Authorization: Bearer your_jwt_token_here
###
### Get Scan Email Definition by Sender Email Address
-GET {{InvoiceReminder_HostAddress}}/api/scan_email/sender@example.com/550e8400-e29b-41d4-a716-446655440000
+GET {{InvoiceReminder_HostAddress}}/api/scan_email/getby-sender/sender@example.com/550e8400-e29b-41d4-a716-446655440000
Accept: application/json
Authorization: Bearer your_jwt_token_here
@@ -301,9 +298,7 @@ Authorization: Bearer your_jwt_token_here
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"userId": "550e8400-e29b-41d4-a716-446655440000",
- "senderEmailAddress": "sender@example.com",
- "createdAt": "2025-11-25T00:00:00Z",
- "updatedAt": "2025-11-25T00:00:00Z"
+ "senderEmailAddress": "sender@example.com"
}
###
@@ -316,9 +311,7 @@ Authorization: Bearer your_jwt_token_here
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"userId": "550e8400-e29b-41d4-a716-446655440000",
- "senderEmailAddress": "newemail@example.com",
- "createdAt": "2025-11-25T00:00:00Z",
- "updatedAt": "2025-11-25T00:00:00Z"
+ "senderEmailAddress": "newemail@example.com"
}
###
@@ -331,9 +324,7 @@ Authorization: Bearer your_jwt_token_here
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"userId": "550e8400-e29b-41d4-a716-446655440000",
- "senderEmailAddress": "sender@example.com",
- "createdAt": "2025-11-25T00:00:00Z",
- "updatedAt": "2025-11-25T00:00:00Z"
+ "senderEmailAddress": "sender@example.com"
}
###
diff --git a/InvoiceReminder.API/Program.cs b/InvoiceReminder.API/Program.cs
index 1df8d5c..9e054fc 100644
--- a/InvoiceReminder.API/Program.cs
+++ b/InvoiceReminder.API/Program.cs
@@ -1,7 +1,6 @@
using InvoiceReminder.API.AuthenticationSetup;
using InvoiceReminder.API.Extensions;
using InvoiceReminder.CrossCutting.IoC;
-using Microsoft.Extensions.Diagnostics.HealthChecks;
using Scalar.AspNetCore;
var builder = WebApplication.CreateBuilder(args);
@@ -11,33 +10,21 @@
builder.Services.AddExceptionHandler();
builder.Services.AddInfrastructure();
builder.Services.AddOpenApi(opt => opt.AddDocumentTransformer());
-
+builder.Services.ConfigureOptions();
+builder.Services.ConfigureOptions();
builder.Services.AddCors(opt =>
opt.AddPolicy("CorsPolicy", policy =>
- {
- var allowedOrigins = builder.Configuration.GetSection("Cors:AllowedOrigins").Get() ?? [];
-
- _ = policy
- .AllowAnyMethod()
- .AllowCredentials()
- .WithOrigins(allowedOrigins)
- .WithHeaders("Content-Type", "Authorization");
- }
- )
+ {
+ var allowedOrigins = builder.Configuration.GetSection("Cors:AllowedOrigins").Get() ?? [];
+
+ _ = policy
+ .AllowAnyMethod()
+ .AllowCredentials()
+ .WithOrigins(allowedOrigins)
+ .WithHeaders("Content-Type", "Authorization");
+ })
);
-builder.Services.AddHealthChecks().AddNpgSql
-(
- connectionString: builder.Configuration.GetConnectionString("DataBaseConnection"),
- name: "postgres",
- healthQuery: "SELECT 1;",
- tags: ["db", "sql", "critical"],
- failureStatus: HealthStatus.Unhealthy
-);
-
-builder.Services.ConfigureOptions();
-builder.Services.ConfigureOptions();
-
var app = builder.Build();
if (app.Environment.IsDevelopment())
diff --git a/InvoiceReminder.API/appsettings.json b/InvoiceReminder.API/appsettings.json
index 37ff50a..6c296fc 100644
--- a/InvoiceReminder.API/appsettings.json
+++ b/InvoiceReminder.API/appsettings.json
@@ -2,7 +2,8 @@
"Logging": {
"LogLevel": {
"Default": "Information",
- "Microsoft.AspNetCore": "Warning"
+ "Microsoft": "Information",
+ "Microsoft.AspNetCore": "Information"
}
},
"AllowedHosts": "*",
diff --git a/InvoiceReminder.Application/AppServices/UserAppService.cs b/InvoiceReminder.Application/AppServices/UserAppService.cs
index 2c3c996..905d219 100644
--- a/InvoiceReminder.Application/AppServices/UserAppService.cs
+++ b/InvoiceReminder.Application/AppServices/UserAppService.cs
@@ -89,6 +89,6 @@ public async Task> UpdateBasicUserInfoAsync(
return result
? Result.Success(viewModel)
- : Result.Failure("User not Found!");
+ : Result.Failure("Failure on updating User");
}
}
diff --git a/InvoiceReminder.ArchitectureTests/InvoiceReminder.ArchitectureTests.csproj b/InvoiceReminder.ArchitectureTests/InvoiceReminder.ArchitectureTests.csproj
index 803b79a..eef0c92 100644
--- a/InvoiceReminder.ArchitectureTests/InvoiceReminder.ArchitectureTests.csproj
+++ b/InvoiceReminder.ArchitectureTests/InvoiceReminder.ArchitectureTests.csproj
@@ -1,4 +1,4 @@
-
+
true
diff --git a/InvoiceReminder.CrossCutting.IoC/DependencyInjectionConfig.cs b/InvoiceReminder.CrossCutting.IoC/DependencyInjectionConfig.cs
index c3fbfab..597515e 100644
--- a/InvoiceReminder.CrossCutting.IoC/DependencyInjectionConfig.cs
+++ b/InvoiceReminder.CrossCutting.IoC/DependencyInjectionConfig.cs
@@ -11,6 +11,7 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Diagnostics.HealthChecks;
using Quartz;
using Quartz.Impl;
using Quartz.Spi;
@@ -35,12 +36,13 @@ public static IServiceCollection AddInfrastructure(this IServiceCollection servi
_ = services.AddHostedService();
- _ = services.AddAppServices()
- .AddDbContext()
+ _ = services.AddDbContext()
+ .AddRepositories()
+ .AddAppServices()
.AddExternalServices()
.AddQuartzJobService()
- .AddRepositories()
- .AddScheduledJobs();
+ .AddScheduledJobs()
+ .AddHealthCheck();
return services;
}
@@ -98,6 +100,21 @@ private static IServiceCollection AddExternalServices(this IServiceCollection se
return services;
}
+ private static IServiceCollection AddHealthCheck(this IServiceCollection services)
+ {
+ _ = services.AddHealthChecks().AddNpgSql
+ (
+ connectionStringFactory: sp => sp.GetRequiredService()
+ .GetConnectionString("DatabaseConnection"),
+ name: "postgres",
+ healthQuery: "SELECT 1;",
+ tags: ["db", "sql", "critical"],
+ failureStatus: HealthStatus.Unhealthy
+ );
+
+ return services;
+ }
+
private static IServiceCollection AddQuartzJobService(this IServiceCollection services)
{
_ = services.AddHostedService();
diff --git a/InvoiceReminder.CrossCutting.IoC/InvoiceReminder.CrossCutting.IoC.csproj b/InvoiceReminder.CrossCutting.IoC/InvoiceReminder.CrossCutting.IoC.csproj
index 0d983da..6dc89e7 100644
--- a/InvoiceReminder.CrossCutting.IoC/InvoiceReminder.CrossCutting.IoC.csproj
+++ b/InvoiceReminder.CrossCutting.IoC/InvoiceReminder.CrossCutting.IoC.csproj
@@ -1,4 +1,4 @@
-
+
@@ -9,6 +9,7 @@
+
diff --git a/InvoiceReminder.Data/InvoiceReminder.Data.csproj b/InvoiceReminder.Data/InvoiceReminder.Data.csproj
index b35eebb..2a44f9a 100644
--- a/InvoiceReminder.Data/InvoiceReminder.Data.csproj
+++ b/InvoiceReminder.Data/InvoiceReminder.Data.csproj
@@ -6,8 +6,8 @@
-
-
+
+
diff --git a/InvoiceReminder.IntegrationTests/InvoiceReminder.IntegrationTests.csproj b/InvoiceReminder.IntegrationTests/InvoiceReminder.IntegrationTests.csproj
index 9e79e2e..6b89eeb 100644
--- a/InvoiceReminder.IntegrationTests/InvoiceReminder.IntegrationTests.csproj
+++ b/InvoiceReminder.IntegrationTests/InvoiceReminder.IntegrationTests.csproj
@@ -1,4 +1,4 @@
-
+
CA1873
diff --git a/InvoiceReminder.UnitTests.API/InvoiceReminder.UnitTests.API.csproj b/InvoiceReminder.UnitTests.API/InvoiceReminder.UnitTests.API.csproj
index 298ec50..05dbcf3 100644
--- a/InvoiceReminder.UnitTests.API/InvoiceReminder.UnitTests.API.csproj
+++ b/InvoiceReminder.UnitTests.API/InvoiceReminder.UnitTests.API.csproj
@@ -1,4 +1,4 @@
-
+
true
diff --git a/InvoiceReminder.UnitTests.Application/AppServices/UserAppServiceTests.cs b/InvoiceReminder.UnitTests.Application/AppServices/UserAppServiceTests.cs
index 84c8fdb..c538d57 100644
--- a/InvoiceReminder.UnitTests.Application/AppServices/UserAppServiceTests.cs
+++ b/InvoiceReminder.UnitTests.Application/AppServices/UserAppServiceTests.cs
@@ -182,7 +182,7 @@ public async Task UpdateBasicUserInfoAsync_WhenUserNotFound_ShouldReturnFailure(
_ = result.ShouldNotBeNull();
result.Value.ShouldBeNull();
result.Error.ShouldNotBeNullOrEmpty();
- result.Error.ShouldBe("User not Found!");
+ result.Error.ShouldBe("Failure on updating User");
});
}
}
diff --git a/InvoiceReminder.UnitTests.Application/InvoiceReminder.UnitTests.Application.csproj b/InvoiceReminder.UnitTests.Application/InvoiceReminder.UnitTests.Application.csproj
index 199d191..2c83bec 100644
--- a/InvoiceReminder.UnitTests.Application/InvoiceReminder.UnitTests.Application.csproj
+++ b/InvoiceReminder.UnitTests.Application/InvoiceReminder.UnitTests.Application.csproj
@@ -1,4 +1,4 @@
-
+
true
diff --git a/InvoiceReminder.UnitTests.Domain/InvoiceReminder.UnitTests.Domain.csproj b/InvoiceReminder.UnitTests.Domain/InvoiceReminder.UnitTests.Domain.csproj
index f1eced2..d755811 100644
--- a/InvoiceReminder.UnitTests.Domain/InvoiceReminder.UnitTests.Domain.csproj
+++ b/InvoiceReminder.UnitTests.Domain/InvoiceReminder.UnitTests.Domain.csproj
@@ -1,4 +1,4 @@
-
+
true
diff --git a/InvoiceReminder.UnitTests.ExternalServices/InvoiceReminder.UnitTests.ExternalServices.csproj b/InvoiceReminder.UnitTests.ExternalServices/InvoiceReminder.UnitTests.ExternalServices.csproj
index 271ba4a..46bca07 100644
--- a/InvoiceReminder.UnitTests.ExternalServices/InvoiceReminder.UnitTests.ExternalServices.csproj
+++ b/InvoiceReminder.UnitTests.ExternalServices/InvoiceReminder.UnitTests.ExternalServices.csproj
@@ -1,4 +1,4 @@
-
+
CA1873
diff --git a/InvoiceReminder.UnitTests.Infrastructure/InvoiceReminder.UnitTests.Infrastructure.csproj b/InvoiceReminder.UnitTests.Infrastructure/InvoiceReminder.UnitTests.Infrastructure.csproj
index f7a5494..f72f69d 100644
--- a/InvoiceReminder.UnitTests.Infrastructure/InvoiceReminder.UnitTests.Infrastructure.csproj
+++ b/InvoiceReminder.UnitTests.Infrastructure/InvoiceReminder.UnitTests.Infrastructure.csproj
@@ -1,4 +1,4 @@
-
+
true
diff --git a/InvoiceReminder.UnitTests.JobScheduler/InvoiceReminder.UnitTests.JobScheduler.csproj b/InvoiceReminder.UnitTests.JobScheduler/InvoiceReminder.UnitTests.JobScheduler.csproj
index 2a4b76c..1764707 100644
--- a/InvoiceReminder.UnitTests.JobScheduler/InvoiceReminder.UnitTests.JobScheduler.csproj
+++ b/InvoiceReminder.UnitTests.JobScheduler/InvoiceReminder.UnitTests.JobScheduler.csproj
@@ -1,4 +1,4 @@
-
+
CA1873
diff --git a/global.json b/global.json
index c5c2593..8f01b00 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,9 @@
{
"sdk": {
- "version": "10.0.201"
+ "version": "10.0.202"
+ },
+ "msbuild-sdks": {
+ "MSTest.Sdk": "4.2.1"
},
"test": {
"runner": "Microsoft.Testing.Platform"