Using a custom helper in a escaped string, and escaping a string argument to that helper is not handled correctly by Handlebars.Net
StefH opened this issue · comments
Stef Heyenrath commented
Describe the bug
A clear and concise description of what the bug is.
Expected behavior:
A clear and concise description of what you expected to happen.
Working unit-test
[Fact]
public void SelectToken_WithComplexTemplate()
{
// Arrange
const string requestAsJson = """
{
"bodyAsJson": {
"pricingContext": {
"market": "US"
}
}
}
""";
var request = JsonConvert.DeserializeObject(requestAsJson);
// Use single quotes for the JsonPath else it will be parsed correctly by Handlebars.Net
var action = _handlebarsContext.Compile("{\r\n \"market\": \"{{JsonPath.SelectToken bodyAsJson '$.pricingContext.market'}}\",\r\n \"languages\": \"en\"\r\n}");
// Act
var result = action(request);
// Assert
var expected = """
{
"market": "US",
"languages": "en"
}
""";
result.Should().Be(expected);
}
Using escaped double quotes does not work:
"{\r\n \"market\": \"{{JsonPath.SelectToken bodyAsJson \\\"$.pricingContext.market'}}\\\",\r\n \"languages\": \"en\"\r\n}"
Exception:
System.NullReferenceException : Object reference not set to an instance of an object.
Linked to
WireMock-Net/WireMock.Net#1108