Files
Omika/tests/Omika.Tests/Observability/DiagnosticFeatureCodesTests.cs
2026-10-23 18:46:50 +02:00

35 lines
1.4 KiB
C#

using Omika.Core.Observability;
namespace Omika.Tests.Observability;
/// <summary>
/// Instrumentation de chaque bouton (T18 étendu) : le FeatureCode est dérivé de façon
/// STABLE depuis le nom de la commande ([RelayCommand] → [CallerMemberName]) — suffixe
/// <c>Async</c> retiré, conversion en UPPER_SNAKE_CASE, codes canoniques (déjà avec '_')
/// préservés, entrées vides → ACTION. Ces transformations sont pures et déterministes.
/// </summary>
public class DiagnosticFeatureCodesTests
{
[Theory]
[InlineData("SaveAsync", "SAVE")]
[InlineData("Save", "SAVE")]
[InlineData("Delete", "DELETE")]
[InlineData("DeleteDocumentAsync", "DELETE_DOCUMENT")]
[InlineData("NavigateToIntervention", "NAVIGATE_TO_INTERVENTION")]
[InlineData("LoadPdf", "LOAD_PDF")]
[InlineData("EmailSend", "EMAIL_SEND")]
[InlineData("EMAIL_SEND", "EMAIL_SEND")]
[InlineData("ReportGenerate", "REPORT_GENERATE")]
[InlineData("INTERVENTION_SEARCH_RUN", "INTERVENTION_SEARCH_RUN")]
[InlineData("RotateRight", "ROTATE_RIGHT")]
[InlineData("ZoomIn", "ZOOM_IN")]
[InlineData("GoBackAsync", "GO_BACK")]
[InlineData("", "ACTION")]
[InlineData(" ", "ACTION")]
[InlineData(null, "ACTION")]
public void FromCommandName_NormalizesToStableFeatureCode(string? input, string expected)
{
Assert.Equal(expected, DiagnosticFeatureCodes.FromCommandName(input));
}
}