public void Result_Should_Fail_When_Containing_Results()
        {
            var sut = RuleResultCollection.From(new List <RuleResult> {
                _result1
            });

            Assert.False(sut.Success);
        }
        public void Should_Be_Able_To_Add_Results_To_Collection()
        {
            var sut = RuleResultCollection.From(new List <RuleResult> {
                _result1, _result2
            });

            Assert.Equal(2, sut.Count);
        }
        public void Result_Should_Implement_Generic_IEnumerable()
        {
            var sut = RuleResultCollection.From(new[] { _result1, _result2 });

            foreach (var result in sut)
            {
                Assert.NotNull(result);
            }
        }
        public async Task ValidateAsync_WhenInputValidationIsSuccess_ShouldReturnSuccessHubRequestValidationResult(
            [Frozen] Mock <IRuleEngine <ChangeOfChargesMessage> > ruleEngine,
            [NotNull] ChangeOfChargesInputValidator sut)
        {
            ruleEngine.Setup(re => re.ValidateAsync(It.IsAny <ChangeOfChargesMessage>()))
            .ReturnsAsync(RuleResultCollection.From(new List <RuleResult>()));

            var validationResult = await sut.ValidateAsync(new ChangeOfChargesMessage()).ConfigureAwait(false);

            Assert.Empty(validationResult.Errors);
            Assert.True(validationResult.Success);
        }
        public void Result_Should_Implement_GetEnumerator()
        {
            var sut = RuleResultCollection.From(new[] { _result1, _result2 });

            var enumerator = sut.GetEnumerator();

            Assert.NotNull(enumerator);

            Assert.True(enumerator.MoveNext());
            Assert.Equal(_result1, enumerator.Current);

            Assert.True(enumerator.MoveNext());
            Assert.Equal(_result2, enumerator.Current);
        }
        public async Task ValidateAsync_WhenInputValidationResultsContainsOneError_ShouldReturnHubRequestValidationResultWithOneElement(
            [Frozen] Mock <IRuleEngine <ChangeOfChargesMessage> > ruleEngine,
            [NotNull] ChangeOfChargesInputValidator sut)
        {
            var ruleResults = new List <RuleResult>
            {
                new RuleResult("rule01", "msg01"),
            };

            ruleEngine.Setup(re => re.ValidateAsync(It.IsAny <ChangeOfChargesMessage>()))
            .ReturnsAsync(RuleResultCollection.From(ruleResults));

            var validationResult = await sut.ValidateAsync(new ChangeOfChargesMessage()).ConfigureAwait(false);

            Assert.Equal(1, validationResult.Errors.Count);
            Assert.False(validationResult.Success);
        }
        public void Collection_Should_Implement_IEnumerable()
        {
            IEnumerable sut = RuleResultCollection.From(new[] { _result1, _result2 });

            Assert.NotNull(sut.GetEnumerator());
        }
        public void Null_Collection_Should_Throw_Argument_Null_Exception()
        {
            IEnumerable <RuleResult> nullResults = null !;

            Assert.Throws <ArgumentNullException>(() => RuleResultCollection.From(nullResults));
        }
        public void Result_Should_Be_Valid_When_Empty()
        {
            var sut = RuleResultCollection.From(new List <RuleResult>());

            Assert.True(sut.Success);
        }