using FluentAssertions; using InboxIntel.Infrastructure.Ai; using Xunit; namespace InboxIntel.UnitTests; /// /// The Null embedding provider is the AI-off / no-model path. Semantic features must be able /// to detect unavailability (IsAvailable=false) and fall back to lexical search — this locks /// that contract so "AI is never required" can't silently regress. /// public class EmbeddingProviderTests { [Fact] public async Task Null_provider_reports_unavailable_and_returns_empty_vectors() { var sut = new NullEmbeddingProvider(); sut.IsAvailable.Should().BeFalse(); (await sut.EmbedAsync("anything")).Should().BeEmpty(); (await sut.EmbedBatchAsync(new[] { "a", "b" })).Should().BeEmpty(); } }