github.com/haalcala/mattermost-server-change-repo@v0.0.0-20210713015153-16753fbeee5f/store/searchtest/testlib.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package searchtest 5 6 import ( 7 "testing" 8 9 "github.com/mattermost/mattermost-server/v5/store" 10 "github.com/mattermost/mattermost-server/v5/utils" 11 ) 12 13 const ( 14 EngineAll = "all" 15 EngineMySql = "mysql" 16 EnginePostgres = "postgres" 17 EngineElasticSearch = "elasticsearch" 18 EngineBleve = "bleve" 19 ) 20 21 type SearchTestEngine struct { 22 Driver string 23 BeforeTest func(*testing.T, store.Store) 24 AfterTest func(*testing.T, store.Store) 25 } 26 27 type searchTest struct { 28 Name string 29 Fn func(*testing.T, *SearchTestHelper) 30 Tags []string 31 Skip bool 32 SkipMessage string 33 } 34 35 func filterTestsByTag(tests []searchTest, tags ...string) []searchTest { 36 filteredTests := []searchTest{} 37 for _, test := range tests { 38 if utils.StringInSlice(EngineAll, test.Tags) { 39 filteredTests = append(filteredTests, test) 40 continue 41 } 42 for _, tag := range tags { 43 if utils.StringInSlice(tag, test.Tags) { 44 filteredTests = append(filteredTests, test) 45 break 46 } 47 } 48 } 49 50 return filteredTests 51 } 52 53 func runTestSearch(t *testing.T, testEngine *SearchTestEngine, tests []searchTest, th *SearchTestHelper) { 54 if testing.Short() { 55 t.Skip("Skipping advanced search test") 56 return 57 } 58 59 filteredTests := filterTestsByTag(tests, testEngine.Driver) 60 61 for _, test := range filteredTests { 62 63 if test.Skip { 64 t.Log("SKIPPED: " + test.Name + ". Reason: " + test.SkipMessage) 65 continue 66 } 67 68 if testEngine.BeforeTest != nil { 69 testEngine.BeforeTest(t, th.Store) 70 } 71 testName := test.Name 72 testFn := test.Fn 73 t.Run(testName, func(t *testing.T) { testFn(t, th) }) 74 if testEngine.AfterTest != nil { 75 testEngine.AfterTest(t, th.Store) 76 } 77 } 78 }