From c5b1a9372a6fd0ba720e248e8ef902f9b52d43a2 Mon Sep 17 00:00:00 2001 From: Chris Chen Date: Thu, 25 Jun 2026 13:34:20 -0700 Subject: [PATCH] test(ai): cover config-provider default fallback when no profile row --- .../Services/ChurchAiConfigProviderTests.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 API/ROLAC.API.Tests/Services/ChurchAiConfigProviderTests.cs diff --git a/API/ROLAC.API.Tests/Services/ChurchAiConfigProviderTests.cs b/API/ROLAC.API.Tests/Services/ChurchAiConfigProviderTests.cs new file mode 100644 index 0000000..d1c7e0f --- /dev/null +++ b/API/ROLAC.API.Tests/Services/ChurchAiConfigProviderTests.cs @@ -0,0 +1,27 @@ +using Microsoft.EntityFrameworkCore; +using ROLAC.API.Data; +using ROLAC.API.Services.Ai; +using Xunit; + +namespace ROLAC.API.Tests.Services; + +public class ChurchAiConfigProviderTests +{ + private static AppDbContext NewDb() => + new AppDbContext(new DbContextOptionsBuilder() + .UseInMemoryDatabase(Guid.NewGuid().ToString()).Options); + + [Fact] + public async Task GetAsync_returns_defaults_when_no_profile_row() + { + using var db = NewDb(); // empty DB, no ChurchProfile + + var cfg = await new ChurchAiConfigProvider(db).GetAsync(); + + Assert.Equal("Claude", cfg.Provider); + Assert.Equal("claude-haiku-4-5-20251001", cfg.ClaudeModel); + Assert.Equal("gemini-2.5-flash-lite", cfg.GeminiModel); + Assert.Null(cfg.ClaudeApiKey); + Assert.Null(cfg.GeminiApiKey); + } +}