35 lines
1.4 KiB
C#
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));
|
|
}
|
|
}
|