< Summary - pva.SuperV

Information
Class: pva.SuperV.Api.Routes.Projects.ProjectEndpoints
Assembly: pva.SuperV.Api
File(s): /home/runner/work/pva.SuperV/pva.SuperV/pva.SuperV.Api/Routes/Projects/ProjectEndpoints.cs
Tag: dotnet-ubuntu_18869653307
Line coverage
100%
Covered lines: 124
Uncovered lines: 0
Coverable lines: 124
Total lines: 149
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
MapProjectEndpoints(...)100%11100%

File(s)

/home/runner/work/pva.SuperV/pva.SuperV/pva.SuperV.Api/Routes/Projects/ProjectEndpoints.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Mvc;
 2using pva.SuperV.Model;
 3using pva.SuperV.Model.Projects;
 4using pva.SuperV.Model.Services;
 5using System.ComponentModel;
 6
 7namespace pva.SuperV.Api.Routes.Projects
 8{
 9    public static class ProjectEndpoints
 10    {
 11        public static WebApplication MapProjectEndpoints(this WebApplication app)
 13112        {
 13113            RouteGroupBuilder projectsApi = app.MapGroup("/projects");
 13114            projectsApi.MapGet("/",
 13115                async (IProjectService projectService)
 116                    => await GetProjects.Handle(projectService))
 13117                .WithName("GetProjects")
 13118                .WithDisplayName("GetProjects")
 13119                .WithSummary("Gets the list of available projects")
 13120                .WithDescription("Gets the list of available projects")
 13121                .Produces<List<ProjectModel>>(StatusCodes.Status200OK);
 22
 13123            projectsApi.MapPost("/search",
 13124                async (IProjectService projectService, [FromBody] ProjectPagedSearchRequest search)
 125                    => await SearchProjects.Handle(projectService, search))
 13126                .WithName("SearchProjects")
 13127                .WithDisplayName("SearchProjects")
 13128                .WithSummary("Search available projects by page")
 13129                .WithDescription("Search available projects by page")
 13130                .Produces<PagedSearchResult<ProjectModel>>(StatusCodes.Status200OK);
 31
 13132            projectsApi.MapGet("/{projectId}",
 13133                async (IProjectService projectService,
 13134                [Description("ID of project")] string projectId)
 235                    => await GetProject.Handle(projectService, projectId))
 13136                .WithName("GetProject")
 13137                .WithDisplayName("GetProject")
 13138                .WithSummary("Gets a project by its ID")
 13139                .WithDescription("Gets a project by its ID")
 13140                .Produces<ProjectModel>(StatusCodes.Status200OK)
 13141                .Produces<string>(StatusCodes.Status404NotFound);
 42
 13143            projectsApi.MapPost("/create",
 13144                async (IProjectService projectService,
 13145                [Description("Project creation request")][FromBody] CreateProjectRequest createProjectRequest)
 246                    => await CreateProject.Handle(projectService, createProjectRequest))
 13147                .WithName("CreateBlankProject")
 13148                .WithDisplayName("CreateBlankProjectFromRunnable")
 13149                .WithSummary("Creates a blank WIP project")
 13150                .WithDescription("Creates a blank WIP project")
 13151                .Produces<ProjectModel>(StatusCodes.Status201Created)
 13152                .Produces<string>(StatusCodes.Status404NotFound);
 53
 13154            projectsApi.MapPost("/create/{runnableProjectId}",
 13155                async (IProjectService projectService,
 13156                [Description(" ID of runnable project")] string runnableProjectId)
 257                    => await CreateProjectFromRunnable.Handle(projectService, runnableProjectId))
 13158                .WithName("CreateProjectFromRunnable")
 13159                .WithDisplayName("CreateProjectFromRunnable")
 13160                .WithSummary("Creates a WIP project from a runnable project")
 13161                .WithDescription("Creates a WIP project from a runnable project")
 13162                .Produces<ProjectModel>(StatusCodes.Status201Created)
 13163                .Produces<string>(StatusCodes.Status404NotFound);
 64
 13165            projectsApi.MapPut("/{projectId}",
 13166                async (IProjectService projectService,
 13167                [Description(" ID of project")] string projectId,
 13168                [Description("Project update request")][FromBody] UpdateProjectRequest updateProjectRequest)
 169                    => await UpdateProject.Handle(projectService, projectId, updateProjectRequest))
 13170                .WithName("UpdateProject")
 13171                .WithDisplayName("UpdateProject")
 13172                .WithSummary("Updates a project")
 13173                .WithDescription("Updates a project")
 13174                .Produces<ProjectModel>(StatusCodes.Status200OK)
 13175                .Produces<string>(StatusCodes.Status404NotFound);
 76
 13177            projectsApi.MapPost("/{wipProjectId}/build",
 13178                async (IProjectService projectService,
 13179                        [Description("ID of WIP project")] string wipProjectId)
 380                    => await BuildProject.Handle(projectService, wipProjectId))
 13181                .WithName("BuildProject")
 13182                .WithSummary("Build a runnable project from a WIP project")
 13183                .WithDescription("Build a runnable project from a WIP project")
 13184                .Produces<ProjectModel>(StatusCodes.Status200OK)
 13185                .Produces<string>(StatusCodes.Status404NotFound)
 13186                .Produces<string>(StatusCodes.Status400BadRequest);
 87
 13188            projectsApi.MapGet("/{projectId}/definitions",
 13189                async (IProjectService projectService,
 13190                        [Description("ID of project")] string projectId)
 291                    => await SaveProjectDefinitions.Handle(projectService, projectId))
 13192                .WithName("SaveProjectDefinitions")
 13193                .WithSummary("Saves the definitions of project")
 13194                .WithDescription("Saves the definitions of project")
 13195                .Produces<Stream>(StatusCodes.Status200OK, "application/octet-stream")
 13196                .Produces<string>(StatusCodes.Status404NotFound)
 13197                .Produces<string>(StatusCodes.Status400BadRequest);
 98
 13199            projectsApi.MapPost("/load-from-definitions",
 131100                async (IProjectService projectService,
 131101                [Description("File data containing project definitions")]
 131102                [FromBody] byte[] fileData)
 1103                    => await LoadProjectFromDefinitions.Handle(projectService, fileData))
 131104                .WithName("LoadProjectFromDefinitions")
 131105                .WithSummary("Loads a project from a definition JSON")
 131106                .WithDescription("Loads a project from a definition JSON")
 131107                .Produces<ProjectModel>(StatusCodes.Status201Created)
 131108                .Produces<string>(StatusCodes.Status400BadRequest);
 109
 131110            projectsApi.MapGet("/{runnableProjectId}/instances",
 131111                 async (IProjectService projectService,
 131112                        [Description("ID of runnable project")] string runnableProjectId)
 3113                    => await SaveProjectInstances.Handle(projectService, runnableProjectId))
 131114                .WithName("SaveProjectInstances")
 131115                .WithSummary("Saves the instances of runnable project")
 131116                .WithDescription("Saves the instances of a runnable project")
 131117                .Produces<Stream>(StatusCodes.Status200OK, "application/octet-stream")
 131118                .Produces<string>(StatusCodes.Status404NotFound)
 131119                .Produces<string>(StatusCodes.Status400BadRequest);
 120
 131121            projectsApi.MapPost("/{runnableProjectId}/instances",
 131122                async (IProjectService projectService,
 131123                [Description("ID of runnable project")]
 131124                string runnableProjectId,
 131125                [Description("File data containing the instances")]
 131126                [FromBody] byte[] fileData)
 3127                    => await LoadProjectInstances.Handle(projectService, runnableProjectId, fileData))
 131128                .WithName("LoadProjectInstances")
 131129                .WithSummary("Loads runnable project instances from a JSON file")
 131130                .WithDescription("Loads runnable project instances from a JSON file")
 131131                .Produces(StatusCodes.Status200OK)
 131132                .Produces<string>(StatusCodes.Status404NotFound)
 131133                .Produces<string>(StatusCodes.Status400BadRequest);
 134
 131135            projectsApi.MapDelete("/{projectId}",
 131136                async (IProjectService projectService,
 131137                [Description("ID of project")] string projectId)
 1138                    => await UnloadProject.Handle(projectService, projectId))
 131139                .WithName("UnloadProject")
 131140                .WithSummary("Unloads a project")
 131141                .WithDescription("Unloads a project")
 131142                .Produces(StatusCodes.Status204NoContent)
 131143                .Produces<string>(StatusCodes.Status404NotFound)
 131144                .Produces<string>(StatusCodes.Status400BadRequest);
 145
 131146            return app;
 131147        }
 148    }
 149}