mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-03 17:56:44 +02:00
## Summary of the Pull Request This PR ensures that the list of recent searches in the Web Search extension is updated immediately after a new item is added or when settings controlling the number of items are changed. - Refactors the Web Search extension history to keep it in memory after being loaded at startup - Adds an event to notify subscribers when the history changes - Implements `IDisposable` to ensure that `WebSearchListPage` unsubscribes from the event - Moves responsibility for creating all list items to single class (`WebSearchListPage`) - Updated unit tests - ## PR Checklist - [x] Closes: #40548 - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [x] **Tests:** Added/updated and all pass - [x] **Localization:** All end-user-facing strings can be localized - [x] **Dev docs:** nothing - [x] **New binaries:** none - [x] **Documentation updated:** nope <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed
49 lines
1.3 KiB
C#
49 lines
1.3 KiB
C#
// Copyright (c) Microsoft Corporation
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System;
|
|
using System.Threading.Tasks;
|
|
|
|
using Microsoft.CmdPal.Ext.UnitTestBase;
|
|
using Microsoft.CmdPal.Ext.WebSearch.Helpers;
|
|
using Microsoft.CmdPal.Ext.WebSearch.Pages;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
|
|
namespace Microsoft.CmdPal.Ext.WebSearch.UnitTests;
|
|
|
|
[TestClass]
|
|
public class SettingsManagerTests : CommandPaletteUnitTestBase
|
|
{
|
|
[TestMethod]
|
|
public async Task HistoryChangedEventIsRaisedWhenItemIsAdded()
|
|
{
|
|
// Setup
|
|
var settings = new MockSettingsInterface(historyItemCount: 5);
|
|
var page = new WebSearchListPage(settings);
|
|
|
|
var eventRaised = false;
|
|
|
|
try
|
|
{
|
|
settings.HistoryChanged += Handler;
|
|
|
|
// Act
|
|
settings.AddHistoryItem(new HistoryItem("test event", DateTime.UtcNow));
|
|
await Task.Delay(50);
|
|
|
|
// Assert
|
|
Assert.IsTrue(eventRaised, "Expected HistoryChanged to be raised when saving history.");
|
|
}
|
|
finally
|
|
{
|
|
settings.HistoryChanged -= Handler;
|
|
page.Dispose();
|
|
}
|
|
|
|
return;
|
|
|
|
void Handler(object s, EventArgs e) => eventRaised = true;
|
|
}
|
|
}
|