Exemplo n.º 1
0
        public void ContractIsUsedWhenResolvingView()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeSplat();
            resolver.InitializeReactiveUI();
            resolver.Register(() => new FooView(), typeof(IViewFor <IFooViewModel>), "first");
            resolver.Register(() => new FooWithWeirdConvention(), typeof(IViewFor <IFooViewModel>), "second");

            using (resolver.WithResolver()) {
                var fixture = new DefaultViewLocator();
                var vm      = new FooViewModel();

                var result = fixture.ResolveView(vm);
                Assert.Null(result);

                result = fixture.ResolveView(vm, "first");
                Assert.True(result is FooView);

                result = fixture.ResolveView(vm, "second");
                Assert.True(result is FooWithWeirdConvention);
            }
        }
Exemplo n.º 2
0
        public void NoErrorIsRaisedIfAServiceCannotBeFound()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeSplat();
            resolver.InitializeReactiveUI();

            using (resolver.WithResolver()) {
                var fixture = new DefaultViewLocator();
                var vm      = new FooViewModel();

                var result = fixture.ResolveView(vm);
                Assert.Null(result);
            }
        }
Exemplo n.º 3
0
        public void WithOddInterfaceNameDoesntThrowException()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeSplat();
            resolver.InitializeReactiveUI();

            using (resolver.WithResolver()) {
                var fixture = new DefaultViewLocator();

                var vm = new StrangeClassNotFollowingConvention();

                fixture.ResolveView((StrangeInterfaceNotFollowingConvention)vm);
            }
        }
Exemplo n.º 4
0
        public void ByDefaultViewModelIsReplacedWithViewWhenDeterminingTheServiceName()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeSplat();
            resolver.InitializeReactiveUI();
            resolver.Register(() => new FooView(), typeof(IViewFor <FooViewModel>));

            using (resolver.WithResolver()) {
                var          fixture = new DefaultViewLocator();
                FooViewModel vm      = new FooViewModel();

                var result = fixture.ResolveView(vm);
                Assert.True(result is FooView);
            }
        }
Exemplo n.º 5
0
        public void AnErrorIsRaisedIfTheCreationOfTheViewFails()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeSplat();
            resolver.InitializeReactiveUI();
            resolver.Register(() => new FooThatThrowsView(), typeof(IViewFor <IFooViewModel>));

            using (resolver.WithResolver()) {
                var fixture = new DefaultViewLocator();
                var vm      = new FooViewModel();

                var ex = Assert.Throws <InvalidOperationException>(() => fixture.ResolveView(vm));
                Assert.Equal("This is a test failure.", ex.Message);
            }
        }
Exemplo n.º 6
0
        public void NoErrorIsRaisedIfTheServiceDoesNotImplementIViewFor()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeSplat();
            resolver.InitializeReactiveUI();
            resolver.Register(() => "this string does not implement IViewFor", typeof(IViewFor <IFooViewModel>));

            using (resolver.WithResolver()) {
                var fixture = new DefaultViewLocator();
                var vm      = new FooViewModel();

                var result = fixture.ResolveView(vm);
                Assert.Null(result);
            }
        }
Exemplo n.º 7
0
        public void CanResolveViewFromViewModelInterfaceUsingIViewForRegistration()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeSplat();
            resolver.InitializeReactiveUI();
            resolver.Register(() => new FooView(), typeof(IViewFor <IFooViewModel>));

            using (resolver.WithResolver()) {
                var           fixture = new DefaultViewLocator();
                IFooViewModel vm      = new FooViewModel();

                var result = fixture.ResolveView(vm);
                Assert.True(result is FooView);
            }
        }
Exemplo n.º 8
0
        public void TheRuntimeTypeOfTheViewModelIsUsedToResolveTheView()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeSplat();
            resolver.InitializeReactiveUI();
            resolver.Register(() => new FooView(), typeof(FooView));

            using (resolver.WithResolver()) {
                var    fixture = new DefaultViewLocator();
                object vm      = new FooViewModel();

                var result = fixture.ResolveView(vm);
                Assert.True(result is FooView);
            }
        }
Exemplo n.º 9
0
        public void CanResolveViewFromViewModelWithIRoutableViewModelType()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeSplat();
            resolver.InitializeReactiveUI();
            resolver.Register(() => new RoutableFooView(), typeof(IViewFor <IRoutableFooViewModel>));

            using (resolver.WithResolver()) {
                var fixture = new DefaultViewLocator();
                var vm      = new RoutableFooViewModel();

                var result = fixture.ResolveView <IRoutableViewModel>(vm);
                Assert.IsType <RoutableFooView>(result);
            }
        }
Exemplo n.º 10
0
        public void CanResolveViewFromViewModelInterfaceUsingClassRegistration()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeSplat();
            resolver.InitializeReactiveUI();
            resolver.Register(() => new FooView(), typeof(FooView));

            using (resolver.WithResolver()) {
                var           fixture = new DefaultViewLocator();
                IFooViewModel vm      = new FooViewModelWithWeirdName();

                var result = fixture.ResolveView(vm);
                Assert.IsType <FooView>(result);
            }
        }
Exemplo n.º 11
0
        public void ResolveExplicitViewType()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeResolver();
            resolver.Register(() => new BazView(), typeof(IBazView));

            using (resolver.WithResolver()) {
                var fixture = new DefaultViewLocator();
                var vm      = new BazViewModel(null);

                var result = fixture.ResolveView(vm);
                this.Log().Info(result.GetType().FullName);
                Assert.True(result is BazView);
            }
        }
Exemplo n.º 12
0
        public void ViewModelToViewNamingConventionCanBeCustomized()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeSplat();
            resolver.InitializeReactiveUI();
            resolver.Register(() => new FooWithWeirdConvention(), typeof(FooWithWeirdConvention));

            using (resolver.WithResolver()) {
                var fixture = new DefaultViewLocator();
                fixture.ViewModelToViewFunc = viewModelName => viewModelName.Replace("ViewModel", "WithWeirdConvention");
                FooViewModel vm = new FooViewModel();

                var result = fixture.ResolveView(vm);
                Assert.True(result is FooWithWeirdConvention);
            }
        }
Exemplo n.º 13
0
        public void ResolveByConcreteViewFor()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeSplat();
            resolver.InitializeReactiveUI();
            resolver.Register(() => new QuxView(), typeof(IViewFor <QuxViewModel>));

            using (resolver.WithResolver()) {
                var fixture = new DefaultViewLocator();
                var vm      = new QuxViewModel(null);

                var result = fixture.ResolveView(vm);
                this.Log().Info(result.GetType().FullName);
                Assert.IsType <QuxView>(result);
            }
        }
Exemplo n.º 14
0
        public void NoErrorIsRaisedIfATypeCannotBeFound()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeSplat();
            resolver.InitializeReactiveUI();

            using (resolver.WithResolver())
            {
                var fixture = new DefaultViewLocator();
                fixture.ViewModelToViewFunc = viewModelName => "DoesNotExist, " + typeof(DefaultViewLocatorTests).Assembly.FullName;
                var vm = new FooViewModel();

                var result = fixture.ResolveView(vm);
                Assert.Null(result);
            }
        }
Exemplo n.º 15
0
        public void CanOverrideNameResolutionFunc()
        {
            var resolver = new ModernDependencyResolver();

            resolver.InitializeSplat();
            resolver.InitializeReactiveUI();
            resolver.Register(() => new RoutableFooCustomView());

            using (resolver.WithResolver())
            {
                var fixture = new DefaultViewLocator();
                fixture.ViewModelToViewFunc = x => x.Replace("ViewModel", "CustomView");
                var vm = new RoutableFooViewModel();

                var result = fixture.ResolveView <IRoutableViewModel>(vm);
                Assert.IsType <RoutableFooCustomView>(result);
            }
        }