QueryTests.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; 6 using System.Linq; 7 using Microsoft.CmdPal.Ext.System.Helpers; 8 using Microsoft.CmdPal.Ext.System.Pages; 9 using Microsoft.CmdPal.Ext.UnitTestBase; 10 using Microsoft.CommandPalette.Extensions; 11 using Microsoft.CommandPalette.Extensions.Toolkit; 12 using Microsoft.VisualStudio.TestTools.UnitTesting; 13 14 namespace Microsoft.CmdPal.Ext.System.UnitTests; 15 16 [TestClass] 17 public class QueryTests : CommandPaletteUnitTestBase 18 { 19 [DataTestMethod] 20 [DataRow("shutdown", "Shutdown")] 21 [DataRow("restart", "Restart")] 22 [DataRow("sign out", "Sign out")] 23 [DataRow("lock", "Lock")] 24 [DataRow("sleep", "Sleep")] 25 [DataRow("hibernate", "Hibernate")] 26 [DataRow("open recycle", "Open Recycle Bin")] 27 [DataRow("empty recycle", "Empty Recycle Bin")] 28 [DataRow("uefi", "UEFI firmware settings")] 29 public void TopLevelPageQueryTest(string input, string matchedTitle) 30 { 31 var settings = new Settings(); 32 var pages = new SystemCommandPage(settings); 33 var allCommands = pages.GetItems(); 34 35 var result = Query(input, allCommands); 36 37 // Empty recycle bin command should exist 38 Assert.IsNotNull(result); 39 40 var firstItem = result.FirstOrDefault(); 41 42 Assert.IsNotNull(firstItem, "No items matched the query."); 43 Assert.AreEqual(matchedTitle, firstItem.Title, $"Expected to match '{input}' but got '{firstItem.Title}'"); 44 } 45 46 [TestMethod] 47 public void RecycleBinCommandTest() 48 { 49 var settings = new Settings(hideEmptyRecycleBin: true); 50 var pages = new SystemCommandPage(settings); 51 var allCommands = pages.GetItems(); 52 53 var result = Query("recycle", allCommands); 54 55 // Empty recycle bin command should exist 56 Assert.IsNotNull(result); 57 58 foreach (var item in result) 59 { 60 if (item.Title.Contains("Open Recycle Bin") || item.Title.Contains("Empty Recycle Bin")) 61 { 62 Assert.Fail("Recycle Bin commands should not be available when hideEmptyRecycleBin is true."); 63 } 64 } 65 66 var firstItem = result.FirstOrDefault(); 67 Assert.IsNotNull(firstItem, "No items matched the query."); 68 Assert.IsTrue( 69 firstItem.Title.Contains("Recycle Bin", StringComparison.OrdinalIgnoreCase), 70 $"Expected to match 'Recycle Bin' but got '{firstItem.Title}'"); 71 } 72 73 [TestMethod] 74 public void NetworkCommandsTest() 75 { 76 var settings = new Settings(); 77 var pages = new SystemCommandPage(settings); 78 var allCommands = pages.GetItems(); 79 80 var ipv4Result = Query("IPv4", allCommands); 81 82 Assert.IsNotNull(ipv4Result); 83 Assert.IsTrue(ipv4Result.Length > 0, "No IPv4 commands matched the query."); 84 85 var ipv6Result = Query("IPv6", allCommands); 86 Assert.IsNotNull(ipv6Result); 87 Assert.IsTrue(ipv6Result.Length > 0, "No IPv6 commands matched the query."); 88 89 var macResult = Query("MAC", allCommands); 90 Assert.IsNotNull(macResult); 91 Assert.IsTrue(macResult.Length > 0, "No MAC commands matched the query."); 92 93 var findDisconnectedMACResult = false; 94 foreach (var item in macResult) 95 { 96 if (item.Details.Body.Contains("Disconnected")) 97 { 98 findDisconnectedMACResult = true; 99 break; 100 } 101 } 102 103 Assert.IsTrue(findDisconnectedMACResult, "No disconnected MAC address found in the results."); 104 } 105 106 [TestMethod] 107 public void HideDisconnectedNetworkInfoTest() 108 { 109 var settings = new Settings(hideDisconnectedNetworkInfo: true); 110 var pages = new SystemCommandPage(settings); 111 var allCommands = pages.GetItems(); 112 113 var macResult = Query("MAC", allCommands); 114 Assert.IsNotNull(macResult); 115 Assert.IsTrue(macResult.Length > 0, "No MAC commands matched the query."); 116 117 var findDisconnectedMACResult = false; 118 foreach (var item in macResult) 119 { 120 if (item.Details.Body.Contains("Disconnected")) 121 { 122 findDisconnectedMACResult = true; 123 break; 124 } 125 } 126 127 Assert.IsTrue(!findDisconnectedMACResult, "Disconnected MAC address found in the results."); 128 } 129 130 [TestMethod] 131 [DataRow(FirmwareType.Uefi, true)] 132 [DataRow(FirmwareType.Bios, false)] 133 [DataRow(FirmwareType.Max, false)] 134 [DataRow(FirmwareType.Unknown, false)] 135 public void FirmwareSettingsTest(FirmwareType firmwareType, bool hasCommand) 136 { 137 var settings = new Settings(firmwareType: firmwareType); 138 var pages = new SystemCommandPage(settings); 139 var allCommands = pages.GetItems(); 140 var result = Query("UEFI", allCommands); 141 142 // UEFI Firmware Settings command should exist 143 Assert.IsNotNull(result); 144 var firstItem = result.FirstOrDefault(); 145 var firstItemIsUefiCommand = firstItem?.Title.Contains("UEFI", StringComparison.OrdinalIgnoreCase) ?? false; 146 Assert.AreEqual(hasCommand, firstItemIsUefiCommand, $"Expected to match (or not match) 'UEFI firmware settings' but got '{firstItem?.Title}'"); 147 } 148 }