Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,15 @@ public class AtlasSearchIndexManagementTests : LoggableTestClass
private readonly IMongoCollection<BsonDocument> _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)
{
Expand Down Expand Up @@ -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 })
Expand All @@ -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)]
Expand Down Expand Up @@ -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)]
Expand Down Expand Up @@ -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";
}


Copy link

Copilot AI Nov 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is an extra blank line between the two conditional blocks. Remove one blank line to maintain consistent spacing throughout the method.

Suggested change

Copilot uses AI. Check for mistakes.
if (includeFields)
{
baseName += "-fields";
}

return baseName;
}

private async Task<BsonDocument> CreateIndexAndValidate(string indexName, BsonDocument indexDefinition, bool async)
{
var indexNameActual = async
Expand Down
Loading