Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
using Omika.Core.Services;
|
||||
|
||||
namespace Omika.Tests.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Tests de la règle métier unique de composition de la mention d'annulation :
|
||||
/// le mot « Note », le nom du collaborateur entre parenthèses, puis son message
|
||||
/// (<c>Note (DUPONT Jean) : Client absent</c>). Cette règle est partagée par le
|
||||
/// serveur (repositories Batik/Omika) et l'application mobile (copie locale
|
||||
/// offline-first), qui doivent écrire exactement le même texte.
|
||||
/// </summary>
|
||||
public class AnnulationRendezVousDescriptionTests
|
||||
{
|
||||
[Fact]
|
||||
public void ComposerNote_MessageEtNom_InscritNoteNomPuisMessage()
|
||||
{
|
||||
string? note = AnnulationRendezVousDescription.ComposerNote("Client absent", "Jean DUPONT");
|
||||
|
||||
Assert.Equal("Note (Jean DUPONT) : Client absent", note);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ComposerNote_NomInconnu_InscritNoteEtMessageSansParentheses()
|
||||
{
|
||||
// Aucun nom connu : aucune parenthèse vide ne doit apparaître.
|
||||
Assert.Equal("Note : Client absent", AnnulationRendezVousDescription.ComposerNote("Client absent", null));
|
||||
Assert.Equal("Note : Client absent", AnnulationRendezVousDescription.ComposerNote("Client absent", " "));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ComposerNote_SansMessage_NeComposeRien()
|
||||
{
|
||||
// Sans message du collaborateur, RIEN n'est inscrit dans la description :
|
||||
// la mention trace une note, pas l'annulation elle-même (le statut, le
|
||||
// motif et l'origine portent déjà l'information). Le nom seul n'est jamais
|
||||
// inscrit.
|
||||
Assert.Null(AnnulationRendezVousDescription.ComposerNote(null, "Jean DUPONT"));
|
||||
Assert.Null(AnnulationRendezVousDescription.ComposerNote(" ", "Jean DUPONT"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ComposerNote_AucuneInformation_RetourneNull()
|
||||
{
|
||||
Assert.Null(AnnulationRendezVousDescription.ComposerNote(null, null));
|
||||
Assert.Null(AnnulationRendezVousDescription.ComposerNote(" ", " "));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ComposerNote_NettoieLesEspaces()
|
||||
{
|
||||
Assert.Equal(
|
||||
"Note (Jean DUPONT) : Client absent",
|
||||
AnnulationRendezVousDescription.ComposerNote(" Client absent ", " Jean DUPONT "));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Concatener_DescriptionExistante_AjouteLaMentionSurUneNouvelleLigne()
|
||||
{
|
||||
string? resultat = AnnulationRendezVousDescription.Concatener(
|
||||
"Description initiale", "Client absent", "Jean DUPONT");
|
||||
|
||||
Assert.Equal(
|
||||
"Description initiale" + Environment.NewLine + "Note (Jean DUPONT) : Client absent",
|
||||
resultat);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Concatener_DescriptionVide_RetourneLaMentionSeule()
|
||||
{
|
||||
Assert.Equal(
|
||||
"Note (Jean DUPONT) : Client absent",
|
||||
AnnulationRendezVousDescription.Concatener(null, "Client absent", "Jean DUPONT"));
|
||||
Assert.Equal(
|
||||
"Note (Jean DUPONT) : Client absent",
|
||||
AnnulationRendezVousDescription.Concatener(" ", "Client absent", "Jean DUPONT"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Concatener_AucuneNote_LaisseLaDescriptionInchangee()
|
||||
{
|
||||
Assert.Equal(
|
||||
"Description initiale",
|
||||
AnnulationRendezVousDescription.Concatener("Description initiale", null, null));
|
||||
|
||||
// Un nom sans message ne modifie jamais la description.
|
||||
Assert.Equal(
|
||||
"Description initiale",
|
||||
AnnulationRendezVousDescription.Concatener("Description initiale", null, "Jean DUPONT"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Concatener_MentionDejaPresente_EstIdempotent()
|
||||
{
|
||||
// Rejeu d'une opération de synchronisation dont la réponse a été perdue :
|
||||
// la mention ne doit jamais être ajoutée deux fois.
|
||||
string description = "Description initiale" + Environment.NewLine
|
||||
+ "Note (Jean DUPONT) : Client absent";
|
||||
|
||||
string? resultat = AnnulationRendezVousDescription.Concatener(description, "Client absent", "Jean DUPONT");
|
||||
|
||||
Assert.Equal(description, resultat);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user