88 lines
2.7 KiB
C#
88 lines
2.7 KiB
C#
using Omika.Core.Contracts.Common;
|
|
using Omika.Core.Contracts.Planning;
|
|
|
|
namespace Omika.Tests.Contracts;
|
|
|
|
/// <summary>
|
|
/// Tests des contrats Planning (rendez-vous, participants, annulation) et de
|
|
/// leur neutralité totale vis-à-vis des tables physiques HFSQL.
|
|
/// </summary>
|
|
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);
|
|
}
|
|
}
|