// Tests for seeder API using System; using AIBrain.Services.SeederApi; using Xunit; namespace AIBrain.Tests { public class TestSeederApi { [Fact] public void TestHealthCheck() { var result = SeederApp.HealthCheck(); Assert.NotNull(result); Assert.Equal("healthy", result["status"]); Assert.True(result.ContainsKey("timestamp")); Assert.True(result.ContainsKey("uptime_seconds")); } [Fact] public void TestReadinessCheck() { // Set dry run for testing Environment.SetEnvironmentVariable("DRY_RUN", "1"); var result = SeederApp.ReadinessCheck(); Assert.NotNull(result); Assert.True((bool)result["ready"]); Assert.True((bool)result["dry_run"]); // Clean up Environment.SetEnvironmentVariable("DRY_RUN", null); } [Fact] public void TestMarketingProcesses() { var query = new MarketingQuery { Prompt = "Test marketing campaign", Limit = 5 }; var result = SeederApp.MarketingProcesses(query); Assert.NotNull(result); Assert.Equal(query.Prompt, result.Query); Assert.NotNull(result.Rag); Assert.Equal("completed", result.Rag.Status); Assert.NotNull(result.Campaigns); Assert.NotNull(result.Metrics); } [Fact] public void TestMarketingQueryDefaults() { var query = new MarketingQuery { Prompt = "Test" }; Assert.Equal(10, query.Limit); } [Fact] public void TestProcessRun() { var run = new ProcessRun { Status = "completed", Timestamp = DateTime.UtcNow, Results = new System.Collections.Generic.Dictionary { ["key"] = "value" } }; Assert.Equal("completed", run.Status); Assert.NotNull(run.Results); Assert.Equal("value", run.Results["key"]); } } }