using Omika.Core.Contracts.Configuration; namespace Omika.Tests.Contracts; /// /// Tests du parseur de paramètres métier, centrés sur la conversion des /// couleurs WinDev (sCouleur, entier 0xRRGGBB sérialisé en /// décimal) vers le format hexadécimal #RRGGBB utilisé par l'UI mobile. /// public class ParametreMetierParametresParserTests { [Theory] [InlineData("5288012", "#50B04C")] // « Fait » (vert) [InlineData("15112707", "#E69A03")] // « Confirmé » (orange) [InlineData("1393623", "#1543D7")] // « Intervention » (bleu) [InlineData("0", "#000000")] [InlineData("16777215", "#FFFFFF")] public void ToHexColor_ConvertitEntierRgbEnHex(string winDevColor, string expected) { Assert.Equal(expected, ParametreMetierParametresParser.ToHexColor(winDevColor)); } [Theory] [InlineData(null)] [InlineData("")] [InlineData(" ")] [InlineData("abc")] [InlineData("-1")] [InlineData("-5288012")] public void ToHexColor_ValeurInvalideOuSysteme_RetourneNull(string? winDevColor) { Assert.Null(ParametreMetierParametresParser.ToHexColor(winDevColor)); } [Fact] public void ToHexColor_AccepteUnNombreJsonSansDecimale() { // Le JSON WinDev peut sérialiser l'entier en nombre (sans guillemets). Assert.Equal("#50B04C", ParametreMetierParametresParser.ToHexColor("5288012")); } [Fact] public void ParseStatutRdv_ExtraitLaCouleur() { StatutRdvParametresDto? statut = ParametreMetierParametresParser.ParseStatutRdv("{\"sCouleur\":\"15112707\"}"); Assert.NotNull(statut); Assert.Equal("15112707", statut.Couleur); } [Fact] public void ParseStatutRdv_JsonVide_RetourneNull() { Assert.Null(ParametreMetierParametresParser.ParseStatutRdv("")); Assert.Null(ParametreMetierParametresParser.ParseStatutRdv(null)); Assert.Null(ParametreMetierParametresParser.ParseStatutRdv("not-json")); } [Fact] public void ParseTypeRdv_ExtraitLaCouleur() { TypeRdvParametresDto? type = ParametreMetierParametresParser.ParseTypeRdv("{\"sCouleur\":\"1393623\",\"Envoi_mobile\":true}"); Assert.NotNull(type); Assert.Equal("1393623", type.Couleur); Assert.True(type.EnvoiMobile); } }