From a58dcb0c422e1d3cc7764bed298353908a1a9923 Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Fri, 14 Feb 2025 13:40:24 +0530 Subject: [PATCH] re-arrange the tests to run only on DB ```release-note NONE ``` --- .../channels/store/searchtest/post_layer.go | 46 ++++++++++++++++--- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/server/channels/store/searchtest/post_layer.go b/server/channels/store/searchtest/post_layer.go index df718b6b98..37475097a1 100644 --- a/server/channels/store/searchtest/post_layer.go +++ b/server/channels/store/searchtest/post_layer.go @@ -35,6 +35,11 @@ var searchPostStoreTests = []searchTest{ Fn: testSearchANDORQuotesCombinations, Tags: []string{EnginePostgres, EngineMySQL, EngineElasticSearch}, }, + { + Name: "Should be able to search without stemming", + Fn: testStemming, + Tags: []string{EnginePostgres, EngineMySQL}, + }, { // Postgres supports search with and without quotes Name: "Should be able to search for email addresses with or without quotes", @@ -366,10 +371,6 @@ func testSearchANDORQuotesCombinations(t *testing.T, th *SearchTestHelper) { require.NoError(t, err) p3, err := th.createPost(th.User.Id, th.ChannelBasic.Id, "one five six", "", model.PostTypeDefault, 0, false) require.NoError(t, err) - p4, err := th.createPost(th.User.Id, th.ChannelBasic.Id, "great minds think", "", model.PostTypeDefault, 0, false) - require.NoError(t, err) - p5, err := th.createPost(th.User.Id, th.ChannelBasic.Id, "mindful of what you think", "", model.PostTypeDefault, 0, false) - require.NoError(t, err) defer th.deleteUserPosts(th.User.Id) @@ -450,26 +451,57 @@ func testSearchANDORQuotesCombinations(t *testing.T, th *SearchTestHelper) { expectedLen: 2, expectedIDs: []string{p1.Id, p2.Id}, }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + params := &model.SearchParams{Terms: tc.terms, OrTerms: tc.orTerms} + results, err := th.Store.Post().SearchPostsForUser(th.Context, []*model.SearchParams{params}, th.User.Id, th.Team.Id, 0, 20) + require.NoError(t, err) + + require.Len(t, results.Posts, tc.expectedLen) + for _, id := range tc.expectedIDs { + th.checkPostInSearchResults(t, id, results.Posts) + } + }) + } +} + +func testStemming(t *testing.T, th *SearchTestHelper) { + p1, err := th.createPost(th.User.Id, th.ChannelBasic.Id, "great minds think", "", model.PostTypeDefault, 0, false) + require.NoError(t, err) + p2, err := th.createPost(th.User.Id, th.ChannelBasic.Id, "mindful of what you think", "", model.PostTypeDefault, 0, false) + require.NoError(t, err) + + defer th.deleteUserPosts(th.User.Id) + + testCases := []struct { + name string + terms string + orTerms bool + expectedLen int + expectedIDs []string + }{ { name: "simple search, no stemming", terms: `"minds think"`, orTerms: false, expectedLen: 1, - expectedIDs: []string{p4.Id}, + expectedIDs: []string{p1.Id}, }, { name: "simple search, single word, no stemming", terms: `"minds"`, orTerms: false, expectedLen: 1, - expectedIDs: []string{p4.Id}, + expectedIDs: []string{p1.Id}, }, { name: "non-simple search, stemming", terms: `minds think`, orTerms: true, expectedLen: 2, - expectedIDs: []string{p4.Id, p5.Id}, + expectedIDs: []string{p1.Id, p2.Id}, }, { name: "simple search, no stemming, no results",