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 }