public void Validate_Calls_Source_Get_Transformer_Transform_Validator_Validate_And_Coercer_Coerce() { 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); config.Validate(); 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); }
public void Get_Calls_Source_Get_Transformer_TranmsformValue_Validator_Validate_And_Coercer_Coerce_When_Callback_Invoked() { 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, null, 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, null, out expectedValue)) .Returns(false); var coercerMock = new Mock<IValueCoercer>(); coercerMock.Setup(c => c.Coerce(expectedRaw, name, null, out expectedValue)) .Returns(true); var config = new ConfigWrapper<int>(cache, sourceMock.Object, transformerMock.Object, validatorMock.Object, coercerMock.Object); var result = config.Get_Wrapper(name); sourceMock.Verify(s => s.Get(name, null, out expectedRaw), Times.Once); transformerMock.Verify(x => x.Transform(expectedRaw, name, null), Times.Once); validatorMock.Verify(v => v.Validate(expectedRaw, name, null, out expectedValue), Times.Once); coercerMock.Verify(c => c.Coerce(expectedRaw, name, null, out expectedValue), Times.Once); Assert.AreEqual(expectedValue, result); }
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 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 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); }
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); }