< 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: 56_26538939494
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
 285public 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(50).WithError(InvalidDisciplineName.I);
 213        }
 14    }
 215    private static readonly Validator V = new();
 16
 17    public async Task<OneOf<CreateDisciplineOut, SykiError>> Create(CreateDisciplineIn data)
 18    {
 3019        if (V.Run(data, out var error)) return error;
 20
 2621        var discipline = new Discipline(ctx.RequestUser.InstitutionId, data.Name);
 22
 2623        var courses = await ctx.Courses
 2624            .Where(c => c.InstitutionId == ctx.RequestUser.InstitutionId && data.Courses.Contains(c.Id))
 2625            .Select(c => c.Id)
 2626            .ToListAsync();
 27
 2628        courses.ForEach(id => discipline.Links.Add(new() { CourseId = id }));
 29
 2630        ctx.Add(discipline);
 2631        await ctx.SaveChangesAsync();
 32
 2633        return new CreateDisciplineOut { Id = discipline.Id };
 2834    }
 35}