< Summary

Information
Class: Elsa.Workflows.Runtime.Comparers.WorkflowTriggerEqualityComparer
Assembly: Elsa.Workflows.Runtime
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Runtime/Comparers/WorkflowTriggerEqualityComparer.cs
Line coverage
100%
Covered lines: 24
Uncovered lines: 0
Coverable lines: 24
Total lines: 58
Line coverage: 100%
Branch coverage
50%
Covered branches: 2
Total branches: 4
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%11100%
Equals(...)50%44100%
GetHashCode(...)100%11100%
Serialize(...)100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Runtime/Comparers/WorkflowTriggerEqualityComparer.cs

#LineLine coverage
 1using System.Text.Json;
 2using Elsa.Expressions.Services;
 3using Elsa.Workflows.Runtime.Entities;
 4using Elsa.Workflows.Serialization.Converters;
 5
 6namespace Elsa.Workflows.Runtime.Comparers;
 7
 8/// <summary>
 9/// Compares two <see cref="StoredTrigger"/> instances for equality.
 10/// </summary>
 11public class WorkflowTriggerEqualityComparer : IEqualityComparer<StoredTrigger>
 12{
 13    private readonly JsonSerializerOptions _settings;
 14
 15    /// <summary>
 16    /// Initializes a new instance of the <see cref="WorkflowTriggerEqualityComparer"/> class.
 17    /// </summary>
 69618    public WorkflowTriggerEqualityComparer()
 19    {
 69620        _settings = new JsonSerializerOptions
 69621        {
 69622            // Enables serialization of ValueTuples, which use fields instead of properties.
 69623            IncludeFields = true,
 69624            PropertyNameCaseInsensitive = true
 69625        };
 26
 69627        _settings.Converters.Add(new TypeJsonConverter(WellKnownTypeRegistry.CreateDefault()));
 69628    }
 29
 30    /// <inheritdoc />
 31    public bool Equals(StoredTrigger? x, StoredTrigger? y)
 32    {
 34833        var xJson = x != null ? Serialize(x) : null;
 34834        var yJson = y != null ? Serialize(y) : null;
 34835        return xJson == yJson;
 36    }
 37
 38    /// <inheritdoc />
 39    public int GetHashCode(StoredTrigger obj)
 40    {
 80441        var json = Serialize(obj);
 80442        return json.GetHashCode();
 43    }
 44
 45    private string Serialize(StoredTrigger storedTrigger)
 46    {
 150047        var input = new
 150048        {
 150049            storedTrigger.Payload,
 150050            storedTrigger.Name,
 150051            storedTrigger.ActivityId,
 150052            storedTrigger.WorkflowDefinitionId,
 150053            storedTrigger.WorkflowDefinitionVersionId,
 150054            storedTrigger.Hash
 150055        };
 150056        return JsonSerializer.Serialize(input, _settings);
 57    }
 58}