< Summary

Information
Class: Elsa.Workflows.Runtime.WorkflowDispatchOutboxStateExtensions
Assembly: Elsa.Workflows.Runtime
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Runtime/Extensions/WorkflowDispatchOutboxStateExtensions.cs
Line coverage
53%
Covered lines: 8
Uncovered lines: 7
Coverable lines: 15
Total lines: 68
Line coverage: 53.3%
Branch coverage
57%
Covered branches: 8
Total branches: 14
Branch coverage: 57.1%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
AddWorkflowDispatchOutboxItem(...)0%620%
RemoveWorkflowDispatchOutboxItem(...)50%4471.42%
HasWorkflowDispatchOutboxItem(...)50%22100%
HasWorkflowDispatchOutboxItems(...)50%22100%
GetWorkflowDispatchOutboxState(...)100%44100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Runtime/Extensions/WorkflowDispatchOutboxStateExtensions.cs

#LineLine coverage
 1using Elsa.Extensions;
 2using Elsa.Workflows.Runtime.Models;
 3using Elsa.Workflows.State;
 4
 5namespace Elsa.Workflows.Runtime;
 6
 7/// <summary>
 8/// Extension methods for workflow dispatch outbox state stored on workflow state.
 9/// </summary>
 10public static class WorkflowDispatchOutboxStateExtensions
 11{
 12    /// <summary>
 13    /// The workflow property key used to store committed outbox item IDs.
 14    /// </summary>
 15    public const string PropertyKey = "Elsa.Workflows.Runtime.WorkflowDispatchOutbox";
 16
 17    /// <summary>
 18    /// Adds an outbox item ID to the workflow execution context's persisted property bag.
 19    /// </summary>
 20    public static void AddWorkflowDispatchOutboxItem(this WorkflowExecutionContext context, string outboxItemId)
 21    {
 022        var state = context.Properties.GetWorkflowDispatchOutboxState();
 23
 024        if (!state.ItemIds.Contains(outboxItemId))
 025            state.ItemIds.Add(outboxItemId);
 26
 027        context.Properties[PropertyKey] = state;
 028    }
 29
 30    /// <summary>
 31    /// Removes a delivered outbox item ID from the persisted workflow state property bag.
 32    /// </summary>
 33    public static bool RemoveWorkflowDispatchOutboxItem(this WorkflowState workflowState, string outboxItemId)
 34    {
 735        var state = workflowState.Properties.GetWorkflowDispatchOutboxState();
 36
 737        if (!state.ItemIds.Remove(outboxItemId))
 038            return false;
 39
 740        if (state.ItemIds.Count == 0)
 741            workflowState.Properties.Remove(PropertyKey);
 42        else
 043            workflowState.Properties[PropertyKey] = state;
 44
 745        return true;
 46    }
 47
 48    /// <summary>
 49    /// Returns true when the workflow state includes the specified committed outbox item ID.
 50    /// </summary>
 51    public static bool HasWorkflowDispatchOutboxItem(this WorkflowState? workflowState, string outboxItemId)
 52    {
 1753        return workflowState?.Properties.GetWorkflowDispatchOutboxState().ItemIds.Contains(outboxItemId) == true;
 54    }
 55
 56    /// <summary>
 57    /// Returns true when the workflow state includes committed outbox item IDs.
 58    /// </summary>
 59    public static bool HasWorkflowDispatchOutboxItems(this WorkflowState? workflowState)
 60    {
 361        return workflowState?.Properties.GetWorkflowDispatchOutboxState().ItemIds.Count > 0;
 62    }
 63
 64    private static WorkflowDispatchOutboxState GetWorkflowDispatchOutboxState(this IDictionary<string, object>? properti
 65    {
 2766        return properties?.TryGetValue<WorkflowDispatchOutboxState>(PropertyKey, out var state) == true ? state : new();
 67    }
 68}