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