/ src / modules / launcher / Wox.Test / ResultViewModelTest.cs
ResultViewModelTest.cs
 1  // Copyright (c) Microsoft Corporation
 2  // The Microsoft Corporation licenses this file to you under the MIT license.
 3  // See the LICENSE file in the project root for more information.
 4  
 5  using System.Collections.Generic;
 6  using System.Linq;
 7  
 8  using Microsoft.VisualStudio.TestTools.UnitTesting;
 9  using Moq;
10  using PowerLauncher.Plugin;
11  using PowerLauncher.ViewModel;
12  using Wox.Plugin;
13  
14  namespace Wox.Test
15  {
16      [STATestClass]
17      public class ResultViewModelTest
18      {
19          private ContextMenuResult contextMenuResult;
20          private Mock<IMainViewModel> mainViewModelMock;
21          private ResultViewModel resultViewModel;
22  
23          [TestInitialize]
24          public void Setup()
25          {
26              var result = new Result();
27              contextMenuResult = new ContextMenuResult();
28              mainViewModelMock = new Mock<IMainViewModel>();
29              resultViewModel = new ResultViewModel(result, mainViewModelMock.Object, null);
30  
31              var pluginMock = new Mock<IPlugin>();
32              pluginMock.As<IContextMenu>().Setup(x => x.LoadContextMenus(result)).Returns(new List<ContextMenuResult> { contextMenuResult });
33  
34              var pair = new PluginPair(new PluginMetadata());
35              pair.Plugin = pluginMock.Object;
36              PluginManager.SetAllPlugins(new List<PluginPair>()
37              {
38                  pair,
39              });
40              PluginManager.InitializePlugins(new Mock<IPublicAPI>().Object);
41          }
42  
43          [TestMethod]
44          public void ExecuteContextMenuResultActionThatReturnsTrueShouldHideTheMainView()
45          {
46              // Arrange
47              contextMenuResult.Action = _ => true;
48  
49              // Act
50              resultViewModel.LoadContextMenu();
51              resultViewModel.ContextMenuItems.Single().Command.Execute(null);
52  
53              // Assert
54              mainViewModelMock.Verify(x => x.Hide(), Times.Once());
55          }
56  
57          [TestMethod]
58          public void ExecuteContextMenuResultActionThatReturnsFalseShouldNotHideTheMainView()
59          {
60              // Arrange
61              contextMenuResult.Action = _ => false;
62  
63              // Act
64              resultViewModel.LoadContextMenu();
65              resultViewModel.ContextMenuItems.Single().Command.Execute(null);
66  
67              // Assert
68              mainViewModelMock.Verify(x => x.Hide(), Times.Never());
69          }
70      }
71  }