public void WhenRegionHasMultipleViews_ThenViewsWithMatchingTypeNameAreConsidered() { // Arrange var serviceLocatorMock = new Mock<IServiceLocator>(); var region = new Region(); var view1 = new TestView(); var view2 = "view"; region.Add(view1); region.Add(view2); var navigationContext = new NavigationContext(null, new Uri(view2.GetType().Name, UriKind.Relative)); var navigationTargetHandler = new TestRegionNavigationContentLoader(serviceLocatorMock.Object); // Act var returnedView = navigationTargetHandler.LoadContent(region, navigationContext); // Assert Assert.AreSame(view2, returnedView); }
public void WhenViewExistsAndDoesNotImplementINavigationAware_ThenReturnsView() { // Arrange var serviceLocatorMock = new Mock<IServiceLocator>(); var region = new Region(); var view = new TestView(); region.Add(view); var navigationContext = new NavigationContext(null, new Uri(view.GetType().Name, UriKind.Relative)); var navigationTargetHandler = new TestRegionNavigationContentLoader(serviceLocatorMock.Object); // Act var returnedView = navigationTargetHandler.LoadContent(region, navigationContext); // Assert Assert.AreSame(view, returnedView); }
public void WhenNavigatingWithQueryString_ViewIsActivated() { // Prepare object view = new object(); Uri viewUri = new Uri(view.GetType().Name + "?MyQuery=true", UriKind.Relative); IRegion region = new Region(); region.Add(view); string regionName = "RegionName"; RegionManager regionManager = new RegionManager(); regionManager.Regions.Add(regionName, region); var serviceLocatorMock = new Mock<IServiceLocator>(); serviceLocatorMock.Setup(x => x.GetInstance<IRegionNavigationJournalEntry>()).Returns(new RegionNavigationJournalEntry()); IServiceLocator serviceLocator = serviceLocatorMock.Object; RegionNavigationContentLoader contentLoader = new RegionNavigationContentLoader(serviceLocator); IRegionNavigationJournal journal = new Mock<IRegionNavigationJournal>().Object; RegionNavigationService target = new RegionNavigationService(serviceLocator, contentLoader, journal); target.Region = region; // Act bool isNavigationSuccessful = false; target.RequestNavigate(viewUri, nr => isNavigationSuccessful = nr.Result == true); // Verify Assert.IsTrue(isNavigationSuccessful); bool isViewActive = region.ActiveViews.Contains(view); Assert.IsTrue(isViewActive); }
public void CanAddAndRetrieveNamedViewInstance() { IRegion region = new Region(); object myView = new object(); region.Add(myView, "MyView"); object returnedView = region.GetView("MyView"); Assert.IsNotNull(returnedView); Assert.AreSame(returnedView, myView); }
public void CanAddContentToRegion() { IRegion region = new Region(); Assert.AreEqual(0, region.Views.Cast<object>().Count()); region.Add(new object()); Assert.AreEqual(1, region.Views.Cast<object>().Count()); }
public void CanRemoveContentFromRegion() { IRegion region = new Region(); object view = new object(); region.Add(view); region.Remove(view); Assert.AreEqual(0, region.Views.Cast<object>().Count()); }
public void RegionExposesCollectionOfContainedViews() { IRegion region = new Region(); object view = new object(); region.Add(view); var views = region.Views; Assert.IsNotNull(views); Assert.AreEqual(1, views.Cast<object>().Count()); Assert.AreSame(view, views.Cast<object>().ElementAt(0)); }
public void ShouldFindCandidateViewWithFriendlyNameInRegion() { this.ConfigureMockServiceLocator(); // We cannot access the MefRegionNavigationContentLoader directly so we need to call its // GetCandidatesFromRegion method through a navigation request. IRegion testRegion = new Region(); MockView2 view = new MockView2(); testRegion.Add(view); testRegion.Deactivate(view); testRegion.RequestNavigate("SomeView"); Assert.IsTrue(testRegion.Views.Contains(view)); Assert.IsTrue(testRegion.Views.Count() == 1); Assert.IsTrue(testRegion.ActiveViews.Count() == 1); Assert.IsTrue(testRegion.ActiveViews.Contains(view)); }
public void WhenClearChildViewsPropertyIsNotSet_ThenChildViewsRegionManagerIsNotCleared() { var regionManager = new MockRegionManager(); var region = new Region(); region.RegionManager = regionManager; var behavior = new ClearChildViewsRegionBehavior(); behavior.Region = region; behavior.Attach(); var childView = new MockFrameworkElement(); region.Add(childView); Assert.AreEqual(regionManager, childView.GetValue(RegionManager.RegionManagerProperty)); region.RegionManager = null; Assert.AreEqual(regionManager, childView.GetValue(RegionManager.RegionManagerProperty)); }
public async Task WhenClearChildViewsPropertyIsNotSet_ThenChildViewsRegionManagerIsNotCleared() { await ExecuteOnUIThread(() => { var regionManager = new MockRegionManager(); var region = new Region() { RegionManager = regionManager }; var behavior = new ClearChildViewsRegionBehavior() { Region = region }; behavior.Attach(); var childView = new MockFrameworkElement(); region.Add(childView); Assert.AreEqual(regionManager, childView.GetValue(RegionManager.RegionManagerProperty)); region.RegionManager = null; Assert.AreEqual(regionManager, childView.GetValue(RegionManager.RegionManagerProperty)); }); }
public void ShouldFindCandidateViewInRegion() { IUnityContainer container = new UnityContainer(); container.RegisterType<object, MockView>("MockView"); this.ConfigureMockServiceLocator(container); // We cannot access the UnityRegionNavigationContentLoader directly so we need to call its // GetCandidatesFromRegion method through a navigation request. IRegion testRegion = new Region(); MockView view = new MockView(); testRegion.Add(view); testRegion.Deactivate(view); testRegion.RequestNavigate("MockView"); Assert.IsTrue(testRegion.Views.Contains(view)); Assert.IsTrue(testRegion.Views.Count() == 1); Assert.IsTrue(testRegion.ActiveViews.Count() == 1); Assert.IsTrue(testRegion.ActiveViews.Contains(view)); }
public void AddingSameViewTwiceThrows() { object view = new object(); IRegion region = new Region(); region.Add(view); try { region.Add(view); Assert.Fail(); } catch (InvalidOperationException ex) { Assert.AreEqual("View already exists in region.", ex.Message); } catch { Assert.Fail(); } }
public void ShowViewFiresViewShowedEvent() { bool viewActivated = false; IRegion region = new Region(); object model = new object(); region.ActiveViews.CollectionChanged += (o, e) => { if (e.Action == NotifyCollectionChangedAction.Add && e.NewItems.Contains(model)) viewActivated = true; }; region.Add(model); Assert.IsFalse(viewActivated); region.Activate(model); Assert.IsTrue(viewActivated); }
public void ViewRemovedEventPassesTheViewRemovedInTheEventArgs() { object removedView = null; IRegion region = new Region(); region.Views.CollectionChanged += (sender, e) => { if (e.Action == NotifyCollectionChangedAction.Remove) removedView = e.OldItems[0]; }; object model = new object(); region.Add(model); Assert.IsNull(removedView); region.Remove(model); Assert.AreSame(model, removedView); }
public void AddNamedViewIsAlsoListedInViewsCollection() { IRegion region = new Region(); object myView = new object(); region.Add(myView, "MyView"); Assert.AreEqual(1, region.Views.Cast<object>().Count()); Assert.AreSame(myView, region.Views.Cast<object>().ElementAt(0)); }
public void WhenViewsWithSortHintsAdded_RegionSortsViews() { IRegion region = new Region(); object view1 = new ViewOrder1(); object view2 = new ViewOrder2(); object view3 = new ViewOrder3(); region.Add(view1); region.Add(view2); region.Add(view3); Assert.AreEqual(3, region.Views.Count()); Assert.AreSame(view2, region.Views.ElementAt(0)); Assert.AreSame(view3, region.Views.ElementAt(1)); Assert.AreSame(view1, region.Views.ElementAt(2)); }
public void AddingNonDependencyObjectToRegionDoesNotThrow() { IRegion region = new Region(); object model = new object(); region.Add(model); Assert.AreEqual(1, region.Views.Cast<object>().Count()); }
public void AddViewPassesDiferentScopeWhenAdding() { var regionManager = new MockRegionManager(); IRegion region = new Region(); region.RegionManager = regionManager; var myView = new MockDependencyObject(); region.Add(myView, "MyView", true); Assert.AreNotSame(regionManager, myView.GetValue(RegionManager.RegionManagerProperty)); }
public void CreatingNewScopesAsksTheRegionManagerForNewInstance() { var regionManager = new MockRegionManager(); IRegion region = new Region(); region.RegionManager = regionManager; var myView = new object(); region.Add(myView, "MyView", true); Assert.IsTrue(regionManager.CreateRegionManagerCalled); }
public void AddViewPassesSameScopeByDefaultToNamedView() { var regionManager = new MockRegionManager(); IRegion region = new Region(); region.RegionManager = regionManager; var myView = new MockDependencyObject(); region.Add(myView, "MyView"); Assert.AreSame(regionManager, myView.GetValue(RegionManager.RegionManagerProperty)); }
public void GetViewReturnsNullAfterRemovingViewFromRegion() { IRegion region = new Region(); object myView = new object(); region.Add(myView, "MyView"); region.Remove(myView); Assert.IsNull(region.GetView("MyView")); }
public void AddNamedViewWithNullOrEmptyStringNameThrows() { IRegion region = new Region(); Assert.ThrowsException<ArgumentException>(() => region.Add(new object(), string.Empty)); }
public void RemovingViewAlsoRemovesItFromActiveViews() { IRegion region = new Region(); object model = new object(); region.Add(model); region.Activate(model); Assert.IsTrue(region.ActiveViews.Contains(model)); region.Remove(model); Assert.IsFalse(region.ActiveViews.Contains(model)); }
public void AddViewRaisesCollectionViewEvent() { bool viewAddedCalled = false; IRegion region = new Region(); region.Views.CollectionChanged += (sender, e) => { if (e.Action == NotifyCollectionChangedAction.Add) viewAddedCalled = true; }; object model = new object(); Assert.IsFalse(viewAddedCalled); region.Add(model); Assert.IsTrue(viewAddedCalled); }
public void NavigateDelegatesToIRegionNavigationService() { try { // Prepare IRegion region = new Region(); object view = new object(); region.Add(view); Uri uri = new Uri(view.GetType().Name, UriKind.Relative); Action<NavigationResult> navigationCallback = nr => { }; Mock<IRegionNavigationService> mockRegionNavigationService = new Mock<IRegionNavigationService>(); mockRegionNavigationService.Setup(x => x.RequestNavigate(uri, navigationCallback)).Verifiable(); Mock<IServiceLocator> mockServiceLocator = new Mock<IServiceLocator>(); mockServiceLocator.Setup(x => x.GetInstance<IRegionNavigationService>()).Returns(mockRegionNavigationService.Object); ServiceLocator.SetLocatorProvider(() => mockServiceLocator.Object); // Act region.RequestNavigate(uri, navigationCallback); // Verify mockRegionNavigationService.VerifyAll(); } finally { ServiceLocator.SetLocatorProvider(() => null); } }
public void ViewAddedEventPassesTheViewAddedInTheEventArgs() { object viewAdded = null; IRegion region = new Region(); region.Views.CollectionChanged += (sender, e) => { if (e.Action == NotifyCollectionChangedAction.Add) { viewAdded = e.NewItems[0]; } }; object model = new object(); Assert.IsNull(viewAdded); region.Add(model); Assert.IsNotNull(viewAdded); Assert.AreSame(model, viewAdded); }
public void WhenViewHasBeenRemovedAndRegionManagerPropertyCleared_ThenItCanBeAddedAgainToARegion() { IRegion region = new Region { RegionManager = new MockRegionManager() }; var view = new MockFrameworkElement(); var scopedRegionManager = region.Add(view, null, true); Assert.AreEqual(view, region.Views.First()); region.Remove(view); view.ClearValue(RegionManager.RegionManagerProperty); Assert.AreEqual(0, region.Views.Cast<object>().Count()); var newScopedRegion = region.Add(view, null, true); Assert.AreEqual(view, region.Views.First()); Assert.AreSame(newScopedRegion, view.GetValue(RegionManager.RegionManagerProperty)); }
public void RemoveViewFiresViewRemovedEvent() { bool viewRemoved = false; IRegion region = new Region(); object model = new object(); region.Views.CollectionChanged += (sender, e) => { if (e.Action == NotifyCollectionChangedAction.Remove) viewRemoved = true; }; region.Add(model); Assert.IsFalse(viewRemoved); region.Remove(model); Assert.IsTrue(viewRemoved); }
public void AddViewReturnsNewRegionManager() { var regionManager = new MockRegionManager(); IRegion region = new Region(); region.RegionManager = regionManager; var myView = new object(); var returnedRegionManager = region.Add(myView, "MyView", true); Assert.AreNotSame(regionManager, returnedRegionManager); }
public void AddingDuplicateNamedViewThrows() { IRegion region = new Region(); region.Add(new object(), "MyView"); Assert.ThrowsException<InvalidOperationException>(() => region.Add(new object(), "MyView")); }