< Summary

Information
Class: Elsa.Api.Client.Extensions.PropertyBagExtensions
Assembly: Elsa.Api.Client
File(s): /home/runner/work/elsa-core/elsa-core/src/clients/Elsa.Api.Client/Extensions/PropertyBagExtensions.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 9
Coverable lines: 9
Total lines: 45
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 4
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
TryGetValueOrDefault(...)0%2040%
SetValue(...)100%210%

File(s)

/home/runner/work/elsa-core/elsa-core/src/clients/Elsa.Api.Client/Extensions/PropertyBagExtensions.cs

#LineLine coverage
 1using System.Text.Json;
 2using Elsa.Api.Client.Shared.Models;
 3
 4namespace Elsa.Api.Client.Extensions;
 5
 6/// <summary>
 7/// Provides extension methods for the PropertyBag class.
 8/// </summary>
 9public static class PropertyBagExtensions
 10{
 11    /// <summary>
 12    /// Tries to retrieve a value from the PropertyBag based on the provided key.
 13    /// If the specified key does not exist in the PropertyBag, the method will return the default value obtained from t
 14    /// </summary>
 15    /// <typeparam name="T">The type of the value to retrieve.</typeparam>
 16    /// <param name="propertyBag">The PropertyBag to retrieve the value from.</param>
 17    /// <param name="key">The key of the value to retrieve.</param>
 18    /// <param name="defaultValue">A function that returns the default value to be returned if the key does not exist in
 19    /// <returns>The value associated with the key, or the default value if the key does not exist.</returns>
 20    public static T? TryGetValueOrDefault<T>(this PropertyBag propertyBag, string key, Func<T> defaultValue)
 21    {
 022        if (!propertyBag.TryGetValue(key, out var value))
 023            return defaultValue();
 24
 025        var json = value.ToString();
 26
 027        if (string.IsNullOrWhiteSpace(json))
 028            return defaultValue();
 29
 030        return JsonSerializer.Deserialize<T>(json);
 31    }
 32
 33    /// <summary>
 34    /// Sets a value in the PropertyBag based on the provided key.
 35    /// The value is serialized using JSON.
 36    /// </summary>
 37    /// <param name="propertyBag">The PropertyBag to set the value in.</param>
 38    /// <param name="key">The key to associate with the value.</param>
 39    /// <param name="value">The value to store in the PropertyBag.</param>
 40    public static void SetValue(this PropertyBag propertyBag, string key, object value)
 41    {
 042        var json = JsonSerializer.Serialize(value);
 043        propertyBag[key] = json;
 044    }
 45}