using AxCopilot.Services.Agent; using FluentAssertions; using Xunit; namespace AxCopilot.Tests.Services; public class ArtifactRepairGuideServiceTests { [Fact] public void BuildGuide_ForWorkbookIssues_ShouldReturnWorkbookActions() { var review = new ArtifactQualityReport( "xlsx", 68, ["Includes summary sheet"], [ new ArtifactReviewIssue("Dashboard sheet lacks KPI, trend, or decision content.", ArtifactReviewSeverity.Info), new ArtifactReviewIssue("Dashboard sheet lacks trend or variance framing for the supporting sheets.", ArtifactReviewSeverity.Info), new ArtifactReviewIssue("Dashboard workbook should summarize each supporting detail sheet.", ArtifactReviewSeverity.Info) ]); var guide = ArtifactRepairGuideService.BuildGuide(review); guide.Should().Contain("dashboard"); guide.Should().Contain("core story"); guide.Should().Contain("trend"); guide.Should().Contain("sheet summaries"); } [Fact] public void BuildGuide_ForHtmlIssues_ShouldReturnHtmlActions() { var review = new ArtifactQualityReport( "html", 70, ["Includes print-ready CSS"], [ new ArtifactReviewIssue("Board-ready report should include a decision summary block.", ArtifactReviewSeverity.Warning), new ArtifactReviewIssue("Board-ready report would be stronger with a KPI panel or metric strip.", ArtifactReviewSeverity.Info), new ArtifactReviewIssue("Strategy brief should include explicit decisions or a decision summary block.", ArtifactReviewSeverity.Warning), new ArtifactReviewIssue("Board-ready report would benefit from a comparison or decision matrix block.", ArtifactReviewSeverity.Info) ]); var guide = ArtifactRepairGuideService.BuildGuide(review); guide.Should().Contain("decision summary"); guide.Should().Contain("KPI"); guide.Should().Contain("strategy brief"); guide.Should().Contain("decision matrix"); } [Fact] public void BuildGuide_ForDocumentIssues_ShouldReturnTemplateAndNavigationActions() { var review = new ArtifactQualityReport( "docx", 66, ["Includes cover page"], [ new ArtifactReviewIssue("Supporting evidence table is limited for a business document.", ArtifactReviewSeverity.Info), new ArtifactReviewIssue("Key messages would benefit from callout or highlight blocks.", ArtifactReviewSeverity.Info), new ArtifactReviewIssue("Header or footer metadata is limited for a business document.", ArtifactReviewSeverity.Info) ]); var guide = ArtifactRepairGuideService.BuildGuide(review); guide.Should().Contain("evidence table"); guide.Should().Contain("callout"); guide.Should().Contain("header and footer"); } }