Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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();
        }
Пример #4
0
        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);
        }
Пример #5
0
        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));
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }