diff --git a/src/WireMock.Net.Minimal/Serialization/MappingConverter.cs b/src/WireMock.Net.Minimal/Serialization/MappingConverter.cs index 22bc9211..f5c31a54 100644 --- a/src/WireMock.Net.Minimal/Serialization/MappingConverter.cs +++ b/src/WireMock.Net.Minimal/Serialization/MappingConverter.cs @@ -161,6 +161,16 @@ public string ToCSharpCode(IMapping mapping, MappingConverterSettings? settings // Guid sb.AppendLine($" .WithGuid(\"{mapping.Guid}\")"); + // Scenario + State + if (!string.IsNullOrEmpty(mapping.Scenario)) + { + sb.AppendLine($" .InScenario({ToCSharpStringLiteral(mapping.Scenario)})"); + } + if (!string.IsNullOrEmpty(mapping.NextState)) + { + sb.AppendLine($" .WhenStateIs({ToCSharpStringLiteral(mapping.NextState)}, {ToCSharpIntLiteral(mapping.TimesInSameState)})"); + } + if (mapping.Probability != null) { sb.AppendLine($" .WithProbability({mapping.Probability.Value.ToString(CultureInfoUtils.CultureInfoEnUS)})"); diff --git a/src/WireMock.Net.Shared/Util/CSharpFormatter.cs b/src/WireMock.Net.Shared/Util/CSharpFormatter.cs index 4e34d272..1beae26b 100644 --- a/src/WireMock.Net.Shared/Util/CSharpFormatter.cs +++ b/src/WireMock.Net.Shared/Util/CSharpFormatter.cs @@ -134,6 +134,8 @@ public static string ConvertJsonToAnonymousObjectDefinition(JToken token, int in }; } + public static string ToCSharpIntLiteral(int? value) => value != null ? string.Format(CultureInfo.InvariantCulture, "{0}", value) : Null; + public static string ToCSharpBooleanLiteral(bool value) => value ? "true" : "false"; public static string ToCSharpStringLiteral(string? value) diff --git a/test/WireMock.Net.Tests/MappingBuilderTests.ToCSharpCode_Builder.verified.txt b/test/WireMock.Net.Tests/MappingBuilderTests.ToCSharpCode_Builder.verified.txt index 01089835..51fb86e7 100644 --- a/test/WireMock.Net.Tests/MappingBuilderTests.ToCSharpCode_Builder.verified.txt +++ b/test/WireMock.Net.Tests/MappingBuilderTests.ToCSharpCode_Builder.verified.txt @@ -72,6 +72,8 @@ builder .WithPath(new WildcardMatcher(WireMock.Matchers.MatchBehaviour.AcceptOnMatch, "/todo/items", false, WireMock.Matchers.MatchOperator.Or)) ) .WithGuid("98fae52e-76df-47d9-876f-2ee32e931005") + .InScenario("To do list") + .WhenStateIs("TodoList State Started", 2) .RespondWith(Response.Create() .WithBody("Buy milk") ); diff --git a/test/WireMock.Net.Tests/MappingBuilderTests.ToCSharpCode_Server.verified.txt b/test/WireMock.Net.Tests/MappingBuilderTests.ToCSharpCode_Server.verified.txt index fc2bb774..9f5d82f8 100644 --- a/test/WireMock.Net.Tests/MappingBuilderTests.ToCSharpCode_Server.verified.txt +++ b/test/WireMock.Net.Tests/MappingBuilderTests.ToCSharpCode_Server.verified.txt @@ -72,6 +72,8 @@ server .WithPath(new WildcardMatcher(WireMock.Matchers.MatchBehaviour.AcceptOnMatch, "/todo/items", false, WireMock.Matchers.MatchOperator.Or)) ) .WithGuid("98fae52e-76df-47d9-876f-2ee32e931005") + .InScenario("To do list") + .WhenStateIs("TodoList State Started", 2) .RespondWith(Response.Create() .WithBody("Buy milk") );