From cd906b0a6f5dddcb70e999539b83ccbe0dacc32f Mon Sep 17 00:00:00 2001 From: Divyansh Srivastava Date: Tue, 8 Sep 2020 10:32:01 -0700 Subject: [PATCH] Corrected querytext display on action keyword (#6341) * Corrected querytexdisplay on action keyword * Added tests for UpdateResultWithActionKeyword --- .../ViewModel/ResultViewModel.cs | 3 +- .../launcher/Wox.Core/Plugin/PluginManager.cs | 18 ++++ .../launcher/Wox.Test/PluginManagerTest.cs | 96 +++++++++++++++++++ 3 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 src/modules/launcher/Wox.Test/PluginManagerTest.cs diff --git a/src/modules/launcher/PowerLauncher/ViewModel/ResultViewModel.cs b/src/modules/launcher/PowerLauncher/ViewModel/ResultViewModel.cs index 4bab5a48cb..e07717a2c5 100644 --- a/src/modules/launcher/PowerLauncher/ViewModel/ResultViewModel.cs +++ b/src/modules/launcher/PowerLauncher/ViewModel/ResultViewModel.cs @@ -272,8 +272,7 @@ namespace PowerLauncher.ViewModel public string SearchBoxDisplayText() { - var display = string.IsNullOrEmpty(Result.QueryTextDisplay) ? Result.Title : Result.QueryTextDisplay; - return display; + return Result.QueryTextDisplay; } public override string ToString() diff --git a/src/modules/launcher/Wox.Core/Plugin/PluginManager.cs b/src/modules/launcher/Wox.Core/Plugin/PluginManager.cs index 36496ed1ad..1e1d8a446e 100644 --- a/src/modules/launcher/Wox.Core/Plugin/PluginManager.cs +++ b/src/modules/launcher/Wox.Core/Plugin/PluginManager.cs @@ -172,6 +172,7 @@ namespace Wox.Core.Plugin if (results != null) { UpdatePluginMetadata(results, metadata, query); + UpdateResultWithActionKeyword(results, query); } }); metadata.QueryCount += 1; @@ -185,6 +186,23 @@ namespace Wox.Core.Plugin } } + private static List UpdateResultWithActionKeyword(List results, Query query) + { + foreach (Result result in results) + { + if (!string.IsNullOrEmpty(result.QueryTextDisplay)) + { + result.QueryTextDisplay = string.Format("{0} {1}", query.ActionKeyword, result.QueryTextDisplay); + } + else + { + result.QueryTextDisplay = string.Format("{0} {1}", query.ActionKeyword, result.Title); + } + } + + return results; + } + public static void UpdatePluginMetadata(List results, PluginMetadata metadata, Query query) { foreach (var r in results) diff --git a/src/modules/launcher/Wox.Test/PluginManagerTest.cs b/src/modules/launcher/Wox.Test/PluginManagerTest.cs new file mode 100644 index 0000000000..0c346d49cc --- /dev/null +++ b/src/modules/launcher/Wox.Test/PluginManagerTest.cs @@ -0,0 +1,96 @@ +// 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.Collections.Generic; +using System.Text; +using Moq; +using NUnit.Framework; +using Wox.Core.Plugin; +using Wox.Plugin; + +namespace Wox.Test +{ + [TestFixture] + public class PluginManagerTest + { + [Test] + public void QueryForPlugin_SetsActionKeyword_WhenQueryTextDisplayIsSet() + { + // Arrange + var actionKeyword = ">"; + var title = "dummyTitle"; + var queryTextDisplay = "dummyQueryTextDisplay"; + var query = new Query + { + ActionKeyword = actionKeyword, + }; + var metadata = new PluginMetadata + { + ID = "dummyName", + IcoPath = "dummyIcoPath", + ExecuteFileName = "dummyExecuteFileName", + PluginDirectory = "dummyPluginDirectory", + }; + var result = new Result() + { + QueryTextDisplay = queryTextDisplay, + Title = title, + }; + var results = new List() { result }; + var pluginMock = new Mock(); + pluginMock.Setup(r => r.Query(query)).Returns(results); + var pluginPair = new PluginPair + { + Plugin = pluginMock.Object, + Metadata = metadata, + }; + + // Act + var queryOutput = PluginManager.QueryForPlugin(pluginPair, query); + + // Assert + Assert.AreEqual(string.Format("{0} {1}", ">", queryTextDisplay), queryOutput[0].QueryTextDisplay); + } + + [TestCase("")] + [TestCase(null)] + public void QueryForPlugin_SetsActionKeyword_WhenQueryTextDisplayIsEmpty(string queryTextDisplay) + { + // Arrange + var actionKeyword = ">"; + var title = "dummyTitle"; + var query = new Query + { + ActionKeyword = actionKeyword, + }; + var metadata = new PluginMetadata + { + ID = "dummyName", + IcoPath = "dummyIcoPath", + ExecuteFileName = "dummyExecuteFileName", + PluginDirectory = "dummyPluginDirectory", + }; + var result = new Result() + { + QueryTextDisplay = queryTextDisplay, + Title = title, + }; + var results = new List() { result }; + var pluginMock = new Mock(); + pluginMock.Setup(r => r.Query(query)).Returns(results); + var pluginPair = new PluginPair + { + Plugin = pluginMock.Object, + Metadata = metadata, + }; + + // Act + var queryOutput = PluginManager.QueryForPlugin(pluginPair, query); + + // Assert + Assert.AreEqual(string.Format("{0} {1}", ">", title), queryOutput[0].QueryTextDisplay); + } + } +}