public void ResolveAndSet_ValidatesParameters()
        {
            var resolver = new Mock <IParameterResolver>();
            var cache    = new Mock <IParameterCache>();
            var setter   = new ViewModelParameterSetter(resolver.Object, cache.Object);

            Should.Throw <ArgumentNullException>(() => setter.ResolveAndSet(null, new Mock <ViewModelBase>().Object));
            Should.Throw <ArgumentNullException>(() => setter.ResolveAndSet(new Mock <ComponentBase>().Object, null));
        }
Example #2
0
    public void ResolveAndSet_ResolvesParametersAndCachesResult()
    {
        var cp1 = GenerateProperty("p1");
        var componentProperties = new List <PropertyInfo> {
            cp1.Object
        };

        var vmp1 = GenerateProperty("p1");
        var viewModelProperties = new List <PropertyInfo> {
            vmp1.Object
        };

        var resolver  = new Mock <IParameterResolver>();
        var cache     = new Mock <IParameterCache>();
        var component = new Mock <ComponentBase>();
        var viewModel = new Mock <ViewModelBase>();

        cache.Setup(x => x.Get(It.Is <Type>(y => y.BaseType == typeof(ComponentBase))))
        .Returns((ParameterInfo)null)
        .Verifiable();
        cache.Setup(x => x.Set(It.Is <Type>(y => y.BaseType == typeof(ComponentBase)), It.IsAny <ParameterInfo>()))
        .Verifiable();
        resolver.Setup(x => x.ResolveParameters(It.Is <Type>(y => y.BaseType == typeof(ComponentBase))))
        .Returns(componentProperties)
        .Verifiable();
        resolver.Setup(x => x.ResolveParameters(It.Is <Type>(y => y.BaseType == typeof(ViewModelBase))))
        .Returns(viewModelProperties)
        .Verifiable();
        cp1.Setup(x => x.GetValue(component.Object, null)).Returns("foo").Verifiable();


        var setter = new ViewModelParameterSetter(resolver.Object, cache.Object);

        setter.ResolveAndSet(component.Object, viewModel.Object);

        cp1.Verify();
        cp1.Verify(x => x.GetHashCode());
        vmp1.Verify(x => x.SetValue(viewModel.Object, "foo", null));
        vmp1.Verify();
        cache.Verify();
        resolver.Verify();
        component.VerifyNoOtherCalls();
        viewModel.VerifyNoOtherCalls();
        cp1.VerifyNoOtherCalls();
        vmp1.VerifyNoOtherCalls();
        resolver.VerifyNoOtherCalls();
        cache.VerifyNoOtherCalls();
        component.VerifyNoOtherCalls();
        viewModel.VerifyNoOtherCalls();
    }