using Omika.Core.Contracts.Common; using Omika.Core.Contracts.Organisation; namespace Omika.Tests.Contracts; /// /// Tests des contrats Organisation (collaborateurs) et de leur neutralité totale /// vis-à-vis des tables physiques HFSQL. /// public class CollaborateurContractTests { [Fact] public void CollaborateurDetailsDto_IsFreeOfPhysicalNames() { var dto = new CollaborateurDetailsDto { Id = "COL-001", Nom = "Dupont", Prenom = "Jean" }; string[] forbidden = [ "CL_PKID", "PKID", "CL_Nom", "CL_Prenom" ]; foreach (string name in forbidden) { Assert.DoesNotContain(name, dto.GetType().Name); Assert.DoesNotContain(name, dto.Nom); } } [Fact] public void CollaborateurDetailsDto_CanCarryCoordonnees() { var dto = new CollaborateurDetailsDto { Id = "COL-001", Coordonnees = new ContactDetailsDto { Email = "jean@example.com", Phone = "0102030405" } }; Assert.Equal("jean@example.com", dto.Coordonnees.Email); Assert.Equal("0102030405", dto.Coordonnees.Phone); } [Fact] public void CollaborateurDetailsDto_CanCarryReferences() { var dto = new CollaborateurDetailsDto { Id = "COL-001", Civilite = new ReferenceValueDto { Key = "M", Label = "M." }, Statut = new ReferenceValueDto { Key = "ACTIF", Label = "Actif" } }; Assert.Equal("M.", dto.Civilite.Label); Assert.Equal("Actif", dto.Statut.Label); } [Fact] public void CollaborateurSummaryDto_IsFreeOfPhysicalNames() { var dto = new CollaborateurSummaryDto { Id = "COL-001", NomAffiche = "Jean Dupont" }; string[] forbidden = [ "CL_PKID", "PKID", "CL_Nom", "CL_Prenom" ]; foreach (string name in forbidden) { Assert.DoesNotContain(name, dto.GetType().Name); Assert.DoesNotContain(name, dto.NomAffiche); } } [Fact] public void CreateCollaborateurRequest_IsIdenticalForBothSchemas() { // Le même contrat sert pour l'ancien et le nouveau schéma. var request = new CreateCollaborateurRequest { Code = "JD", Nom = "Dupont", Prenom = "Jean" }; Assert.Equal("JD", request.Code); Assert.Equal("Dupont", request.Nom); } [Fact] public void UpdateCollaborateurRequest_IsIdenticalForBothSchemas() { var request = new UpdateCollaborateurRequest { Nom = "Martin", Actif = false }; Assert.Equal("Martin", request.Nom); Assert.False(request.Actif); } [Fact] public void SearchCollaborateurRequest_IsIdenticalForBothSchemas() { var request = new SearchCollaborateurRequest { Search = "Dupont", EquipeId = "equipe-1", Actif = true }; Assert.Equal("Dupont", request.Search); Assert.Equal("equipe-1", request.EquipeId); Assert.True(request.Actif); } }