< Summary - Syki

Information
Class: Syki.Back.Features.Courses.UpdateCourse.UpdateCourseService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Courses/UpdateCourse/UpdateCourseService.cs
Tag: 56_26538939494
Line coverage
100%
Covered lines: 15
Uncovered lines: 0
Coverable lines: 15
Total lines: 30
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
.ctor(...)100%11100%
.ctor()100%11100%
.cctor()100%11100%
Update()100%44100%

File(s)

/home/runner/work/syki/syki/Back/Features/Courses/UpdateCourse/UpdateCourseService.cs

#LineLine coverage
 1namespace Syki.Back.Features.Courses.UpdateCourse;
 2
 123public class UpdateCourseService(SykiDbContext ctx) : ISykiService
 4{
 5    private class Validator : AbstractValidator<UpdateCourseIn>
 6    {
 27        public Validator()
 8        {
 29            RuleFor(x => x.Name).NotEmpty().WithError(InvalidCourseName.I);
 210            RuleFor(x => x.Name).MaximumLength(50).WithError(InvalidCourseName.I);
 11
 212            RuleFor(x => x.Type).NotNull().WithError(InvalidCourseType.I);
 213            RuleFor(x => x.Type).IsInEnum().WithError(InvalidCourseType.I);
 214        }
 15    }
 216    private static readonly Validator V = new();
 17
 18    public async Task<OneOf<UpdateCourseOut, SykiError>> Update(UpdateCourseIn data)
 19    {
 1820        if (V.Run(data, out var error)) return error;
 21
 622        var course = await ctx.Courses.FirstOrDefaultAsync(x => x.InstitutionId == ctx.RequestUser.InstitutionId && x.Id
 1023        if (course == null) return CourseNotFound.I;
 24
 225        course.Update(data.Name, data.Type!.Value);
 226        await ctx.SaveChangesAsync();
 27
 228        return course.ToUpdateCourseOut();
 1229    }
 30}