public void WhenRegionConstructed_SortComparisonIsDefault() { IRegion region = new Region(); Assert.IsNotNull(region.SortComparison); Assert.AreEqual(region.SortComparison, Region.DefaultSortComparison); }
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 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 WhenRegionHasMultipleViews_ThenViewsWithMatchingFullTypeNameAreConsidered() { // 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().FullName, UriKind.Relative)); var navigationTargetHandler = new TestRegionNavigationContentLoader(serviceLocatorMock.Object); // Act var returnedView = navigationTargetHandler.LoadContent(region, navigationContext); // Assert Assert.AreSame(view2, returnedView); }
public void RemoveInexistentViewThrows() { IRegion region = new Region(); object view = new object(); region.Remove(view); Assert.AreEqual(0, region.Views.Cast<object>().Count()); }
public void RemoveInexistentViewThrows() { IRegion region = new Region(); object view = new object(); Assert.ThrowsException<ArgumentException>(() => region.Remove(view)); Assert.AreEqual(0, region.Views.Cast<object>().Count()); }
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 LoadContent_NoPermission_InvalidOperationException() { var view = new object(); var mockServiceLocator = new Mock<IContainer>(); mockServiceLocator.Setup(sl => sl.Resolve<object>(It.IsAny<string>())).Returns(view); var mockAccessControlManager = new Mock<IAccessControlManager>(); mockAccessControlManager.Setup(acm => acm.CanAccess(It.IsAny<ResourceRequest>())).Returns(false); var region = new Region(); var secureRegionNavigationContentLoader = new SecureRegionNavigationContentLoader(mockServiceLocator.Object, mockAccessControlManager.Object); secureRegionNavigationContentLoader.LoadContent(region, new NavigationContext(new Mock<IRegionNavigationService>().Object, new Uri("http://testuri/", UriKind.Absolute))); }
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 MissingCandidateViewCreatesViewInRegion() { this.ConfigureMockServiceLocator(); // We cannot access the UnityRegionNavigationContentLoader directly so we need to call its // GetCandidatesFromRegion method through a navigation request. IRegion testRegion = new Region(); Assert.AreEqual(0, testRegion.Views.Count()); Assert.AreEqual(0, testRegion.ActiveViews.Count()); testRegion.RequestNavigate("MockView1"); Assert.AreEqual(1, testRegion.Views.Count()); Assert.AreEqual(1, testRegion.ActiveViews.Count()); }
public void WhenAttached_ThenAddsViewsRegisteredToTheRegion() { var catalog = new AggregateCatalog(); catalog.Catalogs.Add(new AssemblyCatalog(typeof(AutoPopulateExportedViewsBehavior).Assembly)); catalog.Catalogs.Add(new TypeCatalog(typeof(View1), typeof(View2))); var container = new CompositionContainer(catalog); var behavior = container.GetExportedValue<AutoPopulateExportedViewsBehavior>(); var region = new Region() { Name = "region1" }; region.Behaviors.Add("", behavior); Assert.AreEqual(1, region.Views.Cast<object>().Count()); Assert.IsTrue(region.Views.Cast<object>().Any(e => e.GetType() == typeof(View1))); }
/// <summary> /// Creates a new <see cref="IRegion"/> and registers it in the default <see cref="IRegionManager"/> /// attaching to it a <see cref="DialogActivationBehavior"/> behavior. /// </summary> /// <param name="regionName">The name of the <see cref="IRegion"/>.</param> /// <param name="windowStyle">The style to apply to the window region.</param> public static void RegisterNewWindowRegion(string regionName, Style windowStyle) { // Creates a new region and registers it in the default region manager. // Another option if you need the complete infrastructure with the default region behaviors // is to extend DelayedRegionCreationBehavior overriding the CreateRegion method and create an // instance of it that will be in charge of registering the Region once a RegionManager is // set as an attached property in the Visual Tree. var regionManager = ServiceLocator.Current.GetInstance<IRegionManager>(); if (regionManager != null) { IRegion region = new Region(); var behavior = new WindowDialogActivationBehavior {WindowStyle = windowStyle}; region.Behaviors.Add(DialogActivationBehavior.BehaviorKey, behavior); region.Behaviors.Add(RegionActiveAwareBehavior.BehaviorKey, new RegionActiveAwareBehavior()); regionManager.Regions.Add(regionName, region); } }
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 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 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 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 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 ChangingNameOnceItIsSetThrows() { var region = new Region(); region.Name = "MyRegion"; Assert.ThrowsException<InvalidOperationException>(() => region.Name = "ChangedRegionName"); }
public void ShouldGetNotificationWhenContextChanges() { IRegion region = new Region(); bool contextChanged = false; region.PropertyChanged += (s, args) => { if (args.PropertyName == "Context") contextChanged = true; }; region.Context = "MyNewContext"; Assert.IsTrue(contextChanged); }
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 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 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); }
private SelectorItemsSourceSyncBehavior CreateBehavior() { Region region = new Region(); #if SILVERLIGHT Selector selector = new ComboBox(); #else Selector selector = new TabControl(); #endif var behavior = new SelectorItemsSourceSyncBehavior(); behavior.HostControl = selector; behavior.Region = region; return behavior; }
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); }