* Add unit tests for `FlowFork` activity and enhance test utilities - Introduce `FlowForkTests` to validate activity behavior with various branch configurations. - Extend `ActivityExecutionContextExtensions` with methods to retrieve and check outcomes. - Modify `ActivityTestFixture` to ensure activities transition to `Running` status before execution. * Add unit tests for `FlowSwitch` activity and extend test utilities - Implement `FlowSwitchTests` to verify behavior based on switch cases, modes, and literal expressions. - Enhance `ActivityExecutionContextExtensions` with methods to retrieve and check outcomes in execution context. * Update test guidelines to include examples for checking activity outcomes - Add unit test examples for validating multiple and default outcomes. - Extend documentation to describe new `ActivityExecutionContextExtensions` methods: `GetOutcomes` and `HasOutcome`. * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Simplify `GetOutcomes` method in `ActivityExecutionContextExtensions`. * Add unit tests for `FlowSendHttpRequest` activity and refactor helper utilities - Introduce `FlowSendHttpRequestTests` to validate activity behavior across various scenarios. - Add utility methods in `SendHttpRequestTestHelpers` for creating mock responses and exceptions. - Refactor `Helpers` namespace to `Http.Helpers` for better organization. - Update project file to reflect namespace adjustments. * Update test/unit/Elsa.Activities.UnitTests/Elsa.Activities.UnitTests.csproj Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
44 lines
1.6 KiB
C#
44 lines
1.6 KiB
C#
using System.Net;
|
|
|
|
namespace Elsa.Activities.UnitTests.Http.Helpers;
|
|
|
|
/// <summary>
|
|
/// Shared helper methods for testing SendHttpRequest and FlowSendHttpRequest activities.
|
|
/// </summary>
|
|
public static class SendHttpRequestTestHelpers
|
|
{
|
|
/// <summary>
|
|
/// Creates a response handler that returns a specific HTTP status code and optional content.
|
|
/// </summary>
|
|
public static Func<HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> CreateResponseHandler(
|
|
HttpStatusCode statusCode,
|
|
string? content = null,
|
|
RequestCapture? requestCapture = null,
|
|
Dictionary<string, string>? additionalHeaders = null)
|
|
{
|
|
return (request, _) =>
|
|
{
|
|
if (requestCapture != null)
|
|
requestCapture.CapturedRequest = request;
|
|
return Task.FromResult(ActivityTestFixtureHttpExtensions.CreateHttpResponse(statusCode, content, additionalHeaders));
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// Creates an exception handler that throws a specific exception type with a message.
|
|
/// </summary>
|
|
public static Func<HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> CreateExceptionHandler<TException>(string message)
|
|
where TException : Exception
|
|
{
|
|
return (_, _) => throw ((TException)Activator.CreateInstance(typeof(TException), message)!);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Captures HTTP request details during test execution.
|
|
/// </summary>
|
|
public sealed class RequestCapture
|
|
{
|
|
public HttpRequestMessage? CapturedRequest { get; set; }
|
|
}
|
|
}
|