Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
using Omika.Core.Services;
|
||||
using Xunit;
|
||||
|
||||
namespace Omika.Tests.Domain;
|
||||
|
||||
public class RubriqueSubstitutionEngineTests
|
||||
{
|
||||
[Fact]
|
||||
public void Substitute_ReplacesTokensCaseInsensitively()
|
||||
{
|
||||
var values = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
["NomClient"] = "ACME",
|
||||
["DateIntervention"] = "2026-08-06"
|
||||
};
|
||||
|
||||
string result = RubriqueSubstitutionEngine.Substitute(
|
||||
"Bonjour $NOMCLIENT$, intervention du $DateIntervention$.",
|
||||
values);
|
||||
|
||||
Assert.Equal("Bonjour ACME, intervention du 2026-08-06.", result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Substitute_LeavesUnknownTokensUntouched()
|
||||
{
|
||||
var values = new Dictionary<string, string> { ["NomClient"] = "ACME" };
|
||||
|
||||
string result = RubriqueSubstitutionEngine.Substitute(
|
||||
"Bonjour $NomClient$ — $Inconnu$",
|
||||
values);
|
||||
|
||||
Assert.Equal("Bonjour ACME — $Inconnu$", result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Substitute_NullOrEmptyTemplate_ReturnsEmpty()
|
||||
{
|
||||
Assert.Equal(string.Empty, RubriqueSubstitutionEngine.Substitute(null, new Dictionary<string, string>()));
|
||||
Assert.Equal(string.Empty, RubriqueSubstitutionEngine.Substitute(string.Empty, new Dictionary<string, string>()));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Substitute_UnclosedTokenIsLeftUntouched()
|
||||
{
|
||||
string result = RubriqueSubstitutionEngine.Substitute(
|
||||
"Bonjour $NomClient",
|
||||
new Dictionary<string, string> { ["NomClient"] = "ACME" });
|
||||
|
||||
Assert.Equal("Bonjour $NomClient", result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ExtractTokens_ReturnsOrderedUniqueTokens()
|
||||
{
|
||||
IReadOnlyList<string> tokens = RubriqueSubstitutionEngine.ExtractTokens(
|
||||
"$A$ puis $B$ et encore $a$");
|
||||
|
||||
Assert.Equal(["A", "B"], tokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void FindUnknownTokens_ReturnsTokensMissingFromValues()
|
||||
{
|
||||
var values = new Dictionary<string, string> { ["A"] = "1" };
|
||||
|
||||
IReadOnlyList<string> unknown = RubriqueSubstitutionEngine.FindUnknownTokens(
|
||||
"$A$ $B$ $A$",
|
||||
values);
|
||||
|
||||
Assert.Equal(["B"], unknown);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user