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