public void Validate_GivenAllPropertiesAreValid_ExpectValidationSuccess() { var cmd = new EnableAccountCommand(TestVariables.UserId); var validator = new EnableAccountCommandValidator(); var result = validator.Validate(cmd); Assert.True(result.IsValid); }
public void Validate_GivenDeviceIdIsEmpty_ExpectValidationFailure() { var cmd = new EnableAccountCommand(Guid.Empty); var validator = new EnableAccountCommandValidator(); var result = validator.Validate(cmd); Assert.False(result.IsValid); Assert.Contains( result.Errors, failure => failure.ErrorCode.Equals(ValidationCodes.FieldIsRequired) && failure.PropertyName == "UserId"); }
public async Task <ResultWithError <ErrorData> > Handle(EnableAccountCommand request, CancellationToken cancellationToken) { var result = await this.Process(request, cancellationToken); var dbResult = await this._userRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); if (!dbResult) { return(ResultWithError.Fail(new ErrorData( ErrorCodes.SavingChanges, "Failed To Save Database"))); } return(result); }
public async Task Handle_GivenUserDoesExist_ExpectFailedResult() { var userRepository = new Mock <IUserRepository>(); var unitOfWork = new Mock <IUnitOfWork>(); unitOfWork.Setup(x => x.SaveEntitiesAsync(It.IsAny <CancellationToken>())).ReturnsAsync(() => true); userRepository.Setup(x => x.UnitOfWork).Returns(unitOfWork.Object); userRepository.Setup(x => x.Find(It.IsAny <Guid>(), It.IsAny <CancellationToken>())) .ReturnsAsync(() => Maybe <IUser> .Nothing); var handler = new EnableAccountCommandHandler(userRepository.Object); var cmd = new EnableAccountCommand(TestVariables.UserId); var result = await handler.Handle(cmd, CancellationToken.None); Assert.True(result.IsFailure); Assert.Equal(ErrorCodes.UserNotFound, result.Error.Code); }
public async Task Handle_GivenSavingFails_ExpectFailedResult() { var user = new Mock <IUser>(); user.Setup(x => x.Profile).Returns(new Profile(TestVariables.UserId, "first-name", "last-name")); var userRepository = new Mock <IUserRepository>(); var unitOfWork = new Mock <IUnitOfWork>(); unitOfWork.Setup(x => x.SaveEntitiesAsync(It.IsAny <CancellationToken>())).ReturnsAsync(() => false); userRepository.Setup(x => x.Find(It.IsAny <Guid>(), It.IsAny <CancellationToken>())) .ReturnsAsync(() => Maybe.From(user.Object)); userRepository.Setup(x => x.UnitOfWork).Returns(unitOfWork.Object); var handler = new EnableAccountCommandHandler(userRepository.Object); var cmd = new EnableAccountCommand(TestVariables.UserId); var result = await handler.Handle(cmd, CancellationToken.None); Assert.True(result.IsFailure); }
public async Task Handle_GivenUserExists_ExpectAccountDisabledAndDomainEventRaised() { var user = new Mock <IUser>(); user.Setup(x => x.Profile).Returns(new Profile(TestVariables.UserId, "first-name", "last-name")); user.Setup(x => x.IsDisabled).Returns(true); var userRepository = new Mock <IUserRepository>(); var unitOfWork = new Mock <IUnitOfWork>(); unitOfWork.Setup(x => x.SaveEntitiesAsync(It.IsAny <CancellationToken>())).ReturnsAsync(() => true); userRepository.Setup(x => x.UnitOfWork).Returns(unitOfWork.Object); userRepository.Setup(x => x.Find(It.IsAny <Guid>(), It.IsAny <CancellationToken>())) .ReturnsAsync(() => Maybe.From(user.Object)); var handler = new EnableAccountCommandHandler(userRepository.Object); var cmd = new EnableAccountCommand(TestVariables.UserId); await handler.Handle(cmd, CancellationToken.None); user.Verify(x => x.EnableAccount(), Times.Once); user.Verify(x => x.AddDomainEvent(It.IsAny <UserEnabledEvent>())); }
private async Task <ResultWithError <ErrorData> > Process(EnableAccountCommand request, CancellationToken cancellationToken) { var userMaybe = await this._userRepository.Find(request.UserId, cancellationToken); if (userMaybe.HasNoValue) { return(ResultWithError.Fail(new ErrorData(ErrorCodes.UserNotFound))); } var user = userMaybe.Value; if (!user.IsDisabled) { return(ResultWithError.Fail(new ErrorData(ErrorCodes.UserNotDisabled))); } user.EnableAccount(); user.AddDomainEvent(new UserEnabledEvent(user.EmailAddress, user.Profile.FirstName, user.Profile.LastName)); this._userRepository.Update(user); return(ResultWithError.Ok <ErrorData>()); }
public void Constructor_GiveValidArguments_PropertiesAreSet() { var command = new EnableAccountCommand(TestVariables.UserId); Assert.Equal(command.UserId, TestVariables.UserId); }