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.Linq;
 6  using Microsoft.CmdPal.Ext.Registry.Helpers;
 7  using Microsoft.CmdPal.Ext.UnitTestBase;
 8  using Microsoft.CommandPalette.Extensions;
 9  using Microsoft.CommandPalette.Extensions.Toolkit;
10  using Microsoft.VisualStudio.TestTools.UnitTesting;
11  
12  namespace Microsoft.CmdPal.Ext.Registry.UnitTests;
13  
14  [TestClass]
15  public class QueryTests : CommandPaletteUnitTestBase
16  {
17      [DataTestMethod]
18      [DataRow("HKLM", "HKEY_LOCAL_MACHINE")]
19      [DataRow("HKCU", "HKEY_CURRENT_USER")]
20      [DataRow("HKCR", "HKEY_CLASSES_ROOT")]
21      [DataRow("HKU", "HKEY_USERS")]
22      [DataRow("HKCC", "HKEY_CURRENT_CONFIG")]
23      public void TopLevelPageQueryTest(string input, string expectedKeyName)
24      {
25          var settings = new Settings();
26          var page = new RegistryListPage(settings);
27          var results = page.Query(input);
28  
29          Assert.IsNotNull(results);
30          Assert.IsTrue(results.Count > 0, "No items matched the query.");
31  
32          var firstItem = results.FirstOrDefault();
33          Assert.IsNotNull(firstItem, "No items matched the query.");
34          Assert.IsTrue(
35              firstItem.Title.Contains(expectedKeyName, System.StringComparison.OrdinalIgnoreCase),
36              $"Expected to match '{expectedKeyName}' but got '{firstItem.Title}'");
37      }
38  
39      [TestMethod]
40      public void EmptyQueryTest()
41      {
42          var settings = new Settings();
43          var page = new RegistryListPage(settings);
44          var results = page.Query(string.Empty);
45  
46          Assert.IsNotNull(results);
47  
48          // Empty query should return all base keys
49          Assert.IsTrue(results.Count >= 5, "Expected at least 5 base registry keys.");
50      }
51  
52      [TestMethod]
53      public void NullQueryTest()
54      {
55          var settings = new Settings();
56          var page = new RegistryListPage(settings);
57          var results = page.Query(null);
58  
59          Assert.IsNotNull(results);
60          Assert.AreEqual(0, results.Count, "Null query should return empty results.");
61      }
62  
63      [TestMethod]
64      public void InvalidBaseKeyTest()
65      {
66          var settings = new Settings();
67          var page = new RegistryListPage(settings);
68          var results = page.Query("INVALID_KEY");
69  
70          Assert.IsNotNull(results);
71  
72          Assert.AreEqual(0, results.Count, "Invalid query should return empty results.");
73      }
74  }