public void GivenSignUpAccountValidator_WhenCallValidate_IfMemberIdIsNotZero_ShouldSuccess() { // assign var command = new SignUpAccountCommand { MemberId = 1 }; // act var result = _validator.TestValidate(command); // assert result.ShouldNotHaveValidationErrorFor(c => c.MemberId); }
public void GivenSignUpAccountValidator_WhenCallValidate_IfMemberIdIsZero_ShouldFail() { // assign var command = new SignUpAccountCommand { MemberId = 0 }; // act var result = _validator.TestValidate(command); // assert result.ShouldHaveValidationErrorFor(c => c.MemberId) .WithErrorMessage(ValidationTokens.InvalidMemberId); }
public async Task GivenValidationPipelineBehavior_WhenCallHandle_ShouldValidateRequest() { // assign var command = new SignUpAccountCommand { MemberId = 0 }; var next = Substitute.For <RequestHandlerDelegate <SimpleResponse <AccountModel> > >(); // act var ex = Should.Throw <BusinessException>(() => _pipeline.Handle(command, CancellationToken.None, next)); // assert ex.IsBadRequest.ShouldBeTrue(); ex.BusinessErrorMessage.ShouldContain(ValidationTokens.InvalidMemberId); await next.DidNotReceive().Invoke(); }
public void GivenLogPipelineBehavior_WhenCallHandle_ShouldLogRequestResponse() { // assign var command = new SignUpAccountCommand { MemberId = 0 }; var next = Substitute.For <RequestHandlerDelegate <SimpleResponse <AccountModel> > >(); next.Invoke().Returns(new SimpleResponse <AccountModel>()); // act _pipeline.Handle(command, CancellationToken.None, next); // assert _logger.Received(1).MockLog(LogLevel.Information, "Received request for SignUpAccountCommand.", null); _logger.Received(1).MockLog(LogLevel.Information, "Returned response for SignUpAccountCommand.", null); }
public async Task <SimpleResponse <Account> > Handle(SignUpAccountCommand request, CancellationToken cancellationToken) { var member = await _memberService.GetMemberById(request.MemberId); if (member == null) { throw new BusinessException( "Member {memberId} is invalid.", BusinessErrors.BadRequest("Invalid member details."), request.MemberId); } var account = await _accountService.SignUpAccount(member); await _userUnitOfWork.SaveChangesAsync(cancellationToken); account = await _accountService.GetAccountById(account.Id); return(SimpleResponse <Account> .Create(account)); }
public async Task GivenSignUpAccountHandler_WhenCallHandle_IfMemberNotFound_ShouldRaiseException() { // assign var query = new SignUpAccountCommand { MemberId = 1 }; _memberService.GetMemberById(query.MemberId).Returns(default(Member)); // act var exception = await Should.ThrowAsync <BusinessException>(() => _signUpAccountHandler.Handle(query, CancellationToken.None)); // assert exception.IsBadRequest.ShouldBeTrue(); exception.BusinessErrorMessage.ShouldContain("Invalid member details."); await _accountService.DidNotReceive().SignUpAccount(Arg.Any <Member>()); await _unitOfWork.DidNotReceive().SaveChangesAsync(CancellationToken.None); }
public async Task GivenSignUpAccountHandler_WhenCallHandle_IfMemberFound_ShouldSignUpAccount() { // assign var query = new SignUpAccountCommand { MemberId = 1 }; var member = MemberDataBuilder.CreateMember(1, null, null, null); var account = AccountDataBuilder.CreateAccount(1, null); _memberService.GetMemberById(query.MemberId).Returns(member); _accountService.SignUpAccount(member).Returns(account); _accountService.GetAccountById(account.Id).Returns(account); // act var response = await _signUpAccountHandler.Handle(query, CancellationToken.None); // assert await _unitOfWork.Received(1).SaveChangesAsync(CancellationToken.None); response.ShouldNotBeNull(); response.Data.ShouldBe(account); }