0
0
mirror of https://github.com/alex289/CleanArchitecture.git synced 2025-06-29 18:21:08 +00:00
CleanArchitecture/CleanArchitecture.Domain.Tests/CommandHandler/User/DeleteUser/DeleteUserCommandHandlerTests.cs
2023-09-02 12:34:08 +02:00

65 lines
1.8 KiB
C#

using System;
using CleanArchitecture.Domain.Commands.Users.DeleteUser;
using CleanArchitecture.Domain.Errors;
using CleanArchitecture.Shared.Events.User;
using Xunit;
namespace CleanArchitecture.Domain.Tests.CommandHandler.User.DeleteUser;
public sealed class DeleteUserCommandHandlerTests
{
private readonly DeleteUserCommandTestFixture _fixture = new();
[Fact]
public void Should_Delete_User()
{
var user = _fixture.SetupUser();
var command = new DeleteUserCommand(user.Id);
_fixture.CommandHandler.Handle(command, default).Wait();
_fixture
.VerifyNoDomainNotification()
.VerifyCommit()
.VerifyRaisedEvent<UserDeletedEvent>(x => x.AggregateId == user.Id);
}
[Fact]
public void Should_Not_Delete_Non_Existing_User()
{
_fixture.SetupUser();
var command = new DeleteUserCommand(Guid.NewGuid());
_fixture.CommandHandler.Handle(command, default).Wait();
_fixture
.VerifyNoCommit()
.VerifyNoRaisedEvent<UserDeletedEvent>()
.VerifyAnyDomainNotification()
.VerifyExistingNotification(
ErrorCodes.ObjectNotFound,
$"There is no user with Id {command.UserId}");
}
[Fact]
public void Should_Not_Delete_User_Insufficient_Permissions()
{
var user = _fixture.SetupUser();
_fixture.SetupCurrentUser();
var command = new DeleteUserCommand(user.Id);
_fixture.CommandHandler.Handle(command, default).Wait();
_fixture
.VerifyNoCommit()
.VerifyNoRaisedEvent<UserDeletedEvent>()
.VerifyAnyDomainNotification()
.VerifyExistingNotification(
ErrorCodes.InsufficientPermissions,
$"No permission to delete user {command.UserId}");
}
}