public void ShouldCreateDifferentWindowsForEachView() { var view = new UserControl(); var view2 = new UserControl(); var region = new MockRegion(); var behavior = new TestableDialogActivationBehavior(this.windowManager); var parentCanvas = new Canvas(); behavior.HostControl = parentCanvas; behavior.Region = region; behavior.Attach(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view2); Assert.AreEqual(2, behavior.ViewMappings.Count); var windowForView = behavior.ViewMappings.ElementAt(0).Value; var windowForView2 = behavior.ViewMappings.ElementAt(1).Value; Assert.AreNotSame(windowForView, windowForView2); Assert.IsTrue(((MockWindow)windowForView).ShowCalled); Assert.IsTrue(((MockWindow)windowForView2).ShowCalled); }
public void ShouldUpdateTitleWhenTitlePropertyChanges() { var view = new UserControl(); var viewModel = new MockWindowMetadataProvider(); viewModel.TitleForWindow = "Window Title"; view.DataContext = viewModel; var region = new MockRegion(); var behavior = new TestableDialogActivationBehavior(this.windowManager); var parentCanvas = new Canvas(); behavior.HostControl = parentCanvas; behavior.Region = region; behavior.Attach(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view); var windowForView = behavior.ViewMappings.ElementAt(0).Value; Assert.AreEqual("Window Title", windowForView.Title); viewModel.TitleForWindow = "Different Window Title"; viewModel.InvokeTitleUpdated(view); Assert.AreEqual("Different Window Title", windowForView.Title); }
public void ShouldSetTopPositionToHalfOfHeightWhenValueProvidedByWindowInfoProviderInViewDataContextIsBottom() { var view = new UserControl(); var viewModel = new MockWindowMetadataProvider(); view.DataContext = viewModel; var region = new MockRegion(); var behavior = new TestableDialogActivationBehavior(this.windowManager); var parentCanvas = new Canvas(); parentCanvas.Height = 300; viewModel.Vertical = VerticalWindowPosition.Bottom; behavior.HostControl = parentCanvas; behavior.Region = region; behavior.Attach(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view); var windowForView = behavior.ViewMappings.ElementAt(0).Value; Assert.AreEqual(150, windowForView.Top); }
public void ShouldSetWindowSizeBasedOnWindowInfoProvider() { var view = new UserControl(); var viewModel = new MockWindowMetadataProvider(); view.DataContext = viewModel; var region = new MockRegion(); var behavior = new TestableDialogActivationBehavior(this.windowManager); var parentCanvas = new Canvas(); viewModel.SizeForWindow = new Size(10, 20); behavior.HostControl = parentCanvas; behavior.Region = region; behavior.Attach(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view); var windowForView = behavior.ViewMappings.ElementAt(0).Value; Assert.AreEqual(20, windowForView.Size.Height); Assert.AreEqual(10, windowForView.Size.Width); }
public void ShouldSetLeftPositionToPointFiftyFiveOfWidthWhenValueProvidedByWindowInfoProviderInViewDataContextIsRight() { var view = new UserControl(); var viewModel = new MockWindowMetadataProvider(); view.DataContext = viewModel; var region = new MockRegion(); var behavior = new TestableDialogActivationBehavior(this.windowManager); var parentCanvas = new Canvas { Width = 300 }; viewModel.Horizontal = HorizontalWindowPosition.Right; behavior.HostControl = parentCanvas; behavior.Region = region; behavior.Attach(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view); var windowForView = behavior.ViewMappings.ElementAt(0).Value; Assert.AreEqual(165, windowForView.Left); }
public void ShouldDeactivateViewWhenClosed() { var view = new UserControl(); var region = new MockRegion(); var behavior = new TestableDialogActivationBehavior(); behavior.HostControl = new MockDependencyObject(); behavior.Region = region; behavior.Attach(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view); behavior.CreatedWindow.InvokeClosed(); Assert.IsTrue(region.DeactivateCalled); }
public void ShouldAlwaysShowOnlyLastActiveView() { var region = new MockRegion(); var behavior = new TestableDialogActivationBehavior(); behavior.HostControl = new MockDependencyObject(); behavior.Region = region; behavior.Attach(); var view1 = new UserControl(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view1); Assert.AreSame(view1, behavior.CreatedWindow.Content); var view2 = new UserControl(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view2); Assert.AreSame(view2, behavior.CreatedWindow.Content); }
public void ShouldRemoveViewWhenClosed() { var view = new UserControl(); var region = new MockRegion(); var behavior = new TestableDialogActivationBehavior(this.windowManager); behavior.HostControl = new Canvas(); behavior.Region = region; behavior.Attach(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view); ((MockWindow)behavior.ViewMappings.First().Value).InvokeClosed(); Assert.IsTrue(region.RemoveCalled); }
public void ShouldCreateWindowOnViewActivation() { var parentCanvas = new Canvas(); var region = new MockRegion(); var view = new UserControl(); var behavior = new TestableDialogActivationBehavior(this.windowManager); behavior.HostControl = parentCanvas; behavior.Region = region; behavior.Attach(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view); Assert.IsNotNull(behavior.ViewMappings.First().Value); Assert.IsTrue(((MockWindow)behavior.ViewMappings.First().Value).ShowCalled); Assert.AreSame(view, behavior.ViewMappings.First().Value.Content); }
public void ShouldCreateWindowOnViewActivation() { var parentWindow = new MockDependencyObject(); var region = new MockRegion(); var view = new UserControl(); var behavior = new TestableDialogActivationBehavior(); behavior.HostControl = parentWindow; behavior.Region = region; behavior.Attach(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view); Assert.IsNotNull(behavior.CreatedWindow); Assert.IsTrue(behavior.CreatedWindow.ShowCalled); Assert.AreSame(view, behavior.CreatedWindow.Content); Assert.AreSame(parentWindow, behavior.CreatedWindow.Owner); }
public void ShouldSetStyleToRegionWindow() { var parentWindow = new MockDependencyObject(); var region = new MockRegion(); var behavior = new TestableDialogActivationBehavior(); behavior.HostControl = parentWindow; behavior.Region = region; var regionStyle = new Style(); parentWindow.SetValue(RegionPopupBehaviors.ContainerWindowStyleProperty, regionStyle); behavior.Attach(); var view = new UserControl(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view); Assert.AreEqual(regionStyle, behavior.CreatedWindow.Style); }
public void ShouldSetStyleToRegionWindow() { var parentControl = new Canvas(); var region = new MockRegion(); var behavior = new TestableDialogActivationBehavior(this.windowManager); behavior.HostControl = parentControl; behavior.Region = region; var regionStyle = new Style(); parentControl.SetValue(RegionWindowBehaviors.ContainerWindowStyleProperty, regionStyle); behavior.Attach(); var view = new UserControl(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view); Assert.AreEqual(regionStyle, behavior.ViewMappings.First().Value.Style); }
public void ShouldCloseCorrectWindowWhenRemovingViewFromRegion() { var view = new UserControl(); var view2 = new UserControl(); var region = new MockRegion(); var behavior = new TestableDialogActivationBehavior(this.windowManager); var parentCanvas = new Canvas(); behavior.HostControl = parentCanvas; behavior.Region = region; behavior.Attach(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view2); var windowForView = behavior.ViewMappings.ElementAt(0).Value; var windowForView2 = behavior.ViewMappings.ElementAt(1).Value; region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Remove, view2); Assert.IsFalse(((MockWindow)windowForView).CloseCalled); Assert.IsTrue(((MockWindow)windowForView2).CloseCalled); }
public void ShouldSetResizeModeToBothIfWindowInfoProviderResizeDirectionsIsBoth() { var view = new UserControl(); var viewModel = new MockWindowMetadataProvider(); view.DataContext = viewModel; var region = new MockRegion(); var behavior = new TestableDialogActivationBehavior(this.windowManager); var parentCanvas = new Canvas(); viewModel.Resize = ResizeDirection.Both; behavior.HostControl = parentCanvas; behavior.Region = region; behavior.Attach(); region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view); var windowForView = behavior.ViewMappings.ElementAt(0).Value; Assert.AreEqual(ResizeDirection.Both, windowForView.ResizeDirection); }