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); }
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()); }
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); }
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())); }