74 lines
2.1 KiB
C#
74 lines
2.1 KiB
C#
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);
|
|
}
|
|
}
|