public void RegionWillNotGetCreatedTwiceWhenThereAreMoreRegions() { var control1 = new MockFrameworkElement(); var control2 = new MockFrameworkElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => d == control1 ? "Region1" : "Region2" }; var adapter = new MockRegionAdapter(); adapter.Accessor = accessor; var behavior1 = this.GetBehavior(control1, accessor, adapter); var behavior2 = this.GetBehavior(control2, accessor, adapter); behavior1.Attach(); behavior2.Attach(); accessor.UpdateRegions(); Assert.IsTrue(adapter.CreatedRegions.Contains("Region1")); Assert.IsTrue(adapter.CreatedRegions.Contains("Region2")); Assert.AreEqual(1, adapter.CreatedRegions.Count((name) => name == "Region2")); }
public void WhenWindowContentIsSet_ShouldWrapContentInCommonWindow() { MockFrameworkElement element = new MockFrameworkElement(); TestablePopupWindowAction popupWindowAction = new TestablePopupWindowAction(); popupWindowAction.WindowContent = element; INotification notification = new Notification(); notification.Title = "Title"; notification.Content = "Content"; Window window = popupWindowAction.GetWindow(notification); Assert.IsNotInstanceOfType(window, typeof(DefaultNotificationWindow)); Assert.IsNotInstanceOfType(window, typeof(DefaultConfirmationWindow)); Assert.IsInstanceOfType(window, typeof(Window)); }
public void RegionGetsCreatedWhenAccessingRegions() { var control = new MockFrameworkElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior = this.GetBehavior(control, accessor); behavior.Attach(); accessor.UpdateRegions(); Assert.IsNotNull(RegionManager.GetObservableRegion(control).Value); Assert.IsInstanceOfType(RegionManager.GetObservableRegion(control).Value, typeof(IRegion)); }
public void WhenDataContextOfWindowContentImplementsIInteractionRequestAware_ShouldSetUpProperties() { MockInteractionRequestAwareElement dataContext = new MockInteractionRequestAwareElement(); MockFrameworkElement element = new MockFrameworkElement(); TestablePopupWindowAction popupWindowAction = new TestablePopupWindowAction(); element.DataContext = dataContext; popupWindowAction.WindowContent = element; INotification notification = new Notification(); notification.Title = "Title"; notification.Content = "Content"; Window window = popupWindowAction.GetWindow(notification); Assert.IsNotNull(dataContext.Notification); Assert.ReferenceEquals(dataContext.Notification, notification); Assert.IsNotNull(dataContext.FinishInteraction); }
public void BehaviorShouldUnhookEventWhenDetaching() { var control = new MockFrameworkElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName", }; var behavior = this.GetBehavior(control, accessor); behavior.Attach(); int startingCount = accessor.GetSubscribersCount(); behavior.Detach(); Assert.AreEqual<int>(startingCount - 1, accessor.GetSubscribersCount()); }
public void RegionDoesNotGetCreatedTwiceWhenUpdatingRegions() { var control = new MockFrameworkElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior = this.GetBehavior(control, accessor); behavior.Attach(); accessor.UpdateRegions(); IRegion region = RegionManager.GetObservableRegion(control).Value; accessor.UpdateRegions(); Assert.AreSame(region, RegionManager.GetObservableRegion(control).Value); }
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 void BehaviorDoesNotPreventControlFromBeingGarbageCollected() { var control = new MockFrameworkElement(); WeakReference controlWeakReference = new WeakReference(control); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior = this.GetBehavior(control, accessor); behavior.Attach(); Assert.IsTrue(controlWeakReference.IsAlive); GC.KeepAlive(control); control = null; GC.Collect(); Assert.IsFalse(controlWeakReference.IsAlive); }
public void WhenParentViewWithoutScopedRegionGetsActivatedOrDeactivated_ThenSyncedChildViewIsNotUpdated() { var commonRegionManager = new RegionManager(); var nonScopedRegion = new Region { Name="MyRegion", RegionManager = commonRegionManager }; commonRegionManager.Regions.Add(nonScopedRegion); var behaviorForScopedRegion = new RegionActiveAwareBehavior { Region = nonScopedRegion }; behaviorForScopedRegion.Attach(); var childActiveAwareView = new SyncedActiveAwareObject(); var region = new MockPresentationRegion { RegionManager = commonRegionManager }; var behavior = new RegionActiveAwareBehavior { Region = region }; behavior.Attach(); var view = new MockFrameworkElement(); region.Add(view); RegionManager.SetRegionManager(view, commonRegionManager); region.Activate(view); nonScopedRegion.Add(childActiveAwareView); nonScopedRegion.Activate(childActiveAwareView); Assert.IsTrue(childActiveAwareView.IsActive); region.Deactivate(view); Assert.IsTrue(childActiveAwareView.IsActive); }
public void WhenParentViewGetsActivatedOrDeactivated_ThenSyncedChildViewNotInActiveViewsIsNotUpdated() { var scopedRegionManager = new RegionManager(); var scopedRegion = new Region { Name="MyScopedRegion", RegionManager = scopedRegionManager }; scopedRegionManager.Regions.Add(scopedRegion); var behaviorForScopedRegion = new RegionActiveAwareBehavior { Region = scopedRegion }; behaviorForScopedRegion.Attach(); var childActiveAwareView = new SyncedActiveAwareObject(); var region = new MockPresentationRegion(); var behavior = new RegionActiveAwareBehavior { Region = region }; behavior.Attach(); var view = new MockFrameworkElement(); region.Add(view); RegionManager.SetRegionManager(view, scopedRegionManager); region.Activate(view); scopedRegion.Add(childActiveAwareView); scopedRegion.Deactivate(childActiveAwareView); Assert.IsFalse(childActiveAwareView.IsActive); region.Deactivate(view); Assert.IsFalse(childActiveAwareView.IsActive); region.Activate(view); Assert.IsFalse(childActiveAwareView.IsActive); }
public void WhenAViewIsRemovedFromARegion_ThenRegionContextIsNotClearedInRegion() { var behavior = new BindRegionContextToDependencyObjectBehavior(); var region = new MockPresentationRegion(); behavior.Region = region; behavior.Attach(); var myView = new MockFrameworkElement(); region.Add(myView); region.Context = "new context"; region.Remove(myView); Assert.IsNotNull(region.Context); }
public virtual void WillRemoveDeactivatedItemIfDataContextKeepAliveAttributeFalse() { // Arrange var regionItemDataContext = new RegionMemberNotKeptAlive(); var regionItem = new MockFrameworkElement() { DataContext = regionItemDataContext }; Region.Add(regionItem); Region.Activate(regionItem); // Act Region.Deactivate(regionItem); // Assert Assert.IsFalse(Region.Views.Contains(regionItem)); }
public virtual void RemovesOnlyDeactivatedItemsInRegionBasedOnDataContextKeepAlive() { // Arrange var retionItemDataContextToKeepAlive = new Mock<IRegionMemberLifetime>(); retionItemDataContextToKeepAlive.Setup(i => i.KeepAlive).Returns(true); var regionItemToKeepAlive = new MockFrameworkElement(); regionItemToKeepAlive.DataContext = retionItemDataContextToKeepAlive.Object; Region.Add(regionItemToKeepAlive); Region.Activate(regionItemToKeepAlive); var regionItemMock = new Mock<IRegionMemberLifetime>(); regionItemMock.Setup(i => i.KeepAlive).Returns(false); var regionItem = new MockFrameworkElement(); regionItem.DataContext = regionItemMock.Object; Region.Add(regionItem); Region.Activate(regionItem); // Act Region.Deactivate(regionItem); // Assert Assert.IsFalse(Region.Views.Contains(regionItem)); Assert.IsTrue(Region.Views.Contains(regionItemToKeepAlive)); }
public virtual void RemovesRegionItemIfDataContextReturnsKeepAliveFalse() { // Arrange var regionItemMock = new Mock<IRegionMemberLifetime>(); regionItemMock.Setup(i => i.KeepAlive).Returns(false); var regionItem = new MockFrameworkElement(); regionItem.DataContext = regionItemMock.Object; Region.Add(regionItem); Region.Activate(regionItem); // Act Region.Deactivate(regionItem); // Assert Assert.IsFalse(Region.Views.Contains(regionItem)); }
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 ShouldCleanupBehaviorOnceRegionIsCreated() { var control = new MockFrameworkElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior = this.GetBehavior(control, accessor); WeakReference behaviorWeakReference = new WeakReference(behavior); behavior.Attach(); accessor.UpdateRegions(); Assert.IsTrue(behaviorWeakReference.IsAlive); GC.KeepAlive(behavior); behavior = null; GC.Collect(); Assert.IsFalse(behaviorWeakReference.IsAlive); }