@@ -36,9 +36,15 @@ public class AtlasSearchIndexManagementTests : LoggableTestClass
3636 private readonly IMongoCollection < BsonDocument > _collection ;
3737 private readonly IMongoDatabase _database ;
3838 private readonly IMongoClient _mongoClient ;
39- private readonly BsonDocument _indexDefinition = BsonDocument . Parse ( "{ mappings: { dynamic: false } }" ) ;
40- private readonly BsonDocument _indexDefinitionWithFields = BsonDocument . Parse ( "{ mappings: { dynamic: false, fields: { } } }" ) ;
41- private readonly BsonDocument _vectorIndexDefinition = BsonDocument . Parse ( "{ fields: [ { type: 'vector', path: 'plot_embedding', numDimensions: 1536, similarity: 'euclidean' } ] }" ) ;
39+
40+ private readonly BsonDocument _indexDefinition
41+ = BsonDocument . Parse ( "{ mappings: { dynamic: true, fields: { } } }" ) ;
42+
43+ private readonly BsonDocument _indexDefinitionWithFields
44+ = BsonDocument . Parse ( "{ mappings: { dynamic: false, fields: { 'name': { type: 'string', indexOptions: 'offsets', store : true, norms : 'include' } } } }" ) ;
45+
46+ private readonly BsonDocument _vectorIndexDefinition
47+ = BsonDocument . Parse ( "{ fields: [ { type: 'vector', path: 'plot_embedding', numDimensions: 1536, similarity: 'euclidean' } ] }" ) ;
4248
4349 public AtlasSearchIndexManagementTests ( ITestOutputHelper testOutputHelper ) : base ( testOutputHelper )
4450 {
@@ -72,13 +78,15 @@ public async Task Case2_driver_should_successfully_create_multiple_indexes_in_ba
7278 [ Values ( false , true ) ] bool async ,
7379 [ Values ( false , true ) ] bool includeFields )
7480 {
81+ var indexDefinitionBson = includeFields ? _indexDefinitionWithFields : _indexDefinition ;
82+
7583 var indexDefinition1 = new CreateSearchIndexModel (
76- async ? "test-search-index-1-async" : "test-search-index-1" ,
77- includeFields ? _indexDefinitionWithFields : _indexDefinition ) ;
84+ CreateIndexName ( "test-search-index-1" , async , includeFields ) ,
85+ indexDefinitionBson ) ;
7886
7987 var indexDefinition2 = new CreateSearchIndexModel (
80- async ? "test-search-index-2-async" : "test-search-index-2" ,
81- includeFields ? _indexDefinitionWithFields : _indexDefinition ) ;
88+ CreateIndexName ( "test-search-index-2" , async , includeFields ) ,
89+ indexDefinitionBson ) ;
8290
8391 var indexNamesActual = async
8492 ? await _collection . SearchIndexes . CreateManyAsync ( new [ ] { indexDefinition1 , indexDefinition2 } )
@@ -88,8 +96,8 @@ public async Task Case2_driver_should_successfully_create_multiple_indexes_in_ba
8896
8997 var indexes = await GetIndexes ( async , indexDefinition1 . Name , indexDefinition2 . Name ) ;
9098
91- indexes [ 0 ] [ "latestDefinition "] . AsBsonDocument . Should ( ) . Be ( _indexDefinitionWithFields ) ;
92- indexes [ 1 ] [ "latestDefinition" ] . AsBsonDocument . Should ( ) . Be ( _indexDefinitionWithFields ) ;
99+ indexes [ 0 ] [ "latestDefinition "] . AsBsonDocument . Should ( ) . Be ( indexDefinitionBson ) ;
100+ indexes [ 1 ] [ "latestDefinition" ] . AsBsonDocument . Should ( ) . Be ( indexDefinitionBson ) ;
93101 }
94102
95103 [ Theory ( Timeout = Timeout ) ]
@@ -176,25 +184,21 @@ public async Task Case6_driver_can_create_and_list_search_indexes_with_non_defau
176184 [ Values ( false , true ) ] bool async,
177185 [ Values ( false , true ) ] bool includeFields)
178186 {
179- var indexName = async ? "test-search-index-case6-async" : "test-search-index-case6" ;
187+ var indexName = CreateIndexName( "test-search-index-case6" , async , includeFields ) ;
188+ var indexDefinitionBson = includeFields ? _indexDefinitionWithFields : _indexDefinition ;
180189
181190 var collection = _collection
182191 . WithReadConcern ( ReadConcern . Majority )
183192 . WithWriteConcern ( WriteConcern . WMajority ) ;
184193
185194 var indexNameCreated = async
186- ? await collection . SearchIndexes . CreateOneAsync ( includeFields
187- ? _indexDefinitionWithFields
188- : _indexDefinition , indexName )
189- : collection . SearchIndexes . CreateOne (
190- includeFields
191- ? _indexDefinitionWithFields
192- : _indexDefinition , indexName ) ;
195+ ? await collection. SearchIndexes. CreateOneAsync( indexDefinitionBson , indexName )
196+ : collection . SearchIndexes . CreateOne ( indexDefinitionBson , indexName ) ;
193197
194198 indexNameCreated . Should ( ) . Be ( indexName ) ;
195199
196200 var indexes = await GetIndexes( async, indexName ) ;
197- indexes[ 0 ] [ "latestDefinition" ] . AsBsonDocument . Should ( ) . Be ( _indexDefinitionWithFields ) ;
201+ indexes[ 0 ] [ "latestDefinition" ] . AsBsonDocument . Should ( ) . Be ( indexDefinitionBson ) ;
198202 }
199203
200204 [ Theory ( Timeout = Timeout ) ]
@@ -422,6 +426,22 @@ private class EntityWithVector
422426 public int Filter3 { get ; set ; }
423427 }
424428
429+ private static string CreateIndexName( string baseName, bool async, bool includeFields)
430+ {
431+ if ( async)
432+ {
433+ baseName += "- async";
434+ }
435+
436+
437+ if ( includeFields)
438+ {
439+ baseName += "- fields";
440+ }
441+
442+ return baseName;
443+ }
444+
425445 private async Task< BsonDocument> CreateIndexAndValidate( string indexName, BsonDocument indexDefinition, bool async)
426446 {
427447 var indexNameActual = async
0 commit comments