Skip to content

Commit 69f0d69

Browse files
committed
CSHARP-5778: Update search index helper tests
- Ensure index definitions are valid per https://www.mongodb.com/docs/atlas/atlas-search/index-definitions/ - Use unique index name for each variation
1 parent 17c8263 commit 69f0d69

File tree

1 file changed

+38
-18
lines changed

1 file changed

+38
-18
lines changed

tests/MongoDB.Driver.Tests/Search/AtlasSearchIndexManagmentTests.cs

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)