diff --git a/src/tests/unit/searcher/web-search-searcher.test.ts b/src/tests/unit/searcher/web-search-searcher.test.ts index 3e4fded9b..b379dcc53 100644 --- a/src/tests/unit/searcher/web-search-searcher.test.ts +++ b/src/tests/unit/searcher/web-search-searcher.test.ts @@ -35,7 +35,7 @@ describe(WebSearchSearcher.name, (): void => { } }); - it("should throw an error if user input does not match any search engine", () => { + it("should throw an error if user input does not match any search engine", (): void => { const invalidUserInputs = [ "", " ", @@ -55,6 +55,27 @@ describe(WebSearchSearcher.name, (): void => { expect(errorCounter).toBe(invalidUserInputs.length); }); + + it("should trim the user's search term", (): void => { + const userSearchTerms = [ + "hallo", + " hallo ", + " hallo", + "hallo ", + ]; + + const trimmedUserInput = "hallo"; + + for (const dummyWebSearch of dummyWebSearches) { + for (const userSearchTerm of userSearchTerms) { + const userInput = `${dummyWebSearch.prefix}${WebSearchHelpers.webSearchSeparator}${userSearchTerm}`; + const actual = searcher.getSearchResult(userInput); + + expect(actual.length).toBe(1); + expect(actual[0].executionArgument).toBe(`${dummyWebSearch.url}${trimmedUserInput}`); + } + } + }); } }); }); diff --git a/src/ts/builders/web-search-builder.ts b/src/ts/builders/web-search-builder.ts index f9f12f9bc..e43e67fd8 100644 --- a/src/ts/builders/web-search-builder.ts +++ b/src/ts/builders/web-search-builder.ts @@ -9,7 +9,7 @@ export class WebSearchBuilder { public static buildExecutionUrl(userInput: string, webSearch: WebSearch): string { const searchTerm = this.buildSearchTerm(userInput, webSearch); - return `${webSearch.url}${searchTerm}`; + return `${webSearch.url}${searchTerm.trim()}`; } public static buildSearchResultItem(userInput: string, webSearch: WebSearch): SearchResultItem { @@ -19,9 +19,11 @@ export class WebSearchBuilder { ? `Search ${webSearch.name} for '${searchTerm.trim()}'` : `Search ${webSearch.name}`; + const executionArgument = WebSearchBuilder.buildExecutionUrl(userInput, webSearch); + return { - description: WebSearchBuilder.buildExecutionUrl(userInput, webSearch), - executionArgument: WebSearchBuilder.buildExecutionUrl(userInput, webSearch), + description: executionArgument, + executionArgument, icon: webSearch.icon, name: searchResultItemName, searchable: [],