From 970fcd8f143ec3a596fe81b74610677923a85f35 Mon Sep 17 00:00:00 2001 From: Hongtao Zhang Date: Thu, 3 Nov 2022 23:57:47 -0500 Subject: [PATCH] Fix testing and remove obsolete method --- Flow.Launcher.Test/Plugins/ExplorerTest.cs | 94 ++++++------------- .../Search/WindowsIndex/QueryConstructor.cs | 43 +-------- 2 files changed, 31 insertions(+), 106 deletions(-) diff --git a/Flow.Launcher.Test/Plugins/ExplorerTest.cs b/Flow.Launcher.Test/Plugins/ExplorerTest.cs index 5286f85c7..a5e3ec3df 100644 --- a/Flow.Launcher.Test/Plugins/ExplorerTest.cs +++ b/Flow.Launcher.Test/Plugins/ExplorerTest.cs @@ -33,12 +33,11 @@ namespace Flow.Launcher.Test.Plugins { new Result { - Title="Result 1" + Title = "Result 1" }, - new Result { - Title="Result 2" + Title = "Result 2" } }; } @@ -51,12 +50,9 @@ namespace Flow.Launcher.Test.Plugins [TestCase("C:\\SomeFolder\\", "directory='file:C:\\SomeFolder\\'")] public void GivenWindowsIndexSearch_WhenProvidedFolderPath_ThenQueryWhereRestrictionsShouldUseDirectoryString(string path, string expectedString) { - // Given - var queryConstructor = new QueryConstructor(new Settings()); - // When var folderPath = path; - var result = queryConstructor.QueryWhereRestrictionsForTopLevelDirectorySearch(folderPath); + var result = QueryConstructor.TopLevelDirectoryConstraint(folderPath); // Then Assert.IsTrue(result == expectedString, @@ -76,48 +72,27 @@ namespace Flow.Launcher.Test.Plugins var queryString = queryConstructor.Directory(folderPath); // Then - Assert.IsTrue(queryString == expectedString, + Assert.IsTrue(queryString.Replace(" ", " ") == expectedString.Replace(" ", " "), $"Expected string: {expectedString}{Environment.NewLine} " + $"Actual string was: {queryString}{Environment.NewLine}"); } [SupportedOSPlatform("windows7.0")] - [TestCase("C:\\SomeFolder\\flow.launcher.sln", "SELECT TOP 100 System.FileName, System.ItemUrl, System.ItemType " + - "FROM SystemIndex WHERE (System.FileName LIKE 'flow.launcher.sln%' " + - "OR CONTAINS(System.FileName,'\"flow.launcher.sln*\"',1033))" + - " AND directory='file:C:\\SomeFolder' ORDER BY System.FileName")] + [TestCase("C:\\SomeFolder", "flow.launcher.sln", "SELECT TOP 100 System.FileName, System.ItemUrl, System.ItemType" + + " FROM SystemIndex WHERE directory='file:C:\\SomeFolder'" + + " AND (System.FileName LIKE 'flow.launcher.sln%' OR CONTAINS(System.FileName,'\"flow.launcher.sln*\"'))" + + " ORDER BY System.FileName")] public void GivenWindowsIndexSearchTopLevelDirectory_WhenSearchingForSpecificItem_ThenQueryShouldUseExpectedString( - string userSearchString, string expectedString) + string folderPath, string userSearchString, string expectedString) { // Given var queryConstructor = new QueryConstructor(new Settings()); //When - var queryString = queryConstructor.Directory(userSearchString); + var queryString = queryConstructor.Directory(folderPath, userSearchString); // Then - Assert.IsTrue(queryString == expectedString, - $"Expected string: {expectedString}{Environment.NewLine} " + - $"Actual string was: {queryString}{Environment.NewLine}"); - } - - [SupportedOSPlatform("windows7.0")] - [TestCase("C:\\SomeFolder\\SomeApp", "(System.FileName LIKE 'SomeApp%' " + - "OR CONTAINS(System.FileName,'\"SomeApp*\"',1033))" + - " AND directory='file:C:\\SomeFolder'")] - public void GivenWindowsIndexSearchTopLevelDirectory_WhenSearchingForSpecificItem_ThenQueryWhereRestrictionsShouldUseDirectoryString( - string userSearchString, string expectedString) - { - // Given - var queryConstructor = new QueryConstructor(new Settings()); - - //When - var queryString = queryConstructor.QueryWhereRestrictionsForTopLevelDirectorySearch(userSearchString); - - // Then - Assert.IsTrue(queryString == expectedString, - $"Expected string: {expectedString}{Environment.NewLine} " + - $"Actual string was: {queryString}{Environment.NewLine}"); + Assert.AreEqual(expectedString, queryString); } [SupportedOSPlatform("windows7.0")] @@ -125,40 +100,35 @@ namespace Flow.Launcher.Test.Plugins public void GivenWindowsIndexSearch_WhenSearchAllFoldersAndFiles_ThenQueryWhereRestrictionsShouldUseScopeString(string expectedString) { //When - var resultString = QueryConstructor.RestrictionsForAllFilesAndFoldersSearch; + const string resultString = QueryConstructor.RestrictionsForAllFilesAndFoldersSearch; // Then - Assert.IsTrue(resultString == expectedString, - $"Expected QueryWhereRestrictions string: {expectedString}{Environment.NewLine} " + - $"Actual string was: {resultString}{Environment.NewLine}"); + Assert.AreEqual(expectedString, resultString); } [SupportedOSPlatform("windows7.0")] [TestCase("flow.launcher.sln", "SELECT TOP 100 \"System.FileName\", \"System.ItemUrl\", \"System.ItemType\" " + "FROM \"SystemIndex\" WHERE (System.FileName LIKE 'flow.launcher.sln%' " + "OR CONTAINS(System.FileName,'\"flow.launcher.sln*\"',1033)) AND scope='file:' ORDER BY System.FileName")] + [TestCase("", "SELECT TOP 100 \"System.FileName\", \"System.ItemUrl\", \"System.ItemType\" FROM \"SystemIndex\" WHERE WorkId IS NOT NULL AND scope='file:' ORDER BY System.FileName")] public void GivenWindowsIndexSearch_WhenSearchAllFoldersAndFiles_ThenQueryShouldUseExpectedString( string userSearchString, string expectedString) { // Given var queryConstructor = new QueryConstructor(new Settings()); - var baseQuery = queryConstructor.BaseQueryHelper; - + var baseQuery = queryConstructor.BaseQueryHelper; + // system running this test could have different locale than the hard-coded 1033 LCID en-US. var queryKeywordLocale = baseQuery.QueryKeywordLocale; expectedString = expectedString.Replace("1033", queryKeywordLocale.ToString()); - - //When var resultString = queryConstructor.FilesAndFolders(userSearchString); // Then - Assert.IsTrue(resultString == expectedString, - $"Expected query string: {expectedString}{Environment.NewLine} " + - $"Actual string was: {resultString}{Environment.NewLine}"); + Assert.AreEqual(expectedString, resultString); } - + [SupportedOSPlatform("windows7.0")] [TestCase(@"some words", @"FREETEXT('some words')")] @@ -179,7 +149,7 @@ namespace Flow.Launcher.Test.Plugins [SupportedOSPlatform("windows7.0")] [TestCase("some words", "SELECT TOP 100 System.FileName, System.ItemUrl, System.ItemType " + - "FROM SystemIndex WHERE FREETEXT('some words') AND scope='file:' ORDER BY System.FileName")] + "FROM SystemIndex WHERE FREETEXT('some words') AND scope='file:' ORDER BY System.FileName")] public void GivenWindowsIndexSearch_WhenSearchForFileContent_ThenQueryShouldUseExpectedString( string userSearchString, string expectedString) { @@ -198,7 +168,10 @@ namespace Flow.Launcher.Test.Plugins public void GivenQuery_WhenActionKeywordForFileContentSearchExists_ThenFileContentSearchRequiredShouldReturnTrue() { // Given - var query = new Query { ActionKeyword = "doc:", Search = "search term" }; + var query = new Query + { + ActionKeyword = "doc:", Search = "search term" + }; var searchManager = new SearchManager(new Settings(), new PluginInitContext()); @@ -272,22 +245,15 @@ namespace Flow.Launcher.Test.Plugins } [SupportedOSPlatform("windows7.0")] - [TestCase("c:\\SomeFolder\\>", "scope='file:c:\\SomeFolder'")] - [TestCase("c:\\SomeFolder\\>SomeName", "(System.FileName LIKE 'SomeName%' " - + "OR CONTAINS(System.FileName,'\"SomeName*\"',1033)) AND " - + "scope='file:c:\\SomeFolder'")] - public void GivenWindowsIndexSearch_WhenSearchPatternHotKeyIsSearchAll_ThenQueryWhereRestrictionsShouldUseScopeString(string path, string expectedString) + [TestCase("c:\\SomeFolder", "scope='file:c:\\SomeFolder'")] + [TestCase("c:\\OtherFolder", "scope='file:c:\\OtherFolder'")] + public void GivenFilePath_WhenSearchPatternHotKeyIsSearchAll_ThenQueryWhereRestrictionsShouldUseScopeString(string path, string expectedString) { - // Given - var queryConstructor = new QueryConstructor(new Settings()); - //When - var resultString = queryConstructor.QueryWhereRestrictionsForTopLevelDirectoryAllFilesAndFoldersSearch(path); + var resultString = QueryConstructor.RecursiveDirectoryConstraint(path); // Then - Assert.IsTrue(resultString == expectedString, - $"Expected QueryWhereRestrictions string: {expectedString}{Environment.NewLine} " + - $"Actual string was: {resultString}{Environment.NewLine}"); + Assert.AreEqual(expectedString, resultString); } [SupportedOSPlatform("windows7.0")] @@ -301,9 +267,7 @@ namespace Flow.Launcher.Test.Plugins var resultString = DirectoryInfoSearch.ConstructSearchCriteria(path); // Then - Assert.IsTrue(resultString == expectedString, - $"Expected criteria string: {expectedString}{Environment.NewLine} " + - $"Actual criteria string was: {resultString}{Environment.NewLine}"); + Assert.AreEqual(expectedString, resultString); } } } diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/QueryConstructor.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/QueryConstructor.cs index 54b1e8182..6501c1657 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/QueryConstructor.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/QueryConstructor.cs @@ -52,49 +52,10 @@ namespace Flow.Launcher.Plugin.Explorer.Search.WindowsIndex return queryHelper; } - private static string TopLevelDirectoryConstraint(ReadOnlySpan path) => $"directory='file:{path}'"; - private static string RecursiveDirectoryConstraint(ReadOnlySpan path) => $"scope='file:{path}'"; - - /// - /// Set the required WHERE clause restriction to search on the first level of a specified directory. - /// - [Obsolete("This method is not used and will be removed in a future version.")] - public string QueryWhereRestrictionsForTopLevelDirectorySearch(string path) - { - return QueryWhereRestrictionsFromLocationPath(path, "directory='file:"); - } + public static string TopLevelDirectoryConstraint(ReadOnlySpan path) => $"directory='file:{path}'"; + public static string RecursiveDirectoryConstraint(ReadOnlySpan path) => $"scope='file:{path}'"; - /// - /// Set the required WHERE clause restriction to search all files and subfolders of a specified directory. - /// - [Obsolete("This method is not used and will be removed in a future version.")] - public string QueryWhereRestrictionsForTopLevelDirectoryAllFilesAndFoldersSearch(string path) - { - return QueryWhereRestrictionsFromLocationPath(path, "directory='scope:"); - } - - // TODO: Remove the method - private string QueryWhereRestrictionsFromLocationPath(string path, string searchDepth) - { - if (path.EndsWith(Constants.DirectorySeperator)) - return searchDepth + $"{path}'"; - - var indexOfSeparator = path.LastIndexOf(Constants.DirectorySeperator); - - var itemName = path[(indexOfSeparator + 1)..]; - - if (itemName.StartsWith(Constants.AllFilesFolderSearchWildcard)) - itemName = itemName[1..]; - - var previousLevelDirectory = path.Substring(0, indexOfSeparator); - - if (string.IsNullOrEmpty(itemName)) - return $"{searchDepth}{previousLevelDirectory}'"; - - return $"(System.FileName LIKE '{itemName}%' OR CONTAINS({FileName},'\"{itemName}*\"',1033)) AND {searchDepth}{previousLevelDirectory}'"; - } - /// /// Search will be performed on all folders and files on the first level of a specified directory. ///