< Summary - Estud

Information
Class: Estud.Back.Features.Courses.CreateCourse.CreateCourseService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Courses/CreateCourse/CreateCourseService.cs
Tag: 114_29044117136
Line coverage
100%
Covered lines: 14
Uncovered lines: 0
Coverable lines: 14
Total lines: 31
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
.ctor()100%11100%
.cctor()100%11100%
Create()100%22100%

File(s)

/home/runner/work/syki/syki/Back/Features/Courses/CreateCourse/CreateCourseService.cs

#LineLine coverage
 1using Estud.Back.Domain.Courses;
 2
 3namespace Estud.Back.Features.Courses.CreateCourse;
 4
 1365public class CreateCourseService(EstudDbContext ctx) : IEstudService
 6{
 7    private class Validator : AbstractValidator<CreateCourseIn>
 8    {
 29        public Validator()
 10        {
 211            RuleFor(x => x.Name).NotEmpty().WithError(InvalidCourseName.I);
 212            RuleFor(x => x.Name).MaximumLength(50).WithError(InvalidCourseName.I);
 13
 214            RuleFor(x => x.Type).NotNull().WithError(InvalidCourseType.I);
 215            RuleFor(x => x.Type).IsInEnum().WithError(InvalidCourseType.I);
 216        }
 17    }
 218    private static readonly Validator V = new();
 19
 20    public async Task<OneOf<CreateCourseOut, EstudError>> Create(CreateCourseIn data)
 21    {
 14222        if (V.Run(data, out var error)) return error;
 23
 13024        var institutionId = ctx.RequestUser.InstitutionId;
 13025        var course = new Course(institutionId, data.Name, data.Type!.Value);
 26
 13027        await ctx.SaveChangesAsync(course);
 28
 13029        return new CreateCourseOut { Id = course.Id };
 13630    }
 31}