mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
https://mattermost.atlassian.net/browse/MM-36271 ```release-note We bump the major version to 6.0 ```
79 lines
1.8 KiB
Go
79 lines
1.8 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package searchtest
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/mattermost/mattermost-server/v6/store"
|
|
"github.com/mattermost/mattermost-server/v6/utils"
|
|
)
|
|
|
|
const (
|
|
EngineAll = "all"
|
|
EngineMySql = "mysql"
|
|
EnginePostgres = "postgres"
|
|
EngineElasticSearch = "elasticsearch"
|
|
EngineBleve = "bleve"
|
|
)
|
|
|
|
type SearchTestEngine struct {
|
|
Driver string
|
|
BeforeTest func(*testing.T, store.Store)
|
|
AfterTest func(*testing.T, store.Store)
|
|
}
|
|
|
|
type searchTest struct {
|
|
Name string
|
|
Fn func(*testing.T, *SearchTestHelper)
|
|
Tags []string
|
|
Skip bool
|
|
SkipMessage string
|
|
}
|
|
|
|
func filterTestsByTag(tests []searchTest, tags ...string) []searchTest {
|
|
filteredTests := []searchTest{}
|
|
for _, test := range tests {
|
|
if utils.StringInSlice(EngineAll, test.Tags) {
|
|
filteredTests = append(filteredTests, test)
|
|
continue
|
|
}
|
|
for _, tag := range tags {
|
|
if utils.StringInSlice(tag, test.Tags) {
|
|
filteredTests = append(filteredTests, test)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
return filteredTests
|
|
}
|
|
|
|
func runTestSearch(t *testing.T, testEngine *SearchTestEngine, tests []searchTest, th *SearchTestHelper) {
|
|
if testing.Short() {
|
|
t.Skip("Skipping advanced search test")
|
|
return
|
|
}
|
|
|
|
filteredTests := filterTestsByTag(tests, testEngine.Driver)
|
|
|
|
for _, test := range filteredTests {
|
|
|
|
if test.Skip {
|
|
t.Log("SKIPPED: " + test.Name + ". Reason: " + test.SkipMessage)
|
|
continue
|
|
}
|
|
|
|
if testEngine.BeforeTest != nil {
|
|
testEngine.BeforeTest(t, th.Store)
|
|
}
|
|
testName := test.Name
|
|
testFn := test.Fn
|
|
t.Run(testName, func(t *testing.T) { testFn(t, th) })
|
|
if testEngine.AfterTest != nil {
|
|
testEngine.AfterTest(t, th.Store)
|
|
}
|
|
}
|
|
}
|