// Tests for marketing intelligence engine using System; using AIBrain.Services.SeederApi; using Xunit; namespace AIBrain.Tests { public class TestMarketingIntelligence { [Fact] public void TestMarketingIntelligenceEngineInitialization() { var engine = new MarketingIntelligenceEngine(); Assert.NotNull(engine.Campaigns); Assert.NotNull(engine.Aggregates); Assert.NotNull(engine.Statistics); Assert.Empty(engine.Campaigns); } [Fact] public void TestAddCampaign() { var engine = new MarketingIntelligenceEngine(); var campaign = new MarketingCampaign { Id = "test-1", Name = "Test Campaign", Channel = "email", Budget = 1000m }; engine.AddCampaign(campaign); Assert.Single(engine.Campaigns); Assert.Equal("test-1", engine.Campaigns[0].Id); } [Fact] public void TestGetAggregateMetrics() { var engine = new MarketingIntelligenceEngine(); engine.AddCampaign(new MarketingCampaign { Id = "c1", Metrics = new CampaignMetrics { Impressions = 1000, Clicks = 50, Conversions = 5, Revenue = 500m } }); engine.AddCampaign(new MarketingCampaign { Id = "c2", Metrics = new CampaignMetrics { Impressions = 2000, Clicks = 100, Conversions = 10, Revenue = 1000m } }); var aggregate = engine.GetAggregateMetrics(); Assert.Equal(3000, aggregate.Impressions); Assert.Equal(150, aggregate.Clicks); Assert.Equal(15, aggregate.Conversions); Assert.Equal(1500m, aggregate.Revenue); } [Fact] public void TestCampaignMetrics() { var metrics = new CampaignMetrics { Impressions = 1000, Clicks = 100, Conversions = 10, Revenue = 500m, Roi = 2.5 }; Assert.Equal(1000, metrics.Impressions); Assert.Equal(100, metrics.Clicks); Assert.Equal(10, metrics.Conversions); Assert.Equal(500m, metrics.Revenue); Assert.Equal(2.5, metrics.Roi); } } }