< Summary - Core.Tests

Information
Class: Common.Core.Models.User
Assembly: Common.Core
File(s): D:\a\NuGetPackages\NuGetPackages\src\Common\Core\Models\User.cs
Tag: 3_8508158812
Line coverage
100%
Covered lines: 51
Uncovered lines: 0
Coverable lines: 51
Total lines: 121
Line coverage: 100%
Branch coverage
100%
Covered branches: 28
Total branches: 28
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Id()100%11100%
get_Name()100%11100%
get_Age()100%11100%
get_BirthDate()100%11100%
get_Email()100%11100%
get_Gender()100%11100%
Clone()100%11100%
Equals(...)100%1414100%
Update(...)100%1414100%
GetUsers()100%11100%
GetUsersAsync()100%11100%

File(s)

D:\a\NuGetPackages\NuGetPackages\src\Common\Core\Models\User.cs

#LineLine coverage
 1using System.ComponentModel.DataAnnotations;
 2using System.ComponentModel.DataAnnotations.Schema;
 3using System.Text.Json.Serialization;
 4using Common.Core.Classes;
 5using Common.Core.Interfaces;
 6
 7namespace Common.Core.Models;
 8
 9/// <summary>This class contains details of a User.</summary>
 10public class User : ModelEdit, IUser
 11{
 12  #region IUser Properties
 13
 14  /// <inheritdoc/>
 815  public override int Id { get; set; }
 16
 17  /// <inheritdoc/>
 18  [MaxLength( 50 )]
 5119  public string? Name { get; set; }
 20
 21  /// <inheritdoc/>
 22  [Range( 0, 150 )]
 23  [JsonIgnore( Condition = JsonIgnoreCondition.WhenWritingNull )]
 4524  public int? Age { get; set; }
 25
 26  /// <inheritdoc/>
 27  [Column( TypeName = "date" )]
 28  [JsonIgnore( Condition = JsonIgnoreCondition.WhenWritingNull )]
 6129  public DateOnly? BirthDate { get; set; }
 30
 31  /// <inheritdoc/>
 32  [MaxLength( 50 )]
 33  [JsonIgnore( Condition = JsonIgnoreCondition.WhenWritingNull )]
 4934  public string? Email { get; set; }
 35
 36  /// <inheritdoc/>
 37  [Required]
 3938  public Genders Gender { get; set; }
 39
 40  #endregion
 41
 42  #region Public Methods
 43
 44  /// <inheritdoc/>
 45  public override object Clone()
 146  {
 147    return MemberwiseClone();
 148  }
 49
 50  /// <inheritdoc/>
 51  /// <param name="obj">An object implementing the IUser interface to compare with this object.</param>
 52  public override bool Equals( object? obj )
 1153  {
 1554    if( obj is null || obj is not IUser user ) { return false; }
 55
 1156    if( user.Name != Name ) { return false; }
 1057    if( user.Email != Email ) { return false; }
 958    if( user.Age != Age ) { return false; }
 859    if( !user.BirthDate.Equals( BirthDate ) ) { return false; }
 760    if( user.Gender != Gender ) { return false; }
 61
 462    return true;
 1163  }
 64
 65  /// <inheritdoc/>
 66  /// <param name="obj">An object implementing the IUser interface with the changed values.</param>
 67  public override void Update( object? obj )
 368  {
 769    if( obj is null || obj is not IUser other ) { return; }
 70
 571    if( other.Name != Name ) { Name = other.Name; OnPropertyChanged( nameof( Name ) ); }
 572    if( other.Age != Age ) { Age = other.Age; OnPropertyChanged( nameof( Age ) ); }
 573    if( other.Email != Email ) { Email = other.Email; OnPropertyChanged( nameof( Email ) ); }
 574    if( !other.BirthDate.Equals( BirthDate ) ) { BirthDate = other.BirthDate; OnPropertyChanged( nameof( BirthDate ) ); 
 575    if( other.Gender != Gender ) { Gender = other.Gender; OnPropertyChanged( nameof( Gender ) ); }
 376  }
 77
 78  #endregion
 79
 80  #region Static Methods
 81
 82  /// <summary>Retrieves a list of users.</summary>
 83  /// <returns>A list of users.</returns>
 84  public static IList<User> GetUsers()
 485  {
 486    var items = new List<User>();
 87
 488    User wrk = new() { Name = "John Doe", Email = "john@doe-family.com", BirthDate = new DateOnly( 1981, 10, 14 ) };
 489    wrk.Age = CalculateAge( wrk.BirthDate );
 490    wrk.Gender = Genders.Male;
 491    items.Add( wrk );
 92
 493    wrk = new() { Name = "Jane Doe", Email = "jane@doe-family.com", BirthDate = new DateOnly( 1984, 7, 5 ) };
 494    wrk.Age = CalculateAge( wrk.BirthDate );
 495    wrk.Gender = Genders.Female;
 496    items.Add( wrk );
 97
 498    wrk = new() { Name = "Chris Doe", Email = "chris.doe@gmail.com", BirthDate = new DateOnly( 2002, 1, 19 ) };
 499    wrk.Age = CalculateAge( wrk.BirthDate );
 4100    wrk.Gender = Genders.Neutral;
 4101    items.Add( wrk );
 102
 4103    wrk = new() { Name = "Donna Doe", Email = "donna.doe@gmail.com", BirthDate = new DateOnly( 2005, 12, 8 ) };
 4104    wrk.Age = CalculateAge( wrk.BirthDate );
 4105    wrk.Gender = Genders.Fluid;
 4106    items.Add( wrk );
 107
 4108    return items;
 4109  }
 110
 111  /// <summary>Asynchronously retrieves a list of users.</summary>
 112  /// <returns>A list of users.</returns>
 113  public static async Task<IList<User>> GetUsersAsync()
 1114  {
 1115    IList<User> rtn = new List<User>();
 4116    await Task.Run( () => { rtn = GetUsers(); } );
 1117    return rtn;
 1118  }
 119
 120  #endregion
 121}