public void MakeACallToResolveTheRegionManagerIfNotFoundInTheVisualTreeAndCreatesAParentChildRelationshipBetweenTheViewModelWithTheRegionAndTheInjectedOne()
            {
                SetupDefaultRegionManager();

                _regionManagerMock.Setup(manager => manager.CreateRegionManager()).Returns(_regionManagerMock.Object);

                var fooViewModel       = new FooViewModel(_serviceLocator);
                var fooParentViewModel = new FooParentViewModel(_serviceLocator);

                var viewLocator      = _serviceLocator.ResolveType <IViewLocator>();
                var viewModelLocator = _serviceLocator.ResolveType <IViewModelLocator>();

                viewModelLocator.Register(typeof(FooViewModelView), typeof(FooViewModel));
                viewLocator.Register(typeof(FooViewModel), typeof(FooViewModelView));

                var viewManagerMock        = new Mock <IViewManager>();
                var fooParentViewModelView = new FooParentViewModelView(fooParentViewModel);

                RegionManager.SetRegionName(fooParentViewModelView, MainRegionName);

                viewManagerMock.Setup(manager => manager.GetViewsOfViewModel(fooParentViewModel)).Returns(new IView[] { fooParentViewModelView });

                _serviceLocator.RegisterInstance <IViewManager>(viewManagerMock.Object);

                _serviceLocator.ResolveType <IUIVisualizerService>().Activate(fooViewModel, fooParentViewModel, MainRegionName);

                VerifyDefaultRegionManagerBehavior();

                Assert.AreEqual(fooParentViewModel, fooViewModel.GetParentViewModel());
                Assert.IsTrue(fooParentViewModel.GetChildViewModelsWrapper().Contains(fooViewModel));

                _regionManagerMock.Verify(manager => manager.CreateRegionManager(), Times.Once());
            }
            public void SetsTheExistingRegionManagerAndCreatesAParentChildRelationshipBetweenTheViewModelWithTheRegionAndTheInjectedOne()
            {
                this.SetupDefaultRegionManager();

                var fooViewModel       = new FooViewModel(this.serviceLocator);
                var fooParentViewModel = new FooParentViewModel(this.serviceLocator);

                var viewLocator      = this.serviceLocator.ResolveType <IViewLocator>();
                var viewModelLocator = this.serviceLocator.ResolveType <IViewModelLocator>();

                viewModelLocator.Register(typeof(FooViewModelView), typeof(FooViewModel));
                viewLocator.Register(typeof(FooViewModel), typeof(FooViewModelView));

                var viewManagerMock        = new Mock <IViewManager>();
                var fooParentViewModelView = new FooParentViewModelView(fooParentViewModel);

                fooParentViewModelView.SetRegionManager(this.regionManagerMock.Object);
                RegionManager.SetRegionName(fooParentViewModelView, MainRegionName);

                viewManagerMock.Setup(manager => manager.GetViewsOfViewModel(fooParentViewModel)).Returns(new IView[] { fooParentViewModelView });

                this.serviceLocator.RegisterInstance <IViewManager>(viewManagerMock.Object);
                this.serviceLocator.ResolveType <IUIVisualizerService>().Activate(fooViewModel, fooParentViewModel, MainRegionName);

                this.VerifyDefaultRegionManagerBehavior();

                Assert.AreEqual(fooParentViewModel, fooViewModel.GetParentViewModel());
                Assert.IsTrue(fooParentViewModel.GetChildViewModelsWrapper().Contains(fooViewModel));
            }
            public void TriesToResolveTheViewsOfTheParentViewModelUsingTheViewManager()
            {
                var fooViewModel       = new FooViewModel(_serviceLocator);
                var fooParentViewModel = new FooParentViewModel(_serviceLocator);

                var viewManagerMock = new Mock <IViewManager>();

                viewManagerMock.Setup(manager => manager.GetViewsOfViewModel(fooParentViewModel)).Returns(new IView[] {});

                _serviceLocator.RegisterInstance <IViewManager>(viewManagerMock.Object);

                _serviceLocator.ResolveType <IUIVisualizerService>().Activate(fooViewModel, fooParentViewModel, MainRegionName);

                viewManagerMock.Verify(manager => manager.GetViewsOfViewModel(fooParentViewModel), Times.Once());
            }
            public void MakeACallToResolveTheRegionManagerIfNotFoundInTheVisualTreeAndCreatesAParentChildRelationshipBetweenTheViewModelWithTheRegionAndTheInjectedOne()
            {
                this.SetupDefaultRegionManager();

                this.regionManagerMock.Setup(manager => manager.CreateRegionManager()).Returns(this.regionManagerMock.Object);

                var fooViewModel = new FooViewModel(this.serviceLocator);
                var fooParentViewModel = new FooParentViewModel(this.serviceLocator);

                var viewLocator = this.serviceLocator.ResolveType<IViewLocator>();
                var viewModelLocator = this.serviceLocator.ResolveType<IViewModelLocator>();

                viewModelLocator.Register(typeof(FooViewModelView), typeof(FooViewModel));
                viewLocator.Register(typeof(FooViewModel), typeof(FooViewModelView));

                var viewManagerMock = new Mock<IViewManager>();
                var fooParentViewModelView = new FooParentViewModelView(fooParentViewModel);

                RegionManager.SetRegionName(fooParentViewModelView, MainRegionName);

                viewManagerMock.Setup(manager => manager.GetViewsOfViewModel(fooParentViewModel)).Returns(new IView[] { fooParentViewModelView });

                this.serviceLocator.RegisterInstance<IViewManager>(viewManagerMock.Object);

                this.serviceLocator.ResolveType<IUIVisualizerService>().Activate(fooViewModel, fooParentViewModel, MainRegionName);

                this.VerifyDefaultRegionManagerBehavior();

                Assert.AreEqual(fooParentViewModel, fooViewModel.GetParentViewModel());
                Assert.IsTrue(fooParentViewModel.GetChildViewModelsWrapper().Contains(fooViewModel));

                this.regionManagerMock.Verify(manager => manager.CreateRegionManager(), Times.Once());
            }           
            public void TriesToResolveTheViewsOfTheParentViewModelUsingTheViewManager()
            {
                var fooViewModel = new FooViewModel(this.serviceLocator);
                var fooParentViewModel = new FooParentViewModel(this.serviceLocator);

                var viewManagerMock = new Mock<IViewManager>();
                viewManagerMock.Setup(manager => manager.GetViewsOfViewModel(fooParentViewModel)).Returns(new IView[] { });

                this.serviceLocator.RegisterInstance<IViewManager>(viewManagerMock.Object);

                this.serviceLocator.ResolveType<IUIVisualizerService>().Activate(fooViewModel, fooParentViewModel, MainRegionName);

                viewManagerMock.Verify(manager => manager.GetViewsOfViewModel(fooParentViewModel), Times.Once());
            }
            public void SetsTheExistingRegionManagerAndCreatesAParentChildRelationshipBetweenTheViewModelWithTheRegionAndTheInjectedOne()
            {
                SetupDefaultRegionManager();

                var fooViewModel = new FooViewModel(_serviceLocator);
                var fooParentViewModel = new FooParentViewModel(_serviceLocator);

                var viewLocator = _serviceLocator.ResolveType<IViewLocator>();
                var viewModelLocator = _serviceLocator.ResolveType<IViewModelLocator>();

                viewModelLocator.Register(typeof (FooViewModelView), typeof (FooViewModel));
                viewLocator.Register(typeof (FooViewModel), typeof (FooViewModelView));

                var viewManagerMock = new Mock<IViewManager>();
                var fooParentViewModelView = new FooParentViewModelView(fooParentViewModel);
                fooParentViewModelView.SetRegionManager(_regionManagerMock.Object);
                RegionManager.SetRegionName(fooParentViewModelView, MainRegionName);

                viewManagerMock.Setup(manager => manager.GetViewsOfViewModel(fooParentViewModel)).Returns(new IView[] {fooParentViewModelView});

                _serviceLocator.RegisterInstance<IViewManager>(viewManagerMock.Object);
                _serviceLocator.ResolveType<IUIVisualizerService>().Activate(fooViewModel, fooParentViewModel, MainRegionName);

                VerifyDefaultRegionManagerBehavior();

                Assert.AreEqual(fooParentViewModel, fooViewModel.GetParentViewModel());
                Assert.IsTrue(fooParentViewModel.GetChildViewModelsWrapper().Contains(fooViewModel));
            }