diff --git a/tests/MongoDB.Driver.Tests/Search/AtlasSearchIndexManagmentTests.cs b/tests/MongoDB.Driver.Tests/Search/AtlasSearchIndexManagmentTests.cs index c11bc735c55..7ad5fc2befc 100644 --- a/tests/MongoDB.Driver.Tests/Search/AtlasSearchIndexManagmentTests.cs +++ b/tests/MongoDB.Driver.Tests/Search/AtlasSearchIndexManagmentTests.cs @@ -36,9 +36,15 @@ public class AtlasSearchIndexManagementTests : LoggableTestClass private readonly IMongoCollection _collection; private readonly IMongoDatabase _database; private readonly IMongoClient _mongoClient; - private readonly BsonDocument _indexDefinition = BsonDocument.Parse("{ mappings: { dynamic: false } }"); - private readonly BsonDocument _indexDefinitionWithFields = BsonDocument.Parse("{ mappings: { dynamic: false, fields: { } } }"); - private readonly BsonDocument _vectorIndexDefinition = BsonDocument.Parse("{ fields: [ { type: 'vector', path: 'plot_embedding', numDimensions: 1536, similarity: 'euclidean' } ] }"); + + private readonly BsonDocument _indexDefinition + = BsonDocument.Parse("{ mappings: { dynamic: true, fields: { } } }"); + + private readonly BsonDocument _indexDefinitionWithFields + = BsonDocument.Parse("{ mappings: { dynamic: false, fields: { 'name': { type: 'string', indexOptions: 'offsets', store : true, norms : 'include' } } } }"); + + private readonly BsonDocument _vectorIndexDefinition + = BsonDocument.Parse("{ fields: [ { type: 'vector', path: 'plot_embedding', numDimensions: 1536, similarity: 'euclidean' } ] }"); public AtlasSearchIndexManagementTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { @@ -72,13 +78,15 @@ public async Task Case2_driver_should_successfully_create_multiple_indexes_in_ba [Values(false, true)] bool async, [Values(false, true)] bool includeFields) { + var indexDefinitionBson = includeFields ? _indexDefinitionWithFields : _indexDefinition; + var indexDefinition1 = new CreateSearchIndexModel( - async ? "test-search-index-1-async" : "test-search-index-1", - includeFields ? _indexDefinitionWithFields : _indexDefinition); + CreateIndexName("test-search-index-1", async, includeFields), + indexDefinitionBson); var indexDefinition2 = new CreateSearchIndexModel( - async ? "test-search-index-2-async" : "test-search-index-2", - includeFields ? _indexDefinitionWithFields : _indexDefinition); + CreateIndexName("test-search-index-2", async, includeFields), + indexDefinitionBson); var indexNamesActual = async ? await _collection.SearchIndexes.CreateManyAsync(new[] { indexDefinition1, indexDefinition2 }) @@ -88,8 +96,8 @@ public async Task Case2_driver_should_successfully_create_multiple_indexes_in_ba var indexes = await GetIndexes(async, indexDefinition1.Name, indexDefinition2.Name); - indexes[0]["latestDefinition"].AsBsonDocument.Should().Be(_indexDefinitionWithFields); - indexes[1]["latestDefinition"].AsBsonDocument.Should().Be(_indexDefinitionWithFields); + indexes[0]["latestDefinition"].AsBsonDocument.Should().Be(indexDefinitionBson); + indexes[1]["latestDefinition"].AsBsonDocument.Should().Be(indexDefinitionBson); } [Theory(Timeout = Timeout)] @@ -176,25 +184,21 @@ public async Task Case6_driver_can_create_and_list_search_indexes_with_non_defau [Values(false, true)] bool async, [Values(false, true)] bool includeFields) { - var indexName = async ? "test-search-index-case6-async" : "test-search-index-case6"; + var indexName = CreateIndexName("test-search-index-case6", async, includeFields); + var indexDefinitionBson = includeFields ? _indexDefinitionWithFields : _indexDefinition; var collection = _collection .WithReadConcern(ReadConcern.Majority) .WithWriteConcern(WriteConcern.WMajority); var indexNameCreated = async - ? await collection.SearchIndexes.CreateOneAsync(includeFields - ? _indexDefinitionWithFields - : _indexDefinition, indexName) - : collection.SearchIndexes.CreateOne( - includeFields - ? _indexDefinitionWithFields - : _indexDefinition, indexName); + ? await collection.SearchIndexes.CreateOneAsync(indexDefinitionBson, indexName) + : collection.SearchIndexes.CreateOne(indexDefinitionBson, indexName); indexNameCreated.Should().Be(indexName); var indexes = await GetIndexes(async, indexName); - indexes[0]["latestDefinition"].AsBsonDocument.Should().Be(_indexDefinitionWithFields); + indexes[0]["latestDefinition"].AsBsonDocument.Should().Be(indexDefinitionBson); } [Theory(Timeout = Timeout)] @@ -422,6 +426,22 @@ private class EntityWithVector public int Filter3 { get; set; } } + private static string CreateIndexName(string baseName, bool async, bool includeFields) + { + if (async) + { + baseName += "-async"; + } + + + if (includeFields) + { + baseName += "-fields"; + } + + return baseName; + } + private async Task CreateIndexAndValidate(string indexName, BsonDocument indexDefinition, bool async) { var indexNameActual = async