Files
Omika/tests/Omika.Tests/Contracts/ParametreMetierParametresParserTests.cs
T
2026-10-23 18:46:50 +02:00

71 lines
2.3 KiB
C#

using Omika.Core.Contracts.Configuration;
namespace Omika.Tests.Contracts;
/// <summary>
/// Tests du parseur de paramètres métier, centrés sur la conversion des
/// couleurs WinDev (<c>sCouleur</c>, entier <c>0xRRGGBB</c> sérialisé en
/// décimal) vers le format hexadécimal <c>#RRGGBB</c> utilisé par l'UI mobile.
/// </summary>
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);
}
}