< Summary

Information
Class: Enjoy.Domain.Jokes.ValueObjects.Origin
Assembly: Enjoy.Domain
File(s): D:\Dotnet\Propuesta-trabajo\Enjoy Project\EnjoyApp\Enjoy\src\Enjoy.Domain\Jokes\ValueObjects\Origin.cs
Line coverage
100%
Covered lines: 17
Uncovered lines: 0
Coverable lines: 17
Total lines: 39
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%11100%
get_Value()100%11100%
.ctor(...)100%11100%
Create(...)100%44100%
FromChuckNorris()100%11100%
FromDadJoke()100%11100%
FromLocal()100%11100%
ToString()100%11100%
op_Implicit(...)100%11100%

File(s)

D:\Dotnet\Propuesta-trabajo\Enjoy Project\EnjoyApp\Enjoy\src\Enjoy.Domain\Jokes\ValueObjects\Origin.cs

#LineLine coverage
 1using Enjoy.Domain.Shared.Errors;
 2using Enjoy.Domain.Shared.Results;
 3
 4namespace Enjoy.Domain.Jokes.ValueObjects;
 5
 6public readonly record struct Origin
 7{
 8    public const string ChuckNorris = nameof(ChuckNorris);
 9    public const string DadJoke = nameof(DadJoke);
 10    public const string Local = nameof(Local);
 11
 112    public static readonly IReadOnlyCollection<string> All = [ChuckNorris, DadJoke, Local];
 13
 114    private static readonly HashSet<string> ValidValues =
 115        new(All, StringComparer.OrdinalIgnoreCase);
 16
 717    public string Value { get; }
 18
 4119    private Origin(string value) => Value = value;
 20
 21    public static Result<Origin> Create(string? value)
 4422    {
 4423        if (string.IsNullOrWhiteSpace(value))
 324            return Result<Origin>.Failure(Error.Origin.IsNullOrEmpty);
 25
 4126        if (!ValidValues.TryGetValue(value.Trim(), out var canonical))
 527            return Result<Origin>.Failure(Error.Origin.Invalid);
 28
 3629        return Result<Origin>.Success(new Origin(canonical));
 4430    }
 31
 232    public static Origin FromChuckNorris() => new(ChuckNorris);
 233    public static Origin FromDadJoke() => new(DadJoke);
 134    public static Origin FromLocal() => new(Local);
 35
 136    public override string ToString() => Value;
 37
 138    public static implicit operator string(Origin origin) => origin.Value;
 39}