mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-03-26 03:11:56 +01:00
Add HandleBars Random functionality (#219)
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
HandleBarsJsonPath.Register();
|
||||
|
||||
HandleBarsLinq.Register();
|
||||
|
||||
HandleBarsRandom.Register();
|
||||
}
|
||||
}
|
||||
}
|
||||
44
src/WireMock.Net/Transformers/HandleBarsRandom.cs
Normal file
44
src/WireMock.Net/Transformers/HandleBarsRandom.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
using System.Collections.Generic;
|
||||
using HandlebarsDotNet;
|
||||
using RandomDataGenerator.FieldOptions;
|
||||
using RandomDataGenerator.Randomizers;
|
||||
using WireMock.Validation;
|
||||
|
||||
namespace WireMock.Transformers
|
||||
{
|
||||
internal static class HandleBarsRandom
|
||||
{
|
||||
public static void Register()
|
||||
{
|
||||
Handlebars.RegisterHelper("Random", (writer, context, arguments) =>
|
||||
{
|
||||
var fieldOptions = GetFieldOptionsFromArguments(arguments);
|
||||
|
||||
dynamic randomizer = RandomizerFactory.GetRandomizerAsDynamic(fieldOptions);
|
||||
if (randomizer.GetType().GetMethod("GenerateAsString") != null)
|
||||
{
|
||||
string valueAsString = randomizer.GenerateAsString();
|
||||
writer.WriteSafeString(valueAsString);
|
||||
}
|
||||
else
|
||||
{
|
||||
object valueAsObject = randomizer.Generate();
|
||||
writer.WriteSafeString(valueAsObject);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static FieldOptionsAbstract GetFieldOptionsFromArguments(object[] arguments)
|
||||
{
|
||||
Check.Condition(arguments, args => args.Length > 0, nameof(arguments));
|
||||
Check.NotNull(arguments[0], "arguments[0]");
|
||||
|
||||
var properties = (Dictionary<string, object>)arguments[0];
|
||||
string type = (string)properties["Type"];
|
||||
|
||||
properties.Remove("Type");
|
||||
|
||||
return FieldOptionsFactory.GetFieldOptions(type, properties);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -53,6 +53,7 @@
|
||||
<PackageReference Include="RestEase" Version="1.4.7" />
|
||||
<PackageReference Include="MimeKitLite" Version="2.0.7" />
|
||||
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.9" />
|
||||
<PackageReference Include="RandomDataGenerator.Net" Version="1.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition=" '$(TargetFramework)' == 'net451' ">
|
||||
|
||||
Reference in New Issue
Block a user