< Summary - Estud

Information
Class: Estud.Back.Domain.Periods.AcademicPeriod
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Domain/Periods/AcademicPeriod.cs
Tag: 114_29044117136
Line coverage
100%
Covered lines: 36
Uncovered lines: 0
Coverable lines: 36
Total lines: 68
Line coverage: 100%
Branch coverage
100%
Covered branches: 18
Total branches: 18
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Id()100%11100%
get_InstitutionId()100%11100%
get_Name()100%11100%
get_StartAt()100%11100%
get_EndAt()100%11100%
.ctor()100%11100%
.ctor(...)100%11100%
New(...)100%22100%
Validate(...)100%1616100%

File(s)

/home/runner/work/syki/syki/Back/Domain/Periods/AcademicPeriod.cs

#LineLine coverage
 1namespace Estud.Back.Domain.Periods;
 2
 3public class AcademicPeriod
 4{
 425    public int Id { get; set; }
 406    public int InstitutionId { get; set; }
 907    public string Name { get; set; }
 528    public DateOnly StartAt { get; set; }
 12609    public DateOnly EndAt { get; set; }
 10
 4811    private AcademicPeriod() {}
 12
 4013    public AcademicPeriod(
 4014        int institutionId,
 4015        string name,
 4016        DateOnly startAt,
 4017        DateOnly endAt
 4018    ) {
 4019        InstitutionId = institutionId;
 4020        Name = name;
 4021        StartAt = startAt;
 4022        EndAt = endAt;
 4023    }
 24
 25    public static OneOf<AcademicPeriod, EstudError> New(
 26        int institutionId,
 27        string name,
 28        DateOnly startAt,
 29        DateOnly endAt
 30    ) {
 6831        var result = Validate(name, startAt, endAt);
 32
 9633        if (result.IsError) return result.Error;
 34
 4035        return new AcademicPeriod(institutionId, result.Success, startAt, endAt);
 36    }
 37
 38    private static OneOf<string, EstudError> Validate(
 39        string name,
 40        DateOnly startAt,
 41        DateOnly endAt
 42    ) {
 6843        var numbers = name.OnlyNumbers();
 44
 6845        if (numbers.Length != 5)
 1246            return new InvalidAcademicPeriod();
 47
 5648        var year = int.Parse(numbers.Substring(0, 4));
 5649        var digit = int.Parse(numbers.Substring(4, 1));
 50
 5651        if (year < 1970 || year > 2070)
 252            return new InvalidAcademicPeriod();
 53
 5454        if (digit < 1 || digit > 2)
 855            return new InvalidAcademicPeriod();
 56
 4657        if (startAt.Year != year)
 258            return new InvalidAcademicPeriodStartDate();
 59
 4460        if (endAt.Year != year)
 261            return new InvalidAcademicPeriodEndDate();
 62
 4263        if (startAt >= endAt)
 264            return new InvalidAcademicPeriodDates();
 65
 4066        return $"{year}.{digit}";
 67    }
 68}