From 9ba530417cfad29c3a43b54b98977a590490233c Mon Sep 17 00:00:00 2001 From: alex289 Date: Thu, 31 Aug 2023 18:19:17 +0200 Subject: [PATCH] chore: Move properties over ctor --- .../Tenants/GetAllTenantsTestFixture.cs | 6 ++-- .../Tenants/GetTenantByIdTestFixture.cs | 6 ++-- .../Queries/Users/GetAllUsersTestFixture.cs | 8 +++--- .../Queries/Users/GetUserByIdTestFixture.cs | 8 +++--- .../CreateTenantCommandTestFixture.cs | 8 +++--- .../DeleteTenantCommandTestFixture.cs | 12 ++++---- .../UpdateTenantCommandTestFixture.cs | 8 +++--- .../ChangePasswordCommandTestFixture.cs | 6 ++-- .../CreateUserCommandTestFixture.cs | 11 ++++---- .../DeleteUserCommandTestFixture.cs | 6 ++-- .../LoginUser/LoginUserCommandTestFixture.cs | 8 +++--- .../UpdateUserCommandHandlerTests.cs | 16 +++++------ .../UpdateUserCommandTestFixture.cs | 10 +++---- .../CommandHandlerFixtureBase.cs | 10 +++---- .../Commands/CommandBase.cs | 10 +++---- .../CreateTenant/CreateTenantCommand.cs | 4 +-- .../UpdateTenant/UpdateTenantCommand.cs | 4 +-- .../ChangePassword/ChangePasswordCommand.cs | 6 ++-- .../Users/CreateUser/CreateUserCommand.cs | 14 +++++----- .../Users/DeleteUser/DeleteUserCommand.cs | 4 +-- .../Users/LoginUser/LoginUserCommand.cs | 6 ++-- .../Users/UpdateUser/UpdateUserCommand.cs | 14 +++++----- .../UpdateUser/UpdateUserCommandHandler.cs | 3 +- .../DomainEvents/DomainEvent.cs | 4 +-- .../DomainEvents/Message.cs | 6 ++-- .../DomainEvents/StoredDomainEvent.cs | 10 +++---- .../StoredDomainNotification.cs | 10 +++---- CleanArchitecture.Domain/Entities/Entity.cs | 6 ++-- CleanArchitecture.Domain/Entities/Tenant.cs | 8 +++--- CleanArchitecture.Domain/Entities/User.cs | 22 +++++++-------- .../Events/Tenant/TenantCreatedEvent.cs | 4 +-- .../Events/Tenant/TenantUpdatedEvent.cs | 4 +-- .../Notifications/DomainNotification.cs | 12 ++++---- .../Database/ApplicationDbContext.cs | 6 ++-- .../DomainNotificationStoreDbContext.cs | 4 +-- .../Database/EventStoreDbContext.cs | 4 +-- .../Controller/UserControllerTests.cs | 28 +++++++++---------- .../Fixtures/TenantTestFixture.cs | 2 +- .../Fixtures/TestFixtureBase.cs | 6 ++-- .../gRPC/GetTenantsByIdsTestFixture.cs | 6 ++-- .../Fixtures/gRPC/GetUsersByIdsTestFixture.cs | 6 ++-- .../Auth/TestAuthenticationOptions.cs | 4 +-- .../CleanArchitectureWebApplicationFactory.cs | 2 +- .../Fixtures/TenantTestFixture.cs | 10 +++---- .../Fixtures/UserTestFixture.cs | 12 ++++---- 45 files changed, 182 insertions(+), 182 deletions(-) diff --git a/CleanArchitecture.Application.Tests/Fixtures/Queries/Tenants/GetAllTenantsTestFixture.cs b/CleanArchitecture.Application.Tests/Fixtures/Queries/Tenants/GetAllTenantsTestFixture.cs index ef21f15..b13ac69 100644 --- a/CleanArchitecture.Application.Tests/Fixtures/Queries/Tenants/GetAllTenantsTestFixture.cs +++ b/CleanArchitecture.Application.Tests/Fixtures/Queries/Tenants/GetAllTenantsTestFixture.cs @@ -10,6 +10,9 @@ namespace CleanArchitecture.Application.Tests.Fixtures.Queries.Tenants; public sealed class GetAllTenantsTestFixture : QueryHandlerBaseFixture { + public GetAllTenantsQueryHandler QueryHandler { get; } + private ITenantRepository TenantRepository { get; } + public GetAllTenantsTestFixture() { TenantRepository = Substitute.For(); @@ -17,9 +20,6 @@ public sealed class GetAllTenantsTestFixture : QueryHandlerBaseFixture QueryHandler = new GetAllTenantsQueryHandler(TenantRepository); } - public GetAllTenantsQueryHandler QueryHandler { get; } - private ITenantRepository TenantRepository { get; } - public Tenant SetupTenant(bool deleted = false) { var tenant = new Tenant(Guid.NewGuid(), "Tenant 1"); diff --git a/CleanArchitecture.Application.Tests/Fixtures/Queries/Tenants/GetTenantByIdTestFixture.cs b/CleanArchitecture.Application.Tests/Fixtures/Queries/Tenants/GetTenantByIdTestFixture.cs index ac12b58..e5d0622 100644 --- a/CleanArchitecture.Application.Tests/Fixtures/Queries/Tenants/GetTenantByIdTestFixture.cs +++ b/CleanArchitecture.Application.Tests/Fixtures/Queries/Tenants/GetTenantByIdTestFixture.cs @@ -10,6 +10,9 @@ namespace CleanArchitecture.Application.Tests.Fixtures.Queries.Tenants; public sealed class GetTenantByIdTestFixture : QueryHandlerBaseFixture { + public GetTenantByIdQueryHandler QueryHandler { get; } + private ITenantRepository TenantRepository { get; } + public GetTenantByIdTestFixture() { TenantRepository = Substitute.For(); @@ -19,9 +22,6 @@ public sealed class GetTenantByIdTestFixture : QueryHandlerBaseFixture Bus); } - public GetTenantByIdQueryHandler QueryHandler { get; } - private ITenantRepository TenantRepository { get; } - public Tenant SetupTenant(bool deleted = false) { var tenant = new Tenant(Guid.NewGuid(), "Tenant 1"); diff --git a/CleanArchitecture.Application.Tests/Fixtures/Queries/Users/GetAllUsersTestFixture.cs b/CleanArchitecture.Application.Tests/Fixtures/Queries/Users/GetAllUsersTestFixture.cs index efdabee..61b70d7 100644 --- a/CleanArchitecture.Application.Tests/Fixtures/Queries/Users/GetAllUsersTestFixture.cs +++ b/CleanArchitecture.Application.Tests/Fixtures/Queries/Users/GetAllUsersTestFixture.cs @@ -10,6 +10,10 @@ namespace CleanArchitecture.Application.Tests.Fixtures.Queries.Users; public sealed class GetAllUsersTestFixture : QueryHandlerBaseFixture { + private IUserRepository UserRepository { get; } + public GetAllUsersQueryHandler Handler { get; } + public Guid ExistingUserId { get; } = Guid.NewGuid(); + public GetAllUsersTestFixture() { UserRepository = Substitute.For(); @@ -17,10 +21,6 @@ public sealed class GetAllUsersTestFixture : QueryHandlerBaseFixture Handler = new GetAllUsersQueryHandler(UserRepository); } - private IUserRepository UserRepository { get; } - public GetAllUsersQueryHandler Handler { get; } - public Guid ExistingUserId { get; } = Guid.NewGuid(); - public void SetupUserAsync() { var user = new User( diff --git a/CleanArchitecture.Application.Tests/Fixtures/Queries/Users/GetUserByIdTestFixture.cs b/CleanArchitecture.Application.Tests/Fixtures/Queries/Users/GetUserByIdTestFixture.cs index 11b407f..9464fed 100644 --- a/CleanArchitecture.Application.Tests/Fixtures/Queries/Users/GetUserByIdTestFixture.cs +++ b/CleanArchitecture.Application.Tests/Fixtures/Queries/Users/GetUserByIdTestFixture.cs @@ -11,6 +11,10 @@ namespace CleanArchitecture.Application.Tests.Fixtures.Queries.Users; public sealed class GetUserByIdTestFixture : QueryHandlerBaseFixture { + private IUserRepository UserRepository { get; } + public GetUserByIdQueryHandler Handler { get; } + public Guid ExistingUserId { get; } = Guid.NewGuid(); + public GetUserByIdTestFixture() { UserRepository = Substitute.For(); @@ -18,10 +22,6 @@ public sealed class GetUserByIdTestFixture : QueryHandlerBaseFixture Handler = new GetUserByIdQueryHandler(UserRepository, Bus); } - private IUserRepository UserRepository { get; } - public GetUserByIdQueryHandler Handler { get; } - public Guid ExistingUserId { get; } = Guid.NewGuid(); - public void SetupUserAsync() { var user = new User( diff --git a/CleanArchitecture.Domain.Tests/CommandHandler/Tenant/CreateTenant/CreateTenantCommandTestFixture.cs b/CleanArchitecture.Domain.Tests/CommandHandler/Tenant/CreateTenant/CreateTenantCommandTestFixture.cs index d2ca1f2..3fc9210 100644 --- a/CleanArchitecture.Domain.Tests/CommandHandler/Tenant/CreateTenant/CreateTenantCommandTestFixture.cs +++ b/CleanArchitecture.Domain.Tests/CommandHandler/Tenant/CreateTenant/CreateTenantCommandTestFixture.cs @@ -8,6 +8,10 @@ namespace CleanArchitecture.Domain.Tests.CommandHandler.Tenant.CreateTenant; public sealed class CreateTenantCommandTestFixture : CommandHandlerFixtureBase { + public CreateTenantCommandHandler CommandHandler { get; } + + private ITenantRepository TenantRepository { get; } + public CreateTenantCommandTestFixture() { TenantRepository = Substitute.For(); @@ -20,10 +24,6 @@ public sealed class CreateTenantCommandTestFixture : CommandHandlerFixtureBase User); } - public CreateTenantCommandHandler CommandHandler { get; } - - private ITenantRepository TenantRepository { get; } - public void SetupUser() { User.GetUserRole().Returns(UserRole.User); diff --git a/CleanArchitecture.Domain.Tests/CommandHandler/Tenant/DeleteTenant/DeleteTenantCommandTestFixture.cs b/CleanArchitecture.Domain.Tests/CommandHandler/Tenant/DeleteTenant/DeleteTenantCommandTestFixture.cs index b929df9..0617c3b 100644 --- a/CleanArchitecture.Domain.Tests/CommandHandler/Tenant/DeleteTenant/DeleteTenantCommandTestFixture.cs +++ b/CleanArchitecture.Domain.Tests/CommandHandler/Tenant/DeleteTenant/DeleteTenantCommandTestFixture.cs @@ -8,6 +8,11 @@ namespace CleanArchitecture.Domain.Tests.CommandHandler.Tenant.DeleteTenant; public sealed class DeleteTenantCommandTestFixture : CommandHandlerFixtureBase { + public DeleteTenantCommandHandler CommandHandler { get; } + + private ITenantRepository TenantRepository { get; } + private IUserRepository UserRepository { get; } + public DeleteTenantCommandTestFixture() { TenantRepository = Substitute.For(); @@ -22,11 +27,6 @@ public sealed class DeleteTenantCommandTestFixture : CommandHandlerFixtureBase User); } - public DeleteTenantCommandHandler CommandHandler { get; } - - private ITenantRepository TenantRepository { get; } - private IUserRepository UserRepository { get; } - public Entities.Tenant SetupTenant() { var tenant = new Entities.Tenant(Guid.NewGuid(), "TestTenant"); @@ -37,7 +37,7 @@ public sealed class DeleteTenantCommandTestFixture : CommandHandlerFixtureBase return tenant; } - + public void SetupUser() { User.GetUserRole().Returns(UserRole.User); diff --git a/CleanArchitecture.Domain.Tests/CommandHandler/Tenant/UpdateTenant/UpdateTenantCommandTestFixture.cs b/CleanArchitecture.Domain.Tests/CommandHandler/Tenant/UpdateTenant/UpdateTenantCommandTestFixture.cs index dbd1695..ddf762a 100644 --- a/CleanArchitecture.Domain.Tests/CommandHandler/Tenant/UpdateTenant/UpdateTenantCommandTestFixture.cs +++ b/CleanArchitecture.Domain.Tests/CommandHandler/Tenant/UpdateTenant/UpdateTenantCommandTestFixture.cs @@ -8,6 +8,10 @@ namespace CleanArchitecture.Domain.Tests.CommandHandler.Tenant.UpdateTenant; public sealed class UpdateTenantCommandTestFixture : CommandHandlerFixtureBase { + public UpdateTenantCommandHandler CommandHandler { get; } + + private ITenantRepository TenantRepository { get; } + public UpdateTenantCommandTestFixture() { TenantRepository = Substitute.For(); @@ -20,10 +24,6 @@ public sealed class UpdateTenantCommandTestFixture : CommandHandlerFixtureBase User); } - public UpdateTenantCommandHandler CommandHandler { get; } - - private ITenantRepository TenantRepository { get; } - public void SetupUser() { User.GetUserRole().Returns(UserRole.User); diff --git a/CleanArchitecture.Domain.Tests/CommandHandler/User/ChangePassword/ChangePasswordCommandTestFixture.cs b/CleanArchitecture.Domain.Tests/CommandHandler/User/ChangePassword/ChangePasswordCommandTestFixture.cs index 314716b..5da9561 100644 --- a/CleanArchitecture.Domain.Tests/CommandHandler/User/ChangePassword/ChangePasswordCommandTestFixture.cs +++ b/CleanArchitecture.Domain.Tests/CommandHandler/User/ChangePassword/ChangePasswordCommandTestFixture.cs @@ -9,6 +9,9 @@ namespace CleanArchitecture.Domain.Tests.CommandHandler.User.ChangePassword; public sealed class ChangePasswordCommandTestFixture : CommandHandlerFixtureBase { + public ChangePasswordCommandHandler CommandHandler { get; } + private IUserRepository UserRepository { get; } + public ChangePasswordCommandTestFixture() { UserRepository = Substitute.For(); @@ -21,9 +24,6 @@ public sealed class ChangePasswordCommandTestFixture : CommandHandlerFixtureBase User); } - public ChangePasswordCommandHandler CommandHandler { get; } - private IUserRepository UserRepository { get; } - public Entities.User SetupUser() { var user = new Entities.User( diff --git a/CleanArchitecture.Domain.Tests/CommandHandler/User/CreateUser/CreateUserCommandTestFixture.cs b/CleanArchitecture.Domain.Tests/CommandHandler/User/CreateUser/CreateUserCommandTestFixture.cs index 6d6e5dc..812257f 100644 --- a/CleanArchitecture.Domain.Tests/CommandHandler/User/CreateUser/CreateUserCommandTestFixture.cs +++ b/CleanArchitecture.Domain.Tests/CommandHandler/User/CreateUser/CreateUserCommandTestFixture.cs @@ -9,6 +9,11 @@ namespace CleanArchitecture.Domain.Tests.CommandHandler.User.CreateUser; public sealed class CreateUserCommandTestFixture : CommandHandlerFixtureBase { + public CreateUserCommandHandler CommandHandler { get; } + private IUserRepository UserRepository { get; } + private ITenantRepository TenantRepository { get; } + private IUser User { get; } + public CreateUserCommandTestFixture() { UserRepository = Substitute.For(); @@ -24,12 +29,6 @@ public sealed class CreateUserCommandTestFixture : CommandHandlerFixtureBase User); } - // Todo: Properties over ctor - public CreateUserCommandHandler CommandHandler { get; } - private IUserRepository UserRepository { get; } - private ITenantRepository TenantRepository { get; } - private IUser User { get; } - public Entities.User SetupUser() { var user = new Entities.User( diff --git a/CleanArchitecture.Domain.Tests/CommandHandler/User/DeleteUser/DeleteUserCommandTestFixture.cs b/CleanArchitecture.Domain.Tests/CommandHandler/User/DeleteUser/DeleteUserCommandTestFixture.cs index 89c4eee..96f7d5d 100644 --- a/CleanArchitecture.Domain.Tests/CommandHandler/User/DeleteUser/DeleteUserCommandTestFixture.cs +++ b/CleanArchitecture.Domain.Tests/CommandHandler/User/DeleteUser/DeleteUserCommandTestFixture.cs @@ -8,6 +8,9 @@ namespace CleanArchitecture.Domain.Tests.CommandHandler.User.DeleteUser; public sealed class DeleteUserCommandTestFixture : CommandHandlerFixtureBase { + public DeleteUserCommandHandler CommandHandler { get; } + private IUserRepository UserRepository { get; } + public DeleteUserCommandTestFixture() { UserRepository = Substitute.For(); @@ -20,9 +23,6 @@ public sealed class DeleteUserCommandTestFixture : CommandHandlerFixtureBase User); } - public DeleteUserCommandHandler CommandHandler { get; } - private IUserRepository UserRepository { get; } - public Entities.User SetupUser() { var user = new Entities.User( diff --git a/CleanArchitecture.Domain.Tests/CommandHandler/User/LoginUser/LoginUserCommandTestFixture.cs b/CleanArchitecture.Domain.Tests/CommandHandler/User/LoginUser/LoginUserCommandTestFixture.cs index 7a08da8..155b6b7 100644 --- a/CleanArchitecture.Domain.Tests/CommandHandler/User/LoginUser/LoginUserCommandTestFixture.cs +++ b/CleanArchitecture.Domain.Tests/CommandHandler/User/LoginUser/LoginUserCommandTestFixture.cs @@ -11,6 +11,10 @@ namespace CleanArchitecture.Domain.Tests.CommandHandler.User.LoginUser; public sealed class LoginUserCommandTestFixture : CommandHandlerFixtureBase { + public LoginUserCommandHandler CommandHandler { get; set; } + public IUserRepository UserRepository { get; set; } + public IOptions TokenSettings { get; set; } + public LoginUserCommandTestFixture() { UserRepository = Substitute.For(); @@ -30,10 +34,6 @@ public sealed class LoginUserCommandTestFixture : CommandHandlerFixtureBase TokenSettings); } - public LoginUserCommandHandler CommandHandler { get; set; } - public IUserRepository UserRepository { get; set; } - public IOptions TokenSettings { get; set; } - public Entities.User SetupUser() { var user = new Entities.User( diff --git a/CleanArchitecture.Domain.Tests/CommandHandler/User/UpdateUser/UpdateUserCommandHandlerTests.cs b/CleanArchitecture.Domain.Tests/CommandHandler/User/UpdateUser/UpdateUserCommandHandlerTests.cs index 7542c97..c1229b7 100644 --- a/CleanArchitecture.Domain.Tests/CommandHandler/User/UpdateUser/UpdateUserCommandHandlerTests.cs +++ b/CleanArchitecture.Domain.Tests/CommandHandler/User/UpdateUser/UpdateUserCommandHandlerTests.cs @@ -48,7 +48,7 @@ public sealed class UpdateUserCommandHandlerTests "Email", UserRole.User, Guid.NewGuid()); - + _fixture.SetupTenant(command.TenantId); await _fixture.CommandHandler.Handle(command, default); @@ -74,7 +74,7 @@ public sealed class UpdateUserCommandHandlerTests "Email", UserRole.User, Guid.NewGuid()); - + _fixture.SetupTenant(command.TenantId); _fixture.UserRepository @@ -98,7 +98,7 @@ public sealed class UpdateUserCommandHandlerTests DomainErrorCodes.User.UserAlreadyExists, $"There is already a user with email {command.Email}"); } - + [Fact] public async Task Should_Not_Update_Non_Existing_Tenant() { @@ -111,7 +111,7 @@ public sealed class UpdateUserCommandHandlerTests "Email", UserRole.User, Guid.NewGuid()); - + await _fixture.CommandHandler.Handle(command, default); _fixture @@ -122,13 +122,13 @@ public sealed class UpdateUserCommandHandlerTests ErrorCodes.ObjectNotFound, $"There is no tenant with Id {command.TenantId}"); } - + [Fact] public async Task Should_Not_Update_Admin_Properties() { var user = _fixture.SetupUser(); _fixture.SetupCurrentUser(user.Id); - + var command = new UpdateUserCommand( user.Id, "test@email.com", @@ -140,8 +140,8 @@ public sealed class UpdateUserCommandHandlerTests _fixture.SetupTenant(command.TenantId); await _fixture.CommandHandler.Handle(command, default); - - _fixture.UserRepository.Received(1).Update(Arg.Is(u => + + _fixture.UserRepository.Received(1).Update(Arg.Is(u => u.TenantId == user.TenantId && u.Role == user.Role && u.Id == command.UserId && diff --git a/CleanArchitecture.Domain.Tests/CommandHandler/User/UpdateUser/UpdateUserCommandTestFixture.cs b/CleanArchitecture.Domain.Tests/CommandHandler/User/UpdateUser/UpdateUserCommandTestFixture.cs index 6f144a0..4e572d4 100644 --- a/CleanArchitecture.Domain.Tests/CommandHandler/User/UpdateUser/UpdateUserCommandTestFixture.cs +++ b/CleanArchitecture.Domain.Tests/CommandHandler/User/UpdateUser/UpdateUserCommandTestFixture.cs @@ -8,6 +8,10 @@ namespace CleanArchitecture.Domain.Tests.CommandHandler.User.UpdateUser; public sealed class UpdateUserCommandTestFixture : CommandHandlerFixtureBase { + public UpdateUserCommandHandler CommandHandler { get; } + public IUserRepository UserRepository { get; } + private ITenantRepository TenantRepository { get; } + public UpdateUserCommandTestFixture() { UserRepository = Substitute.For(); @@ -22,10 +26,6 @@ public sealed class UpdateUserCommandTestFixture : CommandHandlerFixtureBase TenantRepository); } - public UpdateUserCommandHandler CommandHandler { get; } - public IUserRepository UserRepository { get; } - private ITenantRepository TenantRepository { get; } - public Entities.User SetupUser() { var user = new Entities.User( @@ -47,7 +47,7 @@ public sealed class UpdateUserCommandTestFixture : CommandHandlerFixtureBase public Entities.Tenant SetupTenant(Guid tenantId) { var tenant = new Entities.Tenant(tenantId, "Name"); - + TenantRepository .ExistsAsync(Arg.Is(y => y == tenant.Id)) .Returns(true); diff --git a/CleanArchitecture.Domain.Tests/CommandHandlerFixtureBase.cs b/CleanArchitecture.Domain.Tests/CommandHandlerFixtureBase.cs index 27b46ef..1d5087b 100644 --- a/CleanArchitecture.Domain.Tests/CommandHandlerFixtureBase.cs +++ b/CleanArchitecture.Domain.Tests/CommandHandlerFixtureBase.cs @@ -10,6 +10,11 @@ namespace CleanArchitecture.Domain.Tests; public class CommandHandlerFixtureBase { + protected IMediatorHandler Bus { get; } + protected IUnitOfWork UnitOfWork { get; } + protected DomainNotificationHandler NotificationHandler { get; } + protected IUser User { get; } + protected CommandHandlerFixtureBase() { Bus = Substitute.For(); @@ -23,11 +28,6 @@ public class CommandHandlerFixtureBase UnitOfWork.CommitAsync().Returns(true); } - protected IMediatorHandler Bus { get; } - protected IUnitOfWork UnitOfWork { get; } - protected DomainNotificationHandler NotificationHandler { get; } - protected IUser User { get; } - public CommandHandlerFixtureBase VerifyExistingNotification(string errorCode, string message) { Bus.Received(1).RaiseEventAsync( diff --git a/CleanArchitecture.Domain/Commands/CommandBase.cs b/CleanArchitecture.Domain/Commands/CommandBase.cs index 02d78d1..d659231 100644 --- a/CleanArchitecture.Domain/Commands/CommandBase.cs +++ b/CleanArchitecture.Domain/Commands/CommandBase.cs @@ -6,6 +6,11 @@ namespace CleanArchitecture.Domain.Commands; public abstract class CommandBase : IRequest { + public Guid AggregateId { get; } + public string MessageType { get; } + public DateTime Timestamp { get; } + public ValidationResult? ValidationResult { get; protected set; } + protected CommandBase(Guid aggregateId) { MessageType = GetType().Name; @@ -13,10 +18,5 @@ public abstract class CommandBase : IRequest AggregateId = aggregateId; } - public Guid AggregateId { get; } - public string MessageType { get; } - public DateTime Timestamp { get; } - public ValidationResult? ValidationResult { get; protected set; } - public abstract bool IsValid(); } \ No newline at end of file diff --git a/CleanArchitecture.Domain/Commands/Tenants/CreateTenant/CreateTenantCommand.cs b/CleanArchitecture.Domain/Commands/Tenants/CreateTenant/CreateTenantCommand.cs index febc727..b9bc519 100644 --- a/CleanArchitecture.Domain/Commands/Tenants/CreateTenant/CreateTenantCommand.cs +++ b/CleanArchitecture.Domain/Commands/Tenants/CreateTenant/CreateTenantCommand.cs @@ -6,13 +6,13 @@ public sealed class CreateTenantCommand : CommandBase { private static readonly CreateTenantCommandValidation s_validation = new(); + public string Name { get; } + public CreateTenantCommand(Guid tenantId, string name) : base(tenantId) { Name = name; } - public string Name { get; } - public override bool IsValid() { ValidationResult = s_validation.Validate(this); diff --git a/CleanArchitecture.Domain/Commands/Tenants/UpdateTenant/UpdateTenantCommand.cs b/CleanArchitecture.Domain/Commands/Tenants/UpdateTenant/UpdateTenantCommand.cs index cafbfef..fd2356d 100644 --- a/CleanArchitecture.Domain/Commands/Tenants/UpdateTenant/UpdateTenantCommand.cs +++ b/CleanArchitecture.Domain/Commands/Tenants/UpdateTenant/UpdateTenantCommand.cs @@ -6,13 +6,13 @@ public sealed class UpdateTenantCommand : CommandBase { private static readonly UpdateTenantCommandValidation s_validation = new(); + public string Name { get; } + public UpdateTenantCommand(Guid tenantId, string name) : base(tenantId) { Name = name; } - public string Name { get; } - public override bool IsValid() { ValidationResult = s_validation.Validate(this); diff --git a/CleanArchitecture.Domain/Commands/Users/ChangePassword/ChangePasswordCommand.cs b/CleanArchitecture.Domain/Commands/Users/ChangePassword/ChangePasswordCommand.cs index 8d60484..18ba9a2 100644 --- a/CleanArchitecture.Domain/Commands/Users/ChangePassword/ChangePasswordCommand.cs +++ b/CleanArchitecture.Domain/Commands/Users/ChangePassword/ChangePasswordCommand.cs @@ -6,15 +6,15 @@ public sealed class ChangePasswordCommand : CommandBase { private static readonly ChangePasswordCommandValidation s_validation = new(); + public string Password { get; } + public string NewPassword { get; } + public ChangePasswordCommand(string password, string newPassword) : base(Guid.NewGuid()) { Password = password; NewPassword = newPassword; } - public string Password { get; } - public string NewPassword { get; } - public override bool IsValid() { ValidationResult = s_validation.Validate(this); diff --git a/CleanArchitecture.Domain/Commands/Users/CreateUser/CreateUserCommand.cs b/CleanArchitecture.Domain/Commands/Users/CreateUser/CreateUserCommand.cs index fb17c86..3929d0a 100644 --- a/CleanArchitecture.Domain/Commands/Users/CreateUser/CreateUserCommand.cs +++ b/CleanArchitecture.Domain/Commands/Users/CreateUser/CreateUserCommand.cs @@ -6,6 +6,13 @@ public sealed class CreateUserCommand : CommandBase { private static readonly CreateUserCommandValidation s_validation = new(); + public Guid UserId { get; } + public Guid TenantId { get; } + public string Email { get; } + public string FirstName { get; } + public string LastName { get; } + public string Password { get; } + public CreateUserCommand( Guid userId, Guid tenantId, @@ -22,13 +29,6 @@ public sealed class CreateUserCommand : CommandBase Password = password; } - public Guid UserId { get; } - public Guid TenantId { get; } - public string Email { get; } - public string FirstName { get; } - public string LastName { get; } - public string Password { get; } - public override bool IsValid() { ValidationResult = s_validation.Validate(this); diff --git a/CleanArchitecture.Domain/Commands/Users/DeleteUser/DeleteUserCommand.cs b/CleanArchitecture.Domain/Commands/Users/DeleteUser/DeleteUserCommand.cs index 2aa4910..eda35ae 100644 --- a/CleanArchitecture.Domain/Commands/Users/DeleteUser/DeleteUserCommand.cs +++ b/CleanArchitecture.Domain/Commands/Users/DeleteUser/DeleteUserCommand.cs @@ -6,13 +6,13 @@ public sealed class DeleteUserCommand : CommandBase { private static readonly DeleteUserCommandValidation s_validation = new(); + public Guid UserId { get; } + public DeleteUserCommand(Guid userId) : base(userId) { UserId = userId; } - public Guid UserId { get; } - public override bool IsValid() { ValidationResult = s_validation.Validate(this); diff --git a/CleanArchitecture.Domain/Commands/Users/LoginUser/LoginUserCommand.cs b/CleanArchitecture.Domain/Commands/Users/LoginUser/LoginUserCommand.cs index d5bc6e6..838d3a9 100644 --- a/CleanArchitecture.Domain/Commands/Users/LoginUser/LoginUserCommand.cs +++ b/CleanArchitecture.Domain/Commands/Users/LoginUser/LoginUserCommand.cs @@ -8,6 +8,9 @@ public sealed class LoginUserCommand : CommandBase, { private static readonly LoginUserCommandValidation s_validation = new(); + public string Email { get; set; } + public string Password { get; set; } + public LoginUserCommand( string email, @@ -17,9 +20,6 @@ public sealed class LoginUserCommand : CommandBase, Password = password; } - public string Email { get; set; } - public string Password { get; set; } - public override bool IsValid() { ValidationResult = s_validation.Validate(this); diff --git a/CleanArchitecture.Domain/Commands/Users/UpdateUser/UpdateUserCommand.cs b/CleanArchitecture.Domain/Commands/Users/UpdateUser/UpdateUserCommand.cs index 98d6641..9f7f58c 100644 --- a/CleanArchitecture.Domain/Commands/Users/UpdateUser/UpdateUserCommand.cs +++ b/CleanArchitecture.Domain/Commands/Users/UpdateUser/UpdateUserCommand.cs @@ -7,6 +7,13 @@ public sealed class UpdateUserCommand : CommandBase { private static readonly UpdateUserCommandValidation s_validation = new(); + public Guid UserId { get; } + public Guid TenantId { get; } + public string Email { get; } + public string FirstName { get; } + public string LastName { get; } + public UserRole Role { get; } + public UpdateUserCommand( Guid userId, string email, @@ -22,13 +29,6 @@ public sealed class UpdateUserCommand : CommandBase TenantId = tenantId; } - public Guid UserId { get; } - public Guid TenantId { get; } - public string Email { get; } - public string FirstName { get; } - public string LastName { get; } - public UserRole Role { get; } - public override bool IsValid() { ValidationResult = s_validation.Validate(this); diff --git a/CleanArchitecture.Domain/Commands/Users/UpdateUser/UpdateUserCommandHandler.cs b/CleanArchitecture.Domain/Commands/Users/UpdateUser/UpdateUserCommandHandler.cs index cbfec13..09ef27e 100644 --- a/CleanArchitecture.Domain/Commands/Users/UpdateUser/UpdateUserCommandHandler.cs +++ b/CleanArchitecture.Domain/Commands/Users/UpdateUser/UpdateUserCommandHandler.cs @@ -13,9 +13,9 @@ namespace CleanArchitecture.Domain.Commands.Users.UpdateUser; public sealed class UpdateUserCommandHandler : CommandHandlerBase, IRequestHandler { + private readonly ITenantRepository _tenantRepository; private readonly IUser _user; private readonly IUserRepository _userRepository; - private readonly ITenantRepository _tenantRepository; public UpdateUserCommandHandler( IMediatorHandler bus, @@ -88,6 +88,7 @@ public sealed class UpdateUserCommandHandler : CommandHandlerBase, ErrorCodes.ObjectNotFound)); return; } + user.SetTenant(request.TenantId); } diff --git a/CleanArchitecture.Domain/DomainEvents/DomainEvent.cs b/CleanArchitecture.Domain/DomainEvents/DomainEvent.cs index e5c25a9..37d8eaf 100644 --- a/CleanArchitecture.Domain/DomainEvents/DomainEvent.cs +++ b/CleanArchitecture.Domain/DomainEvents/DomainEvent.cs @@ -5,6 +5,8 @@ namespace CleanArchitecture.Domain.DomainEvents; public abstract class DomainEvent : Message, INotification { + public DateTime Timestamp { get; private set; } + protected DomainEvent(Guid aggregateId) : base(aggregateId) { Timestamp = DateTime.Now; @@ -14,6 +16,4 @@ public abstract class DomainEvent : Message, INotification { Timestamp = DateTime.Now; } - - public DateTime Timestamp { get; private set; } } \ No newline at end of file diff --git a/CleanArchitecture.Domain/DomainEvents/Message.cs b/CleanArchitecture.Domain/DomainEvents/Message.cs index 58622a3..a99929e 100644 --- a/CleanArchitecture.Domain/DomainEvents/Message.cs +++ b/CleanArchitecture.Domain/DomainEvents/Message.cs @@ -5,6 +5,9 @@ namespace CleanArchitecture.Domain.DomainEvents; public abstract class Message : IRequest { + public Guid AggregateId { get; private set; } + public string MessageType { get; protected set; } + protected Message(Guid aggregateId) { AggregateId = aggregateId; @@ -16,7 +19,4 @@ public abstract class Message : IRequest AggregateId = aggregateId; MessageType = messageType ?? string.Empty; } - - public Guid AggregateId { get; private set; } - public string MessageType { get; protected set; } } \ No newline at end of file diff --git a/CleanArchitecture.Domain/DomainEvents/StoredDomainEvent.cs b/CleanArchitecture.Domain/DomainEvents/StoredDomainEvent.cs index 895bc9c..5220441 100644 --- a/CleanArchitecture.Domain/DomainEvents/StoredDomainEvent.cs +++ b/CleanArchitecture.Domain/DomainEvents/StoredDomainEvent.cs @@ -4,6 +4,11 @@ namespace CleanArchitecture.Domain.DomainEvents; public class StoredDomainEvent : DomainEvent { + public Guid Id { get; private set; } + public string Data { get; private set; } = string.Empty; + public string User { get; private set; } = string.Empty; + public string CorrelationId { get; private set; } = string.Empty; + public StoredDomainEvent( DomainEvent domainEvent, string data, @@ -21,9 +26,4 @@ public class StoredDomainEvent : DomainEvent protected StoredDomainEvent() : base(Guid.NewGuid()) { } - - public Guid Id { get; private set; } - public string Data { get; private set; } = string.Empty; - public string User { get; private set; } = string.Empty; - public string CorrelationId { get; private set; } = string.Empty; } \ No newline at end of file diff --git a/CleanArchitecture.Domain/DomainNotifications/StoredDomainNotification.cs b/CleanArchitecture.Domain/DomainNotifications/StoredDomainNotification.cs index b3fc594..a4800a4 100644 --- a/CleanArchitecture.Domain/DomainNotifications/StoredDomainNotification.cs +++ b/CleanArchitecture.Domain/DomainNotifications/StoredDomainNotification.cs @@ -5,6 +5,11 @@ namespace CleanArchitecture.Domain.DomainNotifications; public class StoredDomainNotification : DomainNotification { + public Guid Id { get; private set; } + public string SerializedData { get; private set; } = string.Empty; + public string User { get; private set; } = string.Empty; + public string CorrelationId { get; private set; } = string.Empty; + public StoredDomainNotification( DomainNotification domainNotification, string data, @@ -28,9 +33,4 @@ public class StoredDomainNotification : DomainNotification protected StoredDomainNotification() : base(string.Empty, string.Empty, string.Empty) { } - - public Guid Id { get; private set; } - public string SerializedData { get; private set; } = string.Empty; - public string User { get; private set; } = string.Empty; - public string CorrelationId { get; private set; } = string.Empty; } \ No newline at end of file diff --git a/CleanArchitecture.Domain/Entities/Entity.cs b/CleanArchitecture.Domain/Entities/Entity.cs index 99a272a..41c7b54 100644 --- a/CleanArchitecture.Domain/Entities/Entity.cs +++ b/CleanArchitecture.Domain/Entities/Entity.cs @@ -4,14 +4,14 @@ namespace CleanArchitecture.Domain.Entities; public abstract class Entity { + public Guid Id { get; private set; } + public bool Deleted { get; private set; } + protected Entity(Guid id) { Id = id; } - public Guid Id { get; private set; } - public bool Deleted { get; private set; } - public void SetId(Guid id) { if (id == Guid.Empty) diff --git a/CleanArchitecture.Domain/Entities/Tenant.cs b/CleanArchitecture.Domain/Entities/Tenant.cs index 74b97fd..9b5f2c5 100644 --- a/CleanArchitecture.Domain/Entities/Tenant.cs +++ b/CleanArchitecture.Domain/Entities/Tenant.cs @@ -5,6 +5,10 @@ namespace CleanArchitecture.Domain.Entities; public class Tenant : Entity { + public string Name { get; private set; } + + public virtual ICollection Users { get; private set; } = new HashSet(); + public Tenant( Guid id, string name) : base(id) @@ -12,10 +16,6 @@ public class Tenant : Entity Name = name; } - public string Name { get; private set; } - - public virtual ICollection Users { get; private set; } = new HashSet(); - public void SetName(string name) { Name = name; diff --git a/CleanArchitecture.Domain/Entities/User.cs b/CleanArchitecture.Domain/Entities/User.cs index c897574..f33ea9d 100644 --- a/CleanArchitecture.Domain/Entities/User.cs +++ b/CleanArchitecture.Domain/Entities/User.cs @@ -5,6 +5,17 @@ namespace CleanArchitecture.Domain.Entities; public class User : Entity { + public string Email { get; private set; } + public string FirstName { get; private set; } + public string LastName { get; private set; } + public string Password { get; private set; } + public UserRole Role { get; private set; } + + public string FullName => $"{FirstName}, {LastName}"; + + public Guid TenantId { get; private set; } + public virtual Tenant Tenant { get; private set; } = null!; + public User( Guid id, Guid tenantId, @@ -22,17 +33,6 @@ public class User : Entity Role = role; } - public string Email { get; private set; } - public string FirstName { get; private set; } - public string LastName { get; private set; } - public string Password { get; private set; } - public UserRole Role { get; private set; } - - public string FullName => $"{FirstName}, {LastName}"; - - public Guid TenantId { get; private set; } - public virtual Tenant Tenant { get; private set; } = null!; - public void SetEmail(string email) { Email = email; diff --git a/CleanArchitecture.Domain/Events/Tenant/TenantCreatedEvent.cs b/CleanArchitecture.Domain/Events/Tenant/TenantCreatedEvent.cs index fcdca66..dc558b6 100644 --- a/CleanArchitecture.Domain/Events/Tenant/TenantCreatedEvent.cs +++ b/CleanArchitecture.Domain/Events/Tenant/TenantCreatedEvent.cs @@ -5,10 +5,10 @@ namespace CleanArchitecture.Domain.Events.Tenant; public sealed class TenantCreatedEvent : DomainEvent { + public string Name { get; set; } + public TenantCreatedEvent(Guid tenantId, string name) : base(tenantId) { Name = name; } - - public string Name { get; set; } } \ No newline at end of file diff --git a/CleanArchitecture.Domain/Events/Tenant/TenantUpdatedEvent.cs b/CleanArchitecture.Domain/Events/Tenant/TenantUpdatedEvent.cs index 0c099d2..20675d1 100644 --- a/CleanArchitecture.Domain/Events/Tenant/TenantUpdatedEvent.cs +++ b/CleanArchitecture.Domain/Events/Tenant/TenantUpdatedEvent.cs @@ -5,10 +5,10 @@ namespace CleanArchitecture.Domain.Events.Tenant; public sealed class TenantUpdatedEvent : DomainEvent { + public string Name { get; set; } + public TenantUpdatedEvent(Guid tenantId, string name) : base(tenantId) { Name = name; } - - public string Name { get; set; } } \ No newline at end of file diff --git a/CleanArchitecture.Domain/Notifications/DomainNotification.cs b/CleanArchitecture.Domain/Notifications/DomainNotification.cs index f3da784..c228ab4 100644 --- a/CleanArchitecture.Domain/Notifications/DomainNotification.cs +++ b/CleanArchitecture.Domain/Notifications/DomainNotification.cs @@ -5,6 +5,12 @@ namespace CleanArchitecture.Domain.Notifications; public class DomainNotification : DomainEvent { + public string Key { get; } + public string Value { get; } + public string Code { get; } + public object? Data { get; set; } + public int Version { get; private set; } = 1; + public DomainNotification( string key, string value, @@ -19,10 +25,4 @@ public class DomainNotification : DomainEvent Data = data; } - - public string Key { get; } - public string Value { get; } - public string Code { get; } - public object? Data { get; set; } - public int Version { get; private set; } = 1; } \ No newline at end of file diff --git a/CleanArchitecture.Infrastructure/Database/ApplicationDbContext.cs b/CleanArchitecture.Infrastructure/Database/ApplicationDbContext.cs index f2dea27..6a5517f 100644 --- a/CleanArchitecture.Infrastructure/Database/ApplicationDbContext.cs +++ b/CleanArchitecture.Infrastructure/Database/ApplicationDbContext.cs @@ -6,13 +6,13 @@ namespace CleanArchitecture.Infrastructure.Database; public class ApplicationDbContext : DbContext { + public DbSet Users { get; set; } = null!; + public DbSet Tenants { get; set; } = null!; + public ApplicationDbContext(DbContextOptions options) : base(options) { } - public DbSet Users { get; set; } = null!; - public DbSet Tenants { get; set; } = null!; - protected override void OnModelCreating(ModelBuilder builder) { builder.ApplyConfiguration(new UserConfiguration()); diff --git a/CleanArchitecture.Infrastructure/Database/DomainNotificationStoreDbContext.cs b/CleanArchitecture.Infrastructure/Database/DomainNotificationStoreDbContext.cs index 7002617..9b8c603 100644 --- a/CleanArchitecture.Infrastructure/Database/DomainNotificationStoreDbContext.cs +++ b/CleanArchitecture.Infrastructure/Database/DomainNotificationStoreDbContext.cs @@ -6,12 +6,12 @@ namespace CleanArchitecture.Infrastructure.Database; public class DomainNotificationStoreDbContext : DbContext { + public virtual DbSet StoredDomainNotifications { get; set; } = null!; + public DomainNotificationStoreDbContext(DbContextOptions options) : base(options) { } - public virtual DbSet StoredDomainNotifications { get; set; } = null!; - protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); diff --git a/CleanArchitecture.Infrastructure/Database/EventStoreDbContext.cs b/CleanArchitecture.Infrastructure/Database/EventStoreDbContext.cs index e7e7c65..fa6e2d0 100644 --- a/CleanArchitecture.Infrastructure/Database/EventStoreDbContext.cs +++ b/CleanArchitecture.Infrastructure/Database/EventStoreDbContext.cs @@ -6,12 +6,12 @@ namespace CleanArchitecture.Infrastructure.Database; public class EventStoreDbContext : DbContext { + public virtual DbSet StoredDomainEvents { get; set; } = null!; + public EventStoreDbContext(DbContextOptions options) : base(options) { } - public virtual DbSet StoredDomainEvents { get; set; } = null!; - protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.ApplyConfiguration(new StoredDomainEventConfiguration()); diff --git a/CleanArchitecture.IntegrationTests/Controller/UserControllerTests.cs b/CleanArchitecture.IntegrationTests/Controller/UserControllerTests.cs index b78553f..45dd1f4 100644 --- a/CleanArchitecture.IntegrationTests/Controller/UserControllerTests.cs +++ b/CleanArchitecture.IntegrationTests/Controller/UserControllerTests.cs @@ -25,7 +25,7 @@ public sealed class UserControllerTests : IClassFixture { _fixture = fixture; } - + [Fact] [Priority(0)] public async Task Should_Get_All_User() @@ -49,21 +49,21 @@ public sealed class UserControllerTests : IClassFixture currentUser.FirstName.Should().Be(TestAuthenticationOptions.FirstName); currentUser.LastName.Should().Be(TestAuthenticationOptions.LastName); } - + [Fact] [Priority(5)] public async Task Should_Get_User_By_Id() { var response = await _fixture.ServerClient.GetAsync("/api/v1/user/" + TestAuthenticationOptions.TestUserId); - + response.StatusCode.Should().Be(HttpStatusCode.OK); - + var message = await response.Content.ReadAsJsonAsync(); - + message?.Data.Should().NotBeNull(); - + var content = message!.Data!; - + content.Id.Should().Be(TestAuthenticationOptions.TestUserId); content.Email.Should().Be(TestAuthenticationOptions.Email); content.FirstName.Should().Be(TestAuthenticationOptions.FirstName); @@ -148,18 +148,18 @@ public sealed class UserControllerTests : IClassFixture var content = message!.Data; content.Should().BeEquivalentTo(user); - + // Check if user is really updated var userResponse = await _fixture.ServerClient.GetAsync("/api/v1/user/" + user.Id); - + userResponse.StatusCode.Should().Be(HttpStatusCode.OK); - + var userMessage = await userResponse.Content.ReadAsJsonAsync(); - + userMessage?.Data.Should().NotBeNull(); - + var userContent = userMessage!.Data!; - + userContent.Id.Should().Be(user.Id); userContent.Email.Should().Be(user.Email); userContent.FirstName.Should().Be(user.FirstName); @@ -217,7 +217,7 @@ public sealed class UserControllerTests : IClassFixture content.Should().Be(TestAuthenticationOptions.TestUserId); var userResponse = await _fixture.ServerClient.GetAsync("/api/v1/user/" + TestAuthenticationOptions.TestUserId); - + userResponse.StatusCode.Should().Be(HttpStatusCode.NotFound); } } \ No newline at end of file diff --git a/CleanArchitecture.IntegrationTests/Fixtures/TenantTestFixture.cs b/CleanArchitecture.IntegrationTests/Fixtures/TenantTestFixture.cs index 437d39f..3d66346 100644 --- a/CleanArchitecture.IntegrationTests/Fixtures/TenantTestFixture.cs +++ b/CleanArchitecture.IntegrationTests/Fixtures/TenantTestFixture.cs @@ -11,7 +11,7 @@ public sealed class TenantTestFixture : TestFixtureBase protected override void SeedTestData(ApplicationDbContext context) { base.SeedTestData(context); - + context.Tenants.Add(new Tenant( CreatedTenantId, "Test Tenant")); diff --git a/CleanArchitecture.IntegrationTests/Fixtures/TestFixtureBase.cs b/CleanArchitecture.IntegrationTests/Fixtures/TestFixtureBase.cs index 29bcd0f..6a8d633 100644 --- a/CleanArchitecture.IntegrationTests/Fixtures/TestFixtureBase.cs +++ b/CleanArchitecture.IntegrationTests/Fixtures/TestFixtureBase.cs @@ -13,6 +13,9 @@ namespace CleanArchitecture.IntegrationTests.Fixtures; public class TestFixtureBase { + public HttpClient ServerClient { get; } + protected WebApplicationFactory Factory { get; } + public TestFixtureBase(bool useTestAuthentication = true) { Factory = new CleanArchitectureWebApplicationFactory( @@ -24,9 +27,6 @@ public class TestFixtureBase ServerClient.Timeout = TimeSpan.FromMinutes(5); } - public HttpClient ServerClient { get; } - protected WebApplicationFactory Factory { get; } - protected virtual void SeedTestData(ApplicationDbContext context) { context.Users.Add(new User( diff --git a/CleanArchitecture.IntegrationTests/Fixtures/gRPC/GetTenantsByIdsTestFixture.cs b/CleanArchitecture.IntegrationTests/Fixtures/gRPC/GetTenantsByIdsTestFixture.cs index b6f2672..fdfe5a6 100644 --- a/CleanArchitecture.IntegrationTests/Fixtures/gRPC/GetTenantsByIdsTestFixture.cs +++ b/CleanArchitecture.IntegrationTests/Fixtures/gRPC/GetTenantsByIdsTestFixture.cs @@ -7,6 +7,9 @@ namespace CleanArchitecture.IntegrationTests.Fixtures.gRPC; public sealed class GetTenantsByIdsTestFixture : TestFixtureBase { + public GrpcChannel GrpcChannel { get; } + public Guid CreatedTenantId { get; } = Guid.NewGuid(); + public GetTenantsByIdsTestFixture() { GrpcChannel = GrpcChannel.ForAddress("http://localhost", new GrpcChannelOptions @@ -15,9 +18,6 @@ public sealed class GetTenantsByIdsTestFixture : TestFixtureBase }); } - public GrpcChannel GrpcChannel { get; } - public Guid CreatedTenantId { get; } = Guid.NewGuid(); - protected override void SeedTestData(ApplicationDbContext context) { base.SeedTestData(context); diff --git a/CleanArchitecture.IntegrationTests/Fixtures/gRPC/GetUsersByIdsTestFixture.cs b/CleanArchitecture.IntegrationTests/Fixtures/gRPC/GetUsersByIdsTestFixture.cs index c39c29b..22ce59b 100644 --- a/CleanArchitecture.IntegrationTests/Fixtures/gRPC/GetUsersByIdsTestFixture.cs +++ b/CleanArchitecture.IntegrationTests/Fixtures/gRPC/GetUsersByIdsTestFixture.cs @@ -9,6 +9,9 @@ namespace CleanArchitecture.IntegrationTests.Fixtures.gRPC; public sealed class GetUsersByIdsTestFixture : TestFixtureBase { + public GrpcChannel GrpcChannel { get; } + public Guid CreatedUserId { get; } = Guid.NewGuid(); + public GetUsersByIdsTestFixture() { GrpcChannel = GrpcChannel.ForAddress("http://localhost", new GrpcChannelOptions @@ -17,9 +20,6 @@ public sealed class GetUsersByIdsTestFixture : TestFixtureBase }); } - public GrpcChannel GrpcChannel { get; } - public Guid CreatedUserId { get; } = Guid.NewGuid(); - protected override void SeedTestData(ApplicationDbContext context) { base.SeedTestData(context); diff --git a/CleanArchitecture.IntegrationTests/Infrastructure/Auth/TestAuthenticationOptions.cs b/CleanArchitecture.IntegrationTests/Infrastructure/Auth/TestAuthenticationOptions.cs index d301b34..1eb58b4 100644 --- a/CleanArchitecture.IntegrationTests/Infrastructure/Auth/TestAuthenticationOptions.cs +++ b/CleanArchitecture.IntegrationTests/Infrastructure/Auth/TestAuthenticationOptions.cs @@ -7,12 +7,12 @@ namespace CleanArchitecture.IntegrationTests.Infrastructure.Auth; public sealed class TestAuthenticationOptions : AuthenticationSchemeOptions { - public static Guid TestUserId = new("561e4300-94d6-4c3f-adf5-31c1bdbc64df"); public const string Email = "integration@tests.com"; public const string FirstName = "Integration"; public const string LastName = "Tests"; + public static Guid TestUserId = new("561e4300-94d6-4c3f-adf5-31c1bdbc64df"); - public ClaimsIdentity Identity { get; } = new ClaimsIdentity( + public ClaimsIdentity Identity { get; } = new( new[] { new Claim(ClaimTypes.Email, Email), diff --git a/CleanArchitecture.IntegrationTests/Infrastructure/CleanArchitectureWebApplicationFactory.cs b/CleanArchitecture.IntegrationTests/Infrastructure/CleanArchitectureWebApplicationFactory.cs index 1c771cc..6328d21 100644 --- a/CleanArchitecture.IntegrationTests/Infrastructure/CleanArchitectureWebApplicationFactory.cs +++ b/CleanArchitecture.IntegrationTests/Infrastructure/CleanArchitectureWebApplicationFactory.cs @@ -22,10 +22,10 @@ public sealed class CleanArchitectureWebApplicationFactory : WebApplicationFacto IServiceProvider scopedServices); private readonly AddCustomSeedDataHandler? _addCustomSeedDataHandler; + private readonly bool _addTestAuthentication; private readonly SqliteConnection _connection = new("DataSource=:memory:"); private readonly RegisterCustomServicesHandler? _registerCustomServicesHandler; - private readonly bool _addTestAuthentication; public CleanArchitectureWebApplicationFactory( AddCustomSeedDataHandler? addCustomSeedDataHandler, diff --git a/CleanArchitecture.gRPC.Tests/Fixtures/TenantTestFixture.cs b/CleanArchitecture.gRPC.Tests/Fixtures/TenantTestFixture.cs index 3910cc2..565b589 100644 --- a/CleanArchitecture.gRPC.Tests/Fixtures/TenantTestFixture.cs +++ b/CleanArchitecture.gRPC.Tests/Fixtures/TenantTestFixture.cs @@ -10,6 +10,11 @@ namespace CleanArchitecture.gRPC.Tests.Fixtures; public sealed class TenantTestFixture { + public TenantsApiImplementation TenantsApiImplementation { get; } + private ITenantRepository TenantRepository { get; } + + public IEnumerable ExistingTenants { get; } + public TenantTestFixture() { TenantRepository = Substitute.For(); @@ -25,9 +30,4 @@ public sealed class TenantTestFixture TenantsApiImplementation = new TenantsApiImplementation(TenantRepository); } - - public TenantsApiImplementation TenantsApiImplementation { get; } - private ITenantRepository TenantRepository { get; } - - public IEnumerable ExistingTenants { get; } } \ No newline at end of file diff --git a/CleanArchitecture.gRPC.Tests/Fixtures/UserTestFixture.cs b/CleanArchitecture.gRPC.Tests/Fixtures/UserTestFixture.cs index 3954783..f350d7c 100644 --- a/CleanArchitecture.gRPC.Tests/Fixtures/UserTestFixture.cs +++ b/CleanArchitecture.gRPC.Tests/Fixtures/UserTestFixture.cs @@ -11,6 +11,12 @@ namespace CleanArchitecture.gRPC.Tests.Fixtures; public sealed class UserTestFixture { + private IUserRepository UserRepository { get; } = Substitute.For(); + + public UsersApiImplementation UsersApiImplementation { get; } + + public IEnumerable ExistingUsers { get; } + public UserTestFixture() { ExistingUsers = new List @@ -47,10 +53,4 @@ public sealed class UserTestFixture UsersApiImplementation = new UsersApiImplementation(UserRepository); } - - private IUserRepository UserRepository { get; } = Substitute.For(); - - public UsersApiImplementation UsersApiImplementation { get; } - - public IEnumerable ExistingUsers { get; } } \ No newline at end of file