// Copyright (c) Microsoft. All rights reserved. using System; using Microsoft.Extensions.VectorData; using Microsoft.Extensions.VectorData.ProviderServices; using Microsoft.SemanticKernel.Connectors.CosmosNoSql; using Xunit; namespace SemanticKernel.Connectors.CosmosNoSql.UnitTests; /// /// Unit tests for class. /// public sealed class CosmosNoSqlCollectionQueryBuilderTests { private const string ScorePropertyName = "TestScore"; private readonly CollectionModel _model = new CosmosNoSqlModelBuilder().BuildDynamic( new() { Properties = [ new VectorStoreKeyProperty("Key", typeof(string)), new VectorStoreVectorProperty("TestProperty1", typeof(ReadOnlyMemory), 10) { StorageName = "test_property_1" }, new VectorStoreDataProperty("TestProperty2", typeof(string)) { StorageName = "test_property_2" }, new VectorStoreDataProperty("TestProperty3", typeof(string)) { StorageName = "test_property_3" } ] }, defaultEmbeddingGenerator: null); [Fact] public void BuildSearchQueryWithoutFilterDoesNotContainWhereClause() { // Arrange var vector = new ReadOnlyMemory([1f, 2f, 3f]); var vectorPropertyName = "test_property_1"; // Act var queryDefinition = CosmosNoSqlCollectionQueryBuilder.BuildSearchQuery( vector, keywords: null, this._model, vectorPropertyName, distanceFunction: null, textPropertyName: null, ScorePropertyName, filter: null, scoreThreshold: null, 10, 5, includeVectors: true); var queryText = queryDefinition.QueryText; var queryParameters = queryDefinition.GetQueryParameters(); // Assert Assert.DoesNotContain("WHERE", queryText); Assert.Contains("OFFSET 5 LIMIT 10", queryText); Assert.Equal("@vector", queryParameters[0].Name); Assert.Equal(vector, queryParameters[0].Value); } #pragma warning disable CA1812 // An internal class that is apparently never instantiated. If so, remove the code from the assembly. private sealed class DummyType; #pragma warning restore CA1812 }