[PTRun] Fix always show after executing context menu result (#21291)

* fix always show

* add tests

* remove workaround
This commit is contained in:
Henrik Lau Eriksson
2022-10-25 23:27:18 +02:00
committed by GitHub
parent a3042b8435
commit 460f242967
10 changed files with 111 additions and 32 deletions

View File

@@ -0,0 +1,71 @@
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Collections.Generic;
using System.Linq;
using Microsoft.PowerToys.STATestExtension;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using PowerLauncher.Plugin;
using PowerLauncher.ViewModel;
using Wox.Plugin;
namespace Wox.Test
{
[STATestClass]
public class ResultViewModelTest
{
private ContextMenuResult contextMenuResult;
private Mock<IMainViewModel> mainViewModelMock;
private ResultViewModel resultViewModel;
[TestInitialize]
public void Setup()
{
var result = new Result();
contextMenuResult = new ContextMenuResult();
mainViewModelMock = new Mock<IMainViewModel>();
resultViewModel = new ResultViewModel(result, mainViewModelMock.Object);
var pluginMock = new Mock<IPlugin>();
pluginMock.As<IContextMenu>().Setup(x => x.LoadContextMenus(result)).Returns(new List<ContextMenuResult> { contextMenuResult });
var pair = new PluginPair(new PluginMetadata());
pair.Plugin = pluginMock.Object;
PluginManager.SetAllPlugins(new List<PluginPair>()
{
pair,
});
PluginManager.InitializePlugins(new Mock<IPublicAPI>().Object);
}
[TestMethod]
public void ExecuteContextMenuResultActionThatReturnsTrueShouldHideTheMainView()
{
// Arrange
contextMenuResult.Action = _ => true;
// Act
resultViewModel.LoadContextMenu();
resultViewModel.ContextMenuItems.Single().Command.Execute(null);
// Assert
mainViewModelMock.Verify(x => x.Hide(), Times.Once());
}
[TestMethod]
public void ExecuteContextMenuResultActionThatReturnsFalseShouldNotHideTheMainView()
{
// Arrange
contextMenuResult.Action = _ => false;
// Act
resultViewModel.LoadContextMenu();
resultViewModel.ContextMenuItems.Single().Command.Execute(null);
// Assert
mainViewModelMock.Verify(x => x.Hide(), Times.Never());
}
}
}

View File

@@ -18,7 +18,7 @@ namespace Wox.Test
// Arrange
ResultsViewModel rvm = new ResultsViewModel();
Result result = new Result();
ResultViewModel selectedItem = new ResultViewModel(result);
ResultViewModel selectedItem = new ResultViewModel(result, null);
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel(null, null, null, null, Key.None, ModifierKeys.None, null));
rvm.SelectedItem = selectedItem;
@@ -32,7 +32,7 @@ namespace Wox.Test
// Arrange
ResultsViewModel rvm = new ResultsViewModel();
Result result = new Result();
ResultViewModel selectedItem = new ResultViewModel(result);
ResultViewModel selectedItem = new ResultViewModel(result, null);
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel(null, null, null, null, Key.None, ModifierKeys.None, null));
rvm.SelectedItem = selectedItem;
@@ -49,7 +49,7 @@ namespace Wox.Test
// Arrange
ResultsViewModel rvm = new ResultsViewModel();
Result result = new Result();
ResultViewModel selectedItem = new ResultViewModel(result);
ResultViewModel selectedItem = new ResultViewModel(result, null);
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel(null, null, null, null, Key.None, ModifierKeys.None, null));
rvm.SelectedItem = selectedItem;
@@ -66,7 +66,7 @@ namespace Wox.Test
// Arrange
ResultsViewModel rvm = new ResultsViewModel();
Result result = new Result();
ResultViewModel selectedItem = new ResultViewModel(result);
ResultViewModel selectedItem = new ResultViewModel(result, null);
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel(null, null, null, null, Key.None, ModifierKeys.None, null));
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel(null, null, null, null, Key.None, ModifierKeys.None, null));
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel(null, null, null, null, Key.None, ModifierKeys.None, null));
@@ -88,7 +88,7 @@ namespace Wox.Test
// Arrange
ResultsViewModel rvm = new ResultsViewModel();
Result result = new Result();
ResultViewModel selectedItem = new ResultViewModel(result);
ResultViewModel selectedItem = new ResultViewModel(result, null);
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel(null, null, null, null, Key.None, ModifierKeys.None, null));
rvm.SelectedItem = selectedItem;
@@ -106,7 +106,7 @@ namespace Wox.Test
// Arrange
ResultsViewModel rvm = new ResultsViewModel();
Result result = new Result();
ResultViewModel selectedItem = new ResultViewModel(result);
ResultViewModel selectedItem = new ResultViewModel(result, null);
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel(null, null, null, null, Key.None, ModifierKeys.None, null));
rvm.SelectedItem = selectedItem;
@@ -124,7 +124,7 @@ namespace Wox.Test
// Arrange
ResultsViewModel rvm = new ResultsViewModel();
Result result = new Result();
ResultViewModel selectedItem = new ResultViewModel(result);
ResultViewModel selectedItem = new ResultViewModel(result, null);
selectedItem.ContextMenuItems.Add(new ContextMenuItemViewModel(null, null, null, null, Key.None, ModifierKeys.None, null));
rvm.SelectedItem = selectedItem;

View File

@@ -32,6 +32,11 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\..\previewpane\STATestClassAttribute.cs" Link="STATestClassAttribute.cs" />
<Compile Include="..\..\previewpane\STATestMethodAttribute.cs" Link="STATestMethodAttribute.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Plugins\Microsoft.Plugin.Folder\Microsoft.Plugin.Folder.csproj" />
<ProjectReference Include="..\Plugins\Microsoft.Plugin.Indexer\Microsoft.Plugin.Indexer.csproj" />