public void RaiseWindow_WhenViewIsNotOnTop_ShouldRaiseIt()
        {
            //---------------Set up test pack-------------------
            var viewModel1 = new AboutViewModel();
            var viewModel2 = new FeedbackViewModel(Substitute.For <ILogFeedbackCommand>());
            var sut        = Create();

            sut.RaiseWindow(viewModel1);

            //---------------Assert Precondition----------------
            WaitForWindowOn(viewModel1);
            var vm1Handle  = new WindowInteropHelper(viewModel1.GetWindow()).Handle;
            var currentTop = Win32Api.GetForegroundWindow();

            Assert.AreEqual(vm1Handle, currentTop);

            //---------------Execute Test ----------------------
            sut.RaiseWindow(viewModel2);
            WaitForWindowOn(viewModel2);
            Assert.AreNotEqual(vm1Handle, Win32Api.GetForegroundWindow());
            sut.RaiseWindow(viewModel1);

            //---------------Test Result -----------------------
            Assert.AreEqual(vm1Handle, Win32Api.GetForegroundWindow());
        }
        public void HideWindow_ShouldHideWindow()
        {
            //---------------Set up test pack-------------------
            var viewModel = new AboutViewModel();
            var sut       = Create();

            sut.ShowWindow(viewModel);

            //---------------Assert Precondition----------------
            WaitForWindowOn(viewModel);
            Assert.IsTrue(viewModel.GetWindow().IsVisible);
            Assert.AreEqual(Win32Api.GetForegroundWindow(), new WindowInteropHelper(viewModel.GetWindow()).Handle);

            //---------------Execute Test ----------------------
            sut.HideWindow(viewModel);

            //---------------Test Result -----------------------
            Assert.IsFalse(viewModel.GetWindow().IsVisible);
        }
        public void RaiseWindow_WhenViewInactive_ShouldShowIt()
        {
            //---------------Set up test pack-------------------
            var viewModel = new AboutViewModel();
            var sut       = Create();

            sut.RaiseWindow(viewModel);
            var window = viewModel.GetWindow();

            sut.HideWindow(viewModel);

            //---------------Assert Precondition----------------
            Assert.IsFalse(window.IsVisible);

            //---------------Execute Test ----------------------
            sut.RaiseWindow(viewModel);

            //---------------Test Result -----------------------
            Assert.IsTrue(window.IsVisible);
        }