/ src / modules / cmdpal / Tests / Microsoft.CmdPal.Ext.Apps.UnitTests / AllAppsCommandProviderTests.cs
AllAppsCommandProviderTests.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 System.Threading.Tasks;
  8  using Microsoft.VisualStudio.TestTools.UnitTesting;
  9  
 10  namespace Microsoft.CmdPal.Ext.Apps.UnitTests;
 11  
 12  [TestClass]
 13  public class AllAppsCommandProviderTests : AppsTestBase
 14  {
 15      [TestMethod]
 16      public void ProviderHasDisplayName()
 17      {
 18          // Setup
 19          var provider = new AllAppsCommandProvider();
 20  
 21          // Assert
 22          Assert.IsNotNull(provider.DisplayName);
 23          Assert.IsTrue(provider.DisplayName.Length > 0);
 24      }
 25  
 26      [TestMethod]
 27      public void ProviderHasIcon()
 28      {
 29          // Setup
 30          var provider = new AllAppsCommandProvider();
 31  
 32          // Assert
 33          Assert.IsNotNull(provider.Icon);
 34      }
 35  
 36      [TestMethod]
 37      public void TopLevelCommandsNotEmpty()
 38      {
 39          // Setup
 40          var provider = new AllAppsCommandProvider();
 41  
 42          // Act
 43          var commands = provider.TopLevelCommands();
 44  
 45          // Assert
 46          Assert.IsNotNull(commands);
 47          Assert.IsTrue(commands.Length > 0);
 48      }
 49  
 50      [TestMethod]
 51      public void LookupAppWithEmptyNameReturnsNotNull()
 52      {
 53          // Setup
 54          var mockApp = TestDataHelper.CreateTestWin32Program("Notepad", "C:\\Windows\\System32\\notepad.exe");
 55          MockCache.AddWin32Program(mockApp);
 56          var page = new AllAppsPage(MockCache);
 57  
 58          var provider = new AllAppsCommandProvider(page);
 59  
 60          // Act
 61          var result = provider.LookupAppByDisplayName(string.Empty);
 62  
 63          // Assert
 64          Assert.IsNotNull(result);
 65      }
 66  
 67      [TestMethod]
 68      public async Task ProviderWithMockData_LookupApp_ReturnsCorrectApp()
 69      {
 70          // Arrange
 71          var testApp = TestDataHelper.CreateTestWin32Program("TestApp", "C:\\TestApp.exe");
 72          MockCache.AddWin32Program(testApp);
 73  
 74          var provider = new AllAppsCommandProvider(Page);
 75  
 76          // Wait for initialization to complete
 77          await WaitForPageInitializationAsync();
 78  
 79          // Act
 80          var result = provider.LookupAppByDisplayName("TestApp");
 81  
 82          // Assert
 83          Assert.IsNotNull(result);
 84          Assert.AreEqual("TestApp", result.Title);
 85      }
 86  
 87      [TestMethod]
 88      public async Task ProviderWithMockData_LookupApp_ReturnsNullForNonExistentApp()
 89      {
 90          // Arrange
 91          var testApp = TestDataHelper.CreateTestWin32Program("TestApp", "C:\\TestApp.exe");
 92          MockCache.AddWin32Program(testApp);
 93  
 94          var provider = new AllAppsCommandProvider(Page);
 95  
 96          // Wait for initialization to complete
 97          await WaitForPageInitializationAsync();
 98  
 99          // Act
100          var result = provider.LookupAppByDisplayName("NonExistentApp");
101  
102          // Assert
103          Assert.IsNull(result);
104      }
105  
106      [TestMethod]
107      public void ProviderWithMockData_TopLevelCommands_IncludesListItem()
108      {
109          // Arrange
110          var provider = new AllAppsCommandProvider(Page);
111  
112          // Act
113          var commands = provider.TopLevelCommands();
114  
115          // Assert
116          Assert.IsNotNull(commands);
117          Assert.IsTrue(commands.Length >= 1); // At least the list item should be present
118      }
119  }