< Summary - Syki

Information
Class: Syki.Back.Features.Disciplines.CreateDiscipline.CreateDisciplineService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Disciplines/CreateDiscipline/CreateDisciplineService.cs
Tag: 97_27801654829
Line coverage
100%
Covered lines: 17
Uncovered lines: 0
Coverable lines: 17
Total lines: 35
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/Disciplines/CreateDiscipline/CreateDisciplineService.cs

#LineLine coverage
 1using Syki.Back.Domain.Disciplines;
 2
 3namespace Syki.Back.Features.Disciplines.CreateDiscipline;
 4
 2125public class CreateDisciplineService(SykiDbContext ctx) : ISykiService
 6{
 7    private class Validator : AbstractValidator<CreateDisciplineIn>
 8    {
 29        public Validator()
 10        {
 211            RuleFor(x => x.Name).NotEmpty().WithError(InvalidDisciplineName.I);
 212            RuleFor(x => x.Name).MaximumLength(100).WithError(InvalidDisciplineName.I);
 213        }
 14    }
 215    private static readonly Validator V = new();
 16
 17    public async Task<OneOf<CreateDisciplineOut, SykiError>> Create(CreateDisciplineIn data)
 18    {
 21419        if (V.Run(data, out var error)) return error;
 20
 21021        var discipline = new Discipline(ctx.RequestUser.InstitutionId, data.Name);
 22
 21023        var courses = await ctx.Courses
 21024            .Where(c => c.InstitutionId == ctx.RequestUser.InstitutionId && data.Courses.Contains(c.Id))
 21025            .Select(c => c.Id)
 21026            .ToListAsync();
 27
 21028        courses.ForEach(id => discipline.Links.Add(new() { CourseId = id }));
 29
 21030        ctx.Add(discipline);
 21031        await ctx.SaveChangesAsync();
 32
 21033        return new CreateDisciplineOut { Id = discipline.Id };
 21234    }
 35}