Exemple #1
0
        public void Get_Throws_CoercionException_When_Coercer_Coerce_Returns_False()
        {
            const string name = "__value__";

            var expectedRaw   = "1";
            var expectedValue = 1;
            var cache         = new TestingCache();

            var sourceMock = new Mock <IValueSource>();

            sourceMock.Setup(s => s.Get(name, It.IsAny <PropertyInfo>(), out expectedRaw))
            .Returns(true);

            var transformerMock = new Mock <IValueTransformer>();

            transformerMock.Setup(x => x.Transform(expectedRaw, name, It.IsAny <PropertyInfo>()))
            .Returns(expectedRaw);

            var validatorMock = new Mock <IValueValidator>();

            validatorMock.Setup(s => s.Validate(expectedRaw, name, It.IsAny <PropertyInfo>(), out expectedValue))
            .Returns(false);

            var coercerMock = new Mock <IValueCoercer>();

            coercerMock.Setup(c => c.Coerce(expectedRaw, name, It.IsAny <PropertyInfo>(), out expectedValue))
            .Returns(false);

            var config = new ConfigWrapper <int>(cache, sourceMock.Object, transformerMock.Object, validatorMock.Object, coercerMock.Object);

            config.Get_Wrapper(name);
        }
Exemple #2
0
        public void Get_Calls_Source_Get_Transformer_Transform_Validator_Validate_But_Skips_Coercer_Coerce_When_Callback_Invoked_For_String()
        {
            const string name = "__value__";

            var expected = "bananas";
            var cache    = new TestingCache();

            var sourceMock = new Mock <IValueSource>();

            sourceMock.Setup(s => s.Get(name, null, out expected))
            .Returns(true);

            var transformerMock = new Mock <IValueTransformer>();

            transformerMock.Setup(x => x.Transform(expected, name, It.IsAny <PropertyInfo>()))
            .Returns(expected);

            var validatorMock = new Mock <IValueValidator>();

            validatorMock.Setup(s => s.Validate(expected, name, null, out expected))
            .Returns(false);

            var coercerMock = new Mock <IValueCoercer>();

            var config = new ConfigWrapper <string>(cache, sourceMock.Object, transformerMock.Object, validatorMock.Object, coercerMock.Object);

            var result = config.Get_Wrapper(name);

            sourceMock.Verify(s => s.Get(name, null, out expected), Times.Once);
            transformerMock.Verify(x => x.Transform(expected, name, null), Times.Once);
            validatorMock.Verify(v => v.Validate(expected, name, null, out expected), Times.Once);
            coercerMock.Verify(c => c.Coerce(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <PropertyInfo>(), out expected), Times.Never);
            Assert.AreEqual(expected, result);
        }
Exemple #3
0
        public void Validate_Throws_ConfigValidationException_When_A_Property_Is_Invalid()
        {
            const string name = ConfigWrapper <int> .ThePropertyName;

            var expectedRaw = "blorb";
            int expectedValue;
            var cache = new TestingCache();

            var sourceMock = new Mock <IValueSource>();

            sourceMock.Setup(s => s.Get(name, It.IsAny <PropertyInfo>(), out expectedRaw))
            .Returns(true);

            var transformerMock = new Mock <IValueTransformer>();

            transformerMock.Setup(x => x.Transform(expectedRaw, name, It.IsAny <PropertyInfo>()))
            .Returns(expectedRaw);

            var validatorMock = new Mock <IValueValidator>();

            validatorMock.Setup(s => s.Validate(expectedRaw, name, It.IsAny <PropertyInfo>(), out expectedValue))
            .Callback(() => { throw new Exception(); });

            var config = new ConfigWrapper <int>(cache, sourceMock.Object, transformerMock.Object, validatorMock.Object,
                                                 null);

            config.Validate();
        }
Exemple #4
0
        public void Validate_Calls_Nothing_With_No_Properties()
        {
            string expectedRaw;
            int    expectedValue;

            var cache = new TestingCache();

            var sourceMock = new Mock <IValueSource>();

            var transformerMock = new Mock <IValueTransformer>();

            var validatorMock = new Mock <IValueValidator>();

            var coercerMock = new Mock <IValueCoercer>();

            var config = new ConfigWrapperWithNoProperties(cache, sourceMock.Object, transformerMock.Object,
                                                           validatorMock.Object, coercerMock.Object);

            config.Validate();

            sourceMock.Verify(s => s.Get(It.IsAny <string>(), It.IsAny <PropertyInfo>(), out expectedRaw), Times.Never);
            transformerMock.Verify(x => x.Transform(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <PropertyInfo>()),
                                   Times.Never);
            validatorMock.Verify(
                v => v.Validate(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <PropertyInfo>(), out expectedValue),
                Times.Never);
            coercerMock.Verify(
                c => c.Coerce(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <PropertyInfo>(), out expectedValue),
                Times.Never);
        }
Exemple #5
0
        public void Get_Throws_MissingValueException_When_Source_Get_Returns_Null()
        {
            const string name = "__value__";

            string expectedRaw;
            var    cache = new TestingCache();

            var sourceMock = new Mock <IValueSource>();

            sourceMock.Setup(s => s.Get(name, null, out expectedRaw))
            .Returns(false);

            var config = new ConfigWrapper <int>(cache, sourceMock.Object, null, null, null);

            config.Get_Wrapper(name);
        }
Exemple #6
0
        Get_Calls_Source_Get_Transformer_Transform_Validator_Validate_And_Coercer_Coerce_When_Callback_Invoked_Via_Property()
        {
            const string name = ConfigWrapper <int> .ThePropertyName;

            var expectedRaw   = "1";
            var expectedValue = 1;
            var cache         = new TestingCache();

            var sourceMock = new Mock <IValueSource>();

            sourceMock.Setup(s => s.Get(name, It.IsAny <PropertyInfo>(), out expectedRaw))
            .Returns(true);

            var transformerMock = new Mock <IValueTransformer>();

            transformerMock.Setup(x => x.Transform(expectedRaw, name, It.IsAny <PropertyInfo>()))
            .Returns(expectedRaw);

            var validatorMock = new Mock <IValueValidator>();

            validatorMock.Setup(s => s.Validate(expectedRaw, name, It.IsAny <PropertyInfo>(), out expectedValue))
            .Returns(false);

            var coercerMock = new Mock <IValueCoercer>();

            coercerMock.Setup(c => c.Coerce(expectedRaw, name, It.IsAny <PropertyInfo>(), out expectedValue))
            .Returns(true);

            var config = new ConfigWrapper <int>(cache, sourceMock.Object, transformerMock.Object, validatorMock.Object,
                                                 coercerMock.Object);

            var result = config.TheProperty;

            sourceMock.Verify(s => s.Get(name, It.IsAny <PropertyInfo>(), out expectedRaw), Times.Once);
            transformerMock.Verify(x => x.Transform(expectedRaw, name, It.IsAny <PropertyInfo>()), Times.Once);
            validatorMock.Verify(v => v.Validate(expectedRaw, name, It.IsAny <PropertyInfo>(), out expectedValue),
                                 Times.Once);
            coercerMock.Verify(c => c.Coerce(expectedRaw, name, It.IsAny <PropertyInfo>(), out expectedValue),
                               Times.Once);
            Assert.AreEqual(expectedValue, result);
        }