11using System ;
22using Elastic . Xunit . XunitPlumbing ;
3- using Elasticsearch . Net ;
43using Nest ;
54using Tests . Analysis ;
65using Tests . Analysis . Tokenizers ;
76using Tests . Core . ManagedElasticsearch . Clusters ;
87using Tests . Domain ;
9- using Tests . Framework ;
108using Tests . Framework . Integration ;
11- using Tests . Framework . ManagedElasticsearch . Clusters ;
129using static Tests . Framework . Promisify ;
1310
1411namespace Tests . Mapping . Types . Core . Keyword
1512{
16- [ SkipVersion ( "<5.2.0" , "This uses the normalizer feature introduced in 5.2.0" ) ]
1713 public class KeywordPropertyTests : PropertyTestsBase
1814 {
19- public KeywordPropertyTests ( WritableCluster cluster , EndpointUsage usage ) : base ( cluster , usage ) { }
15+ public KeywordPropertyTests ( WritableCluster cluster , EndpointUsage usage ) : base ( cluster , usage )
16+ {
17+ }
2018
2119 protected override ICreateIndexRequest CreateIndexSettings ( CreateIndexDescriptor create ) => create
2220 . Settings ( s => s
@@ -82,7 +80,8 @@ protected override ICreateIndexRequest CreateIndexSettings(CreateIndexDescriptor
8280
8381 protected override IProperties InitializerProperties => new Properties
8482 {
85- { "state" , new KeywordProperty
83+ {
84+ "state" , new KeywordProperty
8685 {
8786 DocValues = false ,
8887 Boost = 1.2 ,
@@ -97,10 +96,50 @@ protected override ICreateIndexRequest CreateIndexSettings(CreateIndexDescriptor
9796 Store = true ,
9897 Fields = new Properties
9998 {
100- { "foo" , new KeywordProperty { IgnoreAbove = 10 } }
99+ { "foo" , new KeywordProperty { IgnoreAbove = 10 } }
101100 }
102101 }
103102 }
104103 } ;
104+
105+ [ SkipVersion ( "<6.4.0" , "split_queries_on_whitespace is a new option https://github.com/elastic/elasticsearch/pull/30691" ) ]
106+ public class KeywordPropertySplitQueriesOnWhitespaceTests : PropertyTestsBase
107+ {
108+ public KeywordPropertySplitQueriesOnWhitespaceTests ( WritableCluster cluster , EndpointUsage usage ) : base ( cluster , usage ) { }
109+
110+ protected override ICreateIndexRequest CreateIndexSettings ( CreateIndexDescriptor create ) => create
111+ . Settings ( s => s
112+ . Analysis ( a => a
113+ . CharFilters ( t => Promise ( Analysis . CharFilters . CharFilterUsageTests . FluentExample ( s ) . Value . Analysis . CharFilters ) )
114+ . TokenFilters (
115+ t => Promise ( Analysis . TokenFilters . TokenFilterUsageTests . FluentExample ( s ) . Value . Analysis . TokenFilters ) )
116+ . Normalizers ( t => Promise ( Analysis . Normalizers . NormalizerUsageTests . FluentExample ( s ) . Value . Analysis . Normalizers ) )
117+ )
118+ ) ;
119+
120+ protected override object ExpectJson => new
121+ {
122+ properties = new
123+ {
124+ state = new
125+ {
126+ type = "keyword" ,
127+ split_queries_on_whitespace = true
128+ }
129+ }
130+ } ;
131+
132+ protected override Func < PropertiesDescriptor < Project > , IPromise < IProperties > > FluentProperties => f => f
133+ . Keyword ( b => b
134+ . Name ( p => p . State )
135+ . SplitQueriesOnWhitespace ( )
136+ ) ;
137+
138+
139+ protected override IProperties InitializerProperties => new Properties
140+ {
141+ { "state" , new KeywordProperty { SplitQueriesOnWhitespace = true } }
142+ } ;
143+ }
105144 }
106145}
0 commit comments