using FluentAssertions; using Knot.Modules.Profiles.Application.Profiles.Commands.UpdateProfile; using Knot.Modules.Profiles.Domain; using Knot.Modules.Profiles.Application.Abstractions; using Knot.Shared.Kernel; using NSubstitute; using Xunit; using System; using System.Threading; using System.Threading.Tasks; namespace Knot.Modules.Profiles.UnitTests; public class UpdateProfileCommandHandlerTests { private readonly IProfileRepository _profileRepository; private readonly IProfilesUnitOfWork _unitOfWork; private readonly UpdateProfileCommandHandler _handler; public UpdateProfileCommandHandlerTests() { _profileRepository = Substitute.For(); _unitOfWork = Substitute.For(); _handler = new UpdateProfileCommandHandler(_profileRepository, _unitOfWork); } [Fact] public async Task Handle_ShouldReturnError_WhenProfileNotFound() { // Arrange var command = new UpdateProfileCommand(Guid.NewGuid(), "FirstName", "LastName", "Bio"); _profileRepository.GetByIdAsync(command.UserId, Arg.Any()).Returns((UserProfile?)null); // Act var result = await _handler.Handle(command, CancellationToken.None); // Assert result.IsFailure.Should().BeTrue(); result.Error.Should().Be(ProfileErrors.NotFound); } }