Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user