Add HandleBars Random functionality (#230 #219)

Add HandleBars Random functionality (#219)
This commit is contained in:
Stef Heyenrath
2018-11-09 10:06:09 +00:00
committed by GitHub
parent 34be065467
commit 3df4161329
7 changed files with 98 additions and 7 deletions

View File

@@ -9,6 +9,8 @@
HandleBarsJsonPath.Register();
HandleBarsLinq.Register();
HandleBarsRandom.Register();
}
}
}

View 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);
}
}
}

View File

@@ -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' ">