< Summary

Information
Class: Enjoy.Domain.Users.ValueObjects.Role
Assembly: Enjoy.Domain
File(s): D:\Dotnet\Propuesta-trabajo\Enjoy Project\EnjoyApp\Enjoy\src\Enjoy.Domain\Users\ValueObjects\Role.cs
Line coverage
100%
Covered lines: 16
Uncovered lines: 0
Coverable lines: 16
Total lines: 37
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%
CreateUser()100%11100%
CreateAdmin()100%11100%
ToString()100%11100%
op_Implicit(...)100%11100%

File(s)

D:\Dotnet\Propuesta-trabajo\Enjoy Project\EnjoyApp\Enjoy\src\Enjoy.Domain\Users\ValueObjects\Role.cs

#LineLine coverage
 1using Enjoy.Domain.Shared.Errors;
 2using Enjoy.Domain.Shared.Results;
 3
 4namespace Enjoy.Domain.Users.ValueObjects;
 5
 6public readonly record struct Role
 7{
 8    public const string User = nameof(User);
 9    public const string Admin = nameof(Admin);
 10
 111    public static readonly IReadOnlyCollection<string> All = [User, Admin];
 12
 113    private static readonly HashSet<string> ValidValues =
 114        new(All, StringComparer.OrdinalIgnoreCase);
 15
 916    public string Value { get; }
 17
 6318    private Role(string value) => Value = value;
 19
 20    public static Result<Role> Create(string? value)
 6921    {
 6922        if (string.IsNullOrWhiteSpace(value))
 323            return Result<Role>.Failure(Error.Role.IsNullOrEmpty);
 24
 6625        if (!ValidValues.TryGetValue(value.Trim(), out var canonical))
 726            return Result<Role>.Failure(Error.Role.Invalid);
 27
 5928        return Result<Role>.Success(new Role(canonical));
 6929    }
 30
 231    public static Role CreateUser() => new(User);
 232    public static Role CreateAdmin() => new(Admin);
 33
 134    public override string ToString() => Value;
 35
 136    public static implicit operator string(Role role) => role.Value;
 37}