using FluentAssertions; using PiiRedaction.Core.Models; using PiiRedaction.Core.Tests.TestSupport; namespace PiiRedaction.Core.Tests.Integration; [TestFixture] public sealed class GoldenPromptTests { [TestCaseSource(typeof(PromptScenarioCatalog), nameof(PromptScenarioCatalog.AllScenarios))] [TestCaseSource(typeof(TamilPromptScenarioCatalog), nameof(TamilPromptScenarioCatalog.AllScenarios))] public void Sanitize_PromptScenario_ProducesExpectedOutput(PromptScenario scenario) { var sanitizer = ProductionPipelineFactory.CreateForScenario(scenario); var result = sanitizer.Sanitize(new SanitizationRequest(scenario.Prompt)); result.SanitizedPrompt.Should().Be(scenario.ExpectedSanitized, because: scenario.Name); result.DetectedEntities.Select(entity => entity.Type) .Should().BeEquivalentTo(scenario.ExpectedTypes, because: scenario.Name); foreach (var forbidden in scenario.MustNotContainInSanitized) { result.SanitizedPrompt.Should().NotContain(forbidden, because: scenario.Name); } } }