using Omika.Core.Contracts.Common; using Omika.Core.Contracts.Interventions; namespace Omika.Tests.Contracts; /// /// Tests des contrats Interventions (résumé, détail, création, modification, /// recherche) et de leur neutralité vis-à-vis du stockage. /// public class InterventionContractTests { [Fact] public void InterventionSummaryDto_ContainsOnlyListFields() { var summary = new InterventionSummaryDto { Id = "IN-001", Reference = "2026-0001", Titre = "Dépannage chaudière", Etat = "En cours", Type = "Maintenance", DatePrevueDebut = new DateTime(2026, 1, 15, 8, 0, 0) }; Assert.Equal("2026-0001", summary.Reference); Assert.Equal("Maintenance", summary.Type); } [Fact] public void InterventionDetailsDto_HoldsActionsCompteRendusAndReferences() { var details = new InterventionDetailsDto { Id = "IN-001", Etat = new ReferenceValueDto { Label = "En cours" }, CollaborateurIds = ["COL-1", "COL-2"], Actions = [new ActionInterventionDto { Description = "Commande pièce", Terminee = true }], ComptesRendus = [new CompteRenduDto { Contenu = "Chaudière relancée" }] }; Assert.Equal(2, details.CollaborateurIds.Count); Assert.Single(details.Actions); Assert.True(details.Actions[0].Terminee); Assert.Equal("Chaudière relancée", details.ComptesRendus[0].Contenu); } [Fact] public void CreateInterventionRequest_DoesNotAcceptPhysicalFields() { var request = new CreateInterventionRequest { Titre = "Intervention", Reference = "2026-0002" }; foreach (var property in typeof(CreateInterventionRequest).GetProperties()) { Assert.DoesNotContain("Pkid", property.Name, StringComparison.OrdinalIgnoreCase); Assert.DoesNotContain("HfSql", property.Name, StringComparison.OrdinalIgnoreCase); } } [Fact] public void UpdateInterventionRequest_AcceptsEtatAndDates() { var request = new UpdateInterventionRequest { Titre = "Renommage", Etat = new ReferenceValueDto { Label = "Terminé" }, DateReelleFin = new DateTime(2026, 1, 16, 12, 0, 0) }; Assert.Equal("Terminé", request.Etat.Label); Assert.NotNull(request.DateReelleFin); } [Fact] public void SearchInterventionsRequest_HasNoPhysicalPrefix() { var request = new SearchInterventionsRequest { Titre = "chaudière", CollaborateurId = "COL-1" }; Assert.Equal("chaudière", request.Titre); Assert.Equal("COL-1", request.CollaborateurId); } }