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