using Omika.Core.Contracts.Common; using Omika.Core.Contracts.Planning; namespace Omika.Tests.Contracts; /// /// Tests des contrats Planning (rendez-vous, participants, annulation) et de /// leur neutralité totale vis-à-vis des tables physiques HFSQL. /// public class RendezVousContractTests { [Fact] public void RendezVousDetailsDto_IsFreeOfPhysicalNames() { var dto = new RendezVousDetailsDto { Id = "RDV-001", Titre = "Visite technique", Debut = new DateTime(2026, 2, 1, 9, 0, 0), Fin = new DateTime(2026, 2, 1, 11, 0, 0) }; string[] forbidden = [ "Planning_RDV", "RDV_Planning", "PL_PKID", "RDP_GUID", "PKID" ]; foreach (string name in forbidden) { Assert.DoesNotContain(name, dto.GetType().Name); Assert.DoesNotContain(name, dto.Titre); } } [Fact] public void RendezVousDetailsDto_CanCarryCollaborateursAndContacts() { var dto = new RendezVousDetailsDto { Id = "RDV-001", Collaborateurs = [ new AffectationCollaborateurDto { CollaborateurId = "COL-1", Responsable = true }, new AffectationCollaborateurDto { CollaborateurId = "COL-2", TempsValide = true } ], Contacts = [new ParticipantRendezVousDto { ContactId = "CT-9", PresenceConfirmee = true }] }; Assert.Equal(2, dto.Collaborateurs.Count); Assert.True(dto.Collaborateurs[0].Responsable); Assert.Single(dto.Contacts); Assert.True(dto.Contacts[0].PresenceConfirmee); } [Fact] public void RendezVousDetailsDto_CanRepresentAnnulation() { var dto = new RendezVousDetailsDto { Id = "RDV-002", Annulation = new AnnulationRendezVousDto { DateAnnulation = new DateTime(2026, 2, 1, 8, 0, 0), Motif = new ReferenceValueDto { Label = "Client indisponible" }, Commentaire = "Reporter la visite" } }; Assert.NotNull(dto.Annulation); Assert.Equal("Client indisponible", dto.Annulation.Motif.Label); } [Fact] public void CreateRendezVousRequest_IsIdenticalForBothSchemas() { // Le même contrat sert pour l'ancien et le nouveau schéma. var request = new CreateRendezVousRequest { Titre = "RDV", Debut = new DateTime(2026, 3, 1, 9, 0, 0), Fin = new DateTime(2026, 3, 1, 10, 0, 0) }; Assert.Equal("RDV", request.Titre); Assert.Equal(new DateTime(2026, 3, 1, 10, 0, 0), request.Fin); } }