< Summary

Information
Class: Elsa.Common.Models.VersionOptions
Assembly: Elsa.Common
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Common/Models/VersionOptions.cs
Line coverage
55%
Covered lines: 15
Uncovered lines: 12
Coverable lines: 27
Total lines: 118
Line coverage: 55.5%
Branch coverage
41%
Covered branches: 10
Total branches: 24
Branch coverage: 41.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%11100%
SpecificVersion(...)100%11100%
FromString(...)0%156120%
TryParse(...)100%210%
get_IsLatest()100%11100%
get_IsLatestOrPublished()100%11100%
get_IsLatestAndPublished()100%11100%
get_IsPublished()100%11100%
get_IsDraft()100%11100%
get_AllVersions()100%11100%
get_Version()100%11100%
ToString()83.33%1212100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Common/Models/VersionOptions.cs

#LineLine coverage
 1using System.ComponentModel;
 2using System.Globalization;
 3using System.Text.Json.Serialization;
 4using Elsa.Common.Converters;
 5using JetBrains.Annotations;
 6
 7namespace Elsa.Common.Models;
 8
 9/// <summary>
 10/// Provides parameters for querying a given version of versioned entities.
 11/// </summary>
 12[TypeConverter(typeof(VersionOptionsTypeConverter))]
 13[JsonConverter(typeof(VersionOptionsJsonConverter))]
 14[PublicAPI]
 15public struct VersionOptions
 16{
 17    /// <summary>
 18    /// Gets the latest version.
 19    /// </summary>
 120    public static readonly VersionOptions Latest = new() { IsLatest = true };
 21
 22    /// <summary>
 23    /// Gets the published version.
 24    /// </summary>
 125    public static readonly VersionOptions Published = new() { IsPublished = true };
 26
 27    /// <summary>
 28    /// Gets the published version if available, and if not, the latest version.
 29    /// </summary>
 130    public static readonly VersionOptions LatestOrPublished = new() { IsLatestOrPublished = true };
 31
 32    /// <summary>
 33    /// Gets the latest, published version.
 34    /// </summary>
 135    public static readonly VersionOptions LatestAndPublished = new() { IsLatestAndPublished = true };
 36
 37    /// <summary>
 38    /// Gets the draft version.
 39    /// </summary>
 140    public static readonly VersionOptions Draft = new() { IsDraft = true };
 41
 42    /// <summary>
 43    /// Gets all versions.
 44    /// </summary>
 145    public static readonly VersionOptions All = new() { AllVersions = true };
 46
 47    /// <summary>
 48    /// Gets a specific version.
 49    /// </summary>
 57450    public static VersionOptions SpecificVersion(int version) => new() { Version = version };
 51
 52    /// <summary>
 53    /// Parses a string into a <see cref="VersionOptions"/>.
 54    /// </summary>
 55    public static VersionOptions FromString(string value) =>
 056        value switch
 057        {
 058            "AllVersions" => All,
 059            "Draft" => Draft,
 060            "Latest" => Latest,
 061            "Published" => Published,
 062            "LatestOrPublished" => LatestOrPublished,
 063            "LatestAndPublished" => LatestAndPublished,
 064            _ => SpecificVersion(int.Parse(value, CultureInfo.InvariantCulture))
 065        };
 66
 67    /// <summary>
 68    /// Tries to parse a string into a <see cref="VersionOptions"/>.
 69    /// </summary>
 70    /// <param name="value">The string to parse.</param>
 71    /// <param name="versionOptions">The parsed <see cref="VersionOptions"/>.</param>
 72    /// <returns>True if the string could be parsed, otherwise false.</returns>
 73    public static bool TryParse(string value, out VersionOptions versionOptions)
 74    {
 075        versionOptions = FromString(value);
 076        return true;
 77    }
 78
 79    /// <summary>
 80    /// Gets the latest version.
 81    /// </summary>
 363082    public bool IsLatest { get; private set; }
 83
 84    /// <summary>
 85    /// Gets the published version if available, and if not, the latest version.
 86    /// </summary>
 117587    public bool IsLatestOrPublished { get; private set; }
 88
 89    /// <summary>
 90    /// Gets the latest, published version.
 91    /// </summary>
 116092    public bool IsLatestAndPublished { get; private set; }
 93
 94    /// <summary>
 95    /// Gets the published version.
 96    /// </summary>
 245297    public bool IsPublished { get; private set; }
 98
 99    /// <summary>
 100    /// Gets the draft version.
 101    /// </summary>
 3630102    public bool IsDraft { get; private set; }
 103
 104    /// <summary>
 105    /// Gets all versions.
 106    /// </summary>
 1911107    public bool AllVersions { get; private set; }
 108
 109    /// <summary>
 110    /// Gets a specific version.
 111    /// </summary>
 2283112    public int Version { get; private set; }
 113
 114    /// <summary>
 115    /// Returns a simple string representation of this <see cref="VersionOptions"/>.
 116    /// </summary>
 1910117    public override string ToString() => AllVersions ? "AllVersions" : IsDraft ? "Draft" : IsLatest ? "Latest" : IsPubli
 118}