public void WhenMultipleRuleValidatorCreatedWithInvalidRules_ThenValidatorHasErrorsIsTrue()
        {
            // Arrange
            var firstFieldValue        = -150;
            var secondFieldValue       = -11;
            var dataValue              = 1;
            var fieldName              = "Excess Mileage";
            var toleranceMessage       = "Excess mileage fee calculated outside of tolerance.";
            var zeroCodeWeaversMessage = "CodeWeavers Excess mileage fee must be greater than zero.";
            var zeroPosApiMessage      = "Pos API Excess mileage fee must be greater than zero.";

            // Act
            var validator = new FieldValidator <decimal>(firstFieldValue, secondFieldValue, dataValue, fieldName)
                            .AddRule((firstValue, secondValue, tolerance) => firstValue + tolerance >= secondValue, toleranceMessage)
                            .AddRule((firstValue, minimum) => firstValue >= minimum, zeroCodeWeaversMessage)
                            .AddRule((secondValue, minimum) => secondValue >= minimum, zeroPosApiMessage);

            var validatorResult = validator.GetResult();

            // Assert
            validator.GetResult().HasErrors.Should().Be(true);
            validatorResult.ValidationErrors.Count.Should().Be(3);
            validatorResult.FieldName.Should().Be(fieldName);
            validatorResult.ValidationErrors.First().Item2.Should().Be(toleranceMessage);
        }
        public void WhenSingleRuleValidatorCreatedWithValidRules_ThenValidatorHasErrorsIsFalse()
        {
            // Arrange
            var firstFieldValue  = 12;
            var secondFieldValue = 11;
            var dataValue        = 1;
            var fieldName        = "Excess Mileage tolerance";
            var message          = "Excess mileage fee calculated outside of tolerance.";

            // Act
            var validator = new FieldValidator <decimal>(firstFieldValue, secondFieldValue, dataValue, fieldName)
                            .AddRule(
                (firstValue, secondValue, tolerance) => firstValue + tolerance >= secondValue, message);

            var validatorResult = validator.GetResult();

            // Assert
            validatorResult.HasErrors.Should().Be(false);
            validatorResult.ValidationErrors.Count.Should().Be(0);
            validatorResult.FieldName.Should().Be(fieldName);
        }