< Summary - pva.SuperV

Information
Class: pva.SuperV.Api.Services.Scripts.ScriptService
Assembly: pva.SuperV.Api
File(s): /home/runner/work/pva.SuperV/pva.SuperV/pva.SuperV.Api/Services/Scripts/ScriptService.cs
Tag: dotnet-ubuntu_22190969454
Line coverage
93%
Covered lines: 43
Uncovered lines: 3
Coverable lines: 46
Total lines: 75
Line coverage: 93.4%
Branch coverage
62%
Covered branches: 5
Total branches: 8
Branch coverage: 62.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
GetScriptsAsync()100%11100%
GetScriptAsync()100%22100%
CreateScriptAsync()50%2290%
UpdateScriptAsync()50%2290%
DeleteScriptAsync()50%2290%

File(s)

/home/runner/work/pva.SuperV/pva.SuperV/pva.SuperV.Api/Services/Scripts/ScriptService.cs

#LineLine coverage
 1using pva.SuperV.Api.Exceptions;
 2using pva.SuperV.Api.Mappers;
 3using pva.SuperV.Engine;
 4using pva.SuperV.Engine.Exceptions;
 5using pva.SuperV.Engine.Processing;
 6using pva.SuperV.Model.FieldProcessings;
 7using pva.SuperV.Model.Services;
 8
 9namespace pva.SuperV.Api.Services.Scripts
 10{
 11    public class ScriptService : BaseService, IScriptService
 12    {
 13        private readonly ILogger logger;
 14
 615        public ScriptService(ILoggerFactory loggerFactory)
 616        {
 617            this.logger = loggerFactory.CreateLogger(this.GetType());
 618        }
 19
 20        public async Task<List<ScriptDefinitionModel>> GetScriptsAsync(string projectId)
 121        {
 122            logger.LogDebug("Getting scripts of project {ProjectId}",
 123                projectId);
 224            return await Task.FromResult(GetProjectEntity(projectId).ScriptDefinitions.Values.Select(field => ScriptDefi
 125        }
 26
 27        public async Task<ScriptDefinitionModel> GetScriptAsync(string projectId, string scriptName)
 228        {
 229            logger.LogDebug("Getting script {scriptName} of project {ProjectId}",
 230                scriptName, projectId);
 231            return GetProjectEntity(projectId).ScriptDefinitions.TryGetValue(scriptName, out ScriptDefinition? script)
 232                ? await Task.FromResult(ScriptDefinitionMapper.ToDto(script))
 233                : await Task.FromException<ScriptDefinitionModel>(new UnknownEntityException("Script", scriptName));
 134        }
 35
 36        public async Task<ScriptDefinitionModel> CreateScriptAsync(string projectId, ScriptDefinitionModel createRequest
 237        {
 238            logger.LogDebug("Creating script {scriptName} on project {ProjectId}",
 239                createRequest.Name, projectId);
 240            if (GetProjectEntity(projectId) is WipProject wipProject)
 241            {
 242                ScriptDefinition scriptDefinition = ScriptDefinitionMapper.FromDto(createRequest);
 243                wipProject.AddScript(scriptDefinition);
 244                return await Task.FromResult(ScriptDefinitionMapper.ToDto(scriptDefinition));
 45            }
 046            return await Task.FromException<ScriptDefinitionModel>(new NonWipProjectException(projectId));
 247        }
 48
 49        public async Task<ScriptDefinitionModel> UpdateScriptAsync(string projectId, string scriptName, ScriptDefinition
 150        {
 151            logger.LogDebug("Updating script {scriptName} on project {ProjectId}",
 152                scriptName, projectId);
 153            if (GetProjectEntity(projectId) is WipProject wipProject)
 154            {
 155                ScriptDefinition scriptDefinition = ScriptDefinitionMapper.FromDto(updateRequest);
 156                wipProject.UpdateScript(scriptDefinition);
 157                return await Task.FromResult(ScriptDefinitionMapper.ToDto(scriptDefinition));
 58            }
 059            return await Task.FromException<ScriptDefinitionModel>(new NonWipProjectException(projectId));
 160        }
 61
 62        public async ValueTask DeleteScriptAsync(string projectId, string scriptName)
 163        {
 164            logger.LogDebug("Deleting script {scriptName} on project {ProjectId}",
 165                scriptName, projectId);
 166            if (GetProjectEntity(projectId) is WipProject wipProject)
 167            {
 168                wipProject.RemoveScript(scriptName);
 169                await ValueTask.CompletedTask;
 170                return;
 71            }
 072            await ValueTask.FromException(new NonWipProjectException(projectId));
 173        }
 74    }
 75}