示例#1
0
        public async Task IfNoGlobalRulesReturned_ThenSetsActiveRulePropertyToNull(
            [Frozen] long accountId)

        {
            //Arrange
            var expectedRules = new GetAccountFundingRulesApiResponse {
                GlobalRules = new List <GlobalRule>()
            };

            _query = new GetAccountFundingRulesQuery {
                AccountId = accountId
            };

            _validator.Setup(m => m.ValidateAsync(_query))
            .ReturnsAsync(new ValidationResult());

            _fundingRulesService.Setup(m => m.GetAccountFundingRules(accountId)).ReturnsAsync(expectedRules);
            _handler = new GetAccountFundingRulesQueryHandler(_fundingRulesService.Object, _validator.Object);

            //Act
            var result = await _handler.Handle(_query, CancellationToken.None);

            //Assert
            Assert.IsNull(result.ActiveRule);
        }
示例#2
0
        public async Task WhenRulesAreValid_ThenTheRulesAreReturned(
            [Frozen] long accountId)
        {
            //Arrange
            var expectedRules = new GetAccountFundingRulesApiResponse()
            {
                GlobalRules = new List <GlobalRule>()
                {
                    new GlobalRule()
                    {
                        Id       = accountId,
                        RuleType = GlobalRuleType.ReservationLimit,
                    }
                }
            };

            _query = new GetAccountFundingRulesQuery()
            {
                AccountId = accountId
            };

            _validator.Setup(m => m.ValidateAsync(_query))
            .ReturnsAsync(new ValidationResult());

            _fundingRulesService.Setup(m => m.GetAccountFundingRules(accountId)).ReturnsAsync(expectedRules);
            _handler = new GetAccountFundingRulesQueryHandler(_fundingRulesService.Object, _validator.Object);

            //Act
            var result = await _handler.Handle(_query, CancellationToken.None);

            //Assert
            Assert.AreEqual(expectedRules, result.AccountFundingRules);
            Assert.AreEqual(expectedRules.GlobalRules.First(), result.AccountFundingRules.GlobalRules.First());
        }
示例#3
0
        public async Task If_Multiple_GlobalRulesReturned_ThenSetsActiveRulePropertyInResult(
            [Frozen] long accountId)

        {
            //Arrange
            var expectedRules = new GetAccountFundingRulesApiResponse()
            {
                GlobalRules = new List <GlobalRule>()
                {
                    null,
                    new GlobalRule
                    {
                        Id       = accountId,
                        RuleType = GlobalRuleType.ReservationLimit,
                    }
                }
            };

            _query = new GetAccountFundingRulesQuery {
                AccountId = accountId
            };

            _validator.Setup(m => m.ValidateAsync(_query))
            .ReturnsAsync(new ValidationResult());

            _fundingRulesService.Setup(m => m.GetAccountFundingRules(accountId)).ReturnsAsync(expectedRules);
            _handler = new GetAccountFundingRulesQueryHandler(_fundingRulesService.Object, _validator.Object);

            //Act
            var result = await _handler.Handle(_query, CancellationToken.None);

            //Assert
            Assert.AreEqual(expectedRules.GlobalRules.First(x => x != null).RuleType, result.ActiveRule);
        }
示例#4
0
        public void WhenRulesAreNotValid_ThenValidationExcetionIsThrown(
            [Frozen] long accountId)
        {
            //Arrange
            var expectedRules = new GetAccountFundingRulesApiResponse()
            {
                GlobalRules = new List <GlobalRule>()
                {
                    new GlobalRule()
                    {
                        Id       = accountId,
                        RuleType = GlobalRuleType.ReservationLimit,
                    }
                }
            };

            _query = new GetAccountFundingRulesQuery()
            {
                AccountId = accountId
            };

            _validator.Setup(m => m.ValidateAsync(_query)).ReturnsAsync(new ValidationResult
            {
                ValidationDictionary = new Dictionary <string, string>()
                {
                    ["Error"] = "Error"
                }
            });

            _fundingRulesService.Setup(m => m.GetAccountFundingRules(accountId)).ReturnsAsync(expectedRules);
            _handler = new GetAccountFundingRulesQueryHandler(_fundingRulesService.Object, _validator.Object);

            //Assert + Act
            Assert.ThrowsAsync <ValidationException>(async() =>
                                                     await _handler.Handle(_query, new CancellationToken()));
        }