1// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2// See LICENSE.txt for license information. 3 4package searchengine 5 6import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10) 11 12func TestElasticsearchGetSuggestionsSplitBy(t *testing.T) { 13 testCases := []struct { 14 Name string 15 Term string 16 SplitStr string `` 17 Expected []string 18 }{ 19 { 20 Name: "Single string", 21 Term: "string", 22 SplitStr: " ", 23 Expected: []string{"string"}, 24 }, 25 { 26 Name: "String with spaces", 27 Term: "String with spaces", 28 SplitStr: " ", 29 Expected: []string{"string with spaces", "with spaces", "spaces"}, 30 }, 31 { 32 Name: "Username split by a dot", 33 Term: "name.surname", 34 SplitStr: ".", 35 Expected: []string{"name.surname", ".surname", "surname"}, 36 }, 37 { 38 Name: "String split by several dashes", 39 Term: "one-two-three", 40 SplitStr: "-", 41 Expected: []string{"one-two-three", "-two-three", "two-three", "-three", "three"}, 42 }, 43 } 44 45 for _, tc := range testCases { 46 t.Run(tc.Name, func(t *testing.T) { 47 res := GetSuggestionInputsSplitBy(tc.Term, tc.SplitStr) 48 assert.ElementsMatch(t, res, tc.Expected) 49 }) 50 } 51} 52 53func TestElasticsearchGetSuggestionsSplitByMultiple(t *testing.T) { 54 r1 := GetSuggestionInputsSplitByMultiple("String with user.name", []string{" ", "."}) 55 expectedR1 := []string{"string with user.name", "with user.name", "user.name", ".name", "name"} 56 assert.ElementsMatch(t, r1, expectedR1) 57} 58