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

86 lines
2.7 KiB
C#

using Omika.Core.Contracts.Clients;
using Omika.Core.Contracts.Common;
namespace Omika.Tests.Contracts;
/// <summary>
/// Tests des contrats Clients : séparation liste / détail / création /
/// modification et absence de champs physiques.
/// </summary>
public class ClientContractTests
{
[Fact]
public void ClientSummaryDto_ContainsOnlyListFields()
{
var summary = new ClientSummaryDto
{
Id = "CL-001",
Code = "C001",
Nom = "Ville de Lyon",
Type = "Collectivité",
Statut = "Actif",
Ville = "Lyon",
Telephone = "04 00 00 00 00",
EstBloque = false,
EstArchive = false
};
Assert.Equal("CL-001", summary.Id);
Assert.Equal("Ville de Lyon", summary.Nom);
Assert.False(summary.EstArchive);
}
[Fact]
public void ClientDetailsDto_CanHoldCollections()
{
var details = new ClientDetailsDto
{
Id = "CL-001",
Nom = "Ville de Lyon",
Adresses = [new AdresseDto { Id = "AD-1", Etiquette = "Mairie" }],
Contacts = [new ContactDto { Id = "CT-1", Nom = "Dupont", Prenom = "Jean" }],
Sites = [new SiteDto { Id = "ST-1", Nom = "Hôtel de ville" }]
};
Assert.Single(details.Adresses);
Assert.Single(details.Contacts);
Assert.Single(details.Sites);
Assert.Equal("Hôtel de ville", details.Sites[0].Nom);
}
[Fact]
public void CreateClientRequest_DoesNotAcceptPhysicalIdOrAuditFields()
{
var request = new CreateClientRequest { Nom = "Client test" };
Assert.Null(request.AdressePrincipale);
Assert.Null(request.Coordonnees);
// Aucune propriété d'audit ou identifiant physique ne doit être acceptée.
foreach (var property in typeof(CreateClientRequest).GetProperties())
{
Assert.DoesNotContain("Pkid", property.Name, StringComparison.OrdinalIgnoreCase);
Assert.DoesNotContain("DateCreation", property.Name, StringComparison.OrdinalIgnoreCase);
Assert.DoesNotContain("ModifiePar", property.Name, StringComparison.OrdinalIgnoreCase);
}
}
[Fact]
public void UpdateClientRequest_AllowsOptionalBloquage()
{
var request = new UpdateClientRequest { Nom = "Renommé", EstBloque = true };
Assert.True(request.EstBloque);
Assert.Equal("Renommé", request.Nom);
}
[Fact]
public void SearchClientsRequest_HasNoPhysicalPrefix()
{
var request = new SearchClientsRequest { Nom = "Lyon", Statut = "Actif" };
Assert.Equal("Lyon", request.Nom);
Assert.Equal("Actif", request.Statut);
}
}