コード例 #1
0
        public async Task PatchProject_CallWithMockedIProject_ThrowsAndCatchesProjectException()
        {
            // Arrange
            var mock        = new Mock <IProject>();
            var projectGuid = Guid.NewGuid();
            var projectDto  = new DetailedProjectDto()
            {
                Id   = projectGuid,
                Name = "Project"
            };

            var jsonPatchDoc = new JsonPatchDocument();

            var message = "ExceptionThrown";
            var ex      = new ProjectException(message);

            mock.Setup(project => project.PatchProjectAsync(projectGuid, jsonPatchDoc)).ThrowsAsync(ex);
            var projectsController = new ProjectsController(mock.Object);

            // Act
            var result = await projectsController.PatchProject(projectGuid, jsonPatchDoc);

            var response     = (BadRequestObjectResult)result;
            var objectResult = (ResponseDto <ErrorDto>)response.Value;

            // Assert
            Assert.IsType <BadRequestObjectResult>(result);
            Assert.IsType <ResponseDto <ErrorDto> >(response.Value);
            Assert.Equal(message, objectResult.Data.Message);
        }
コード例 #2
0
        public async Task GetProject_CallWithMockedIProject_ReturnsOkObjectResult()
        {
            // Arrange
            var mock        = new Mock <IProject>();
            var projectGuid = Guid.NewGuid();
            var project     = new DetailedProjectDto()
            {
                Id   = projectGuid,
                Name = "Project"
            };

            mock.Setup(project => project.GetProjectAsync(projectGuid)).ReturnsAsync(project);
            var projectsController = new ProjectsController(mock.Object);

            // Act
            var result = await projectsController.GetProject(projectGuid);

            var response     = (OkObjectResult)result;
            var objectResult = (ResponseDto <DetailedProjectDto>)response.Value;

            // Assert
            Assert.IsType <OkObjectResult>(result);
            Assert.IsType <ResponseDto <DetailedProjectDto> >(response.Value);
            Assert.Equal(objectResult.Data.Id, projectGuid);
        }
コード例 #3
0
        public async Task PatchProject_CallWithMockedIProject_ReturnsOkObjectResult()
        {
            // Arrange
            var mock        = new Mock <IProject>();
            var projectGuid = Guid.NewGuid();
            var projectDto  = new DetailedProjectDto()
            {
                Id   = projectGuid,
                Name = "Project"
            };

            var jsonPatchDoc = new JsonPatchDocument();

            mock.Setup(project => project.PatchProjectAsync(projectGuid, jsonPatchDoc)).ReturnsAsync(projectDto);
            var projectsController = new ProjectsController(mock.Object);

            // Act
            var result = await projectsController.PatchProject(projectGuid, jsonPatchDoc);

            var response     = (OkObjectResult)result;
            var objectResult = (ResponseDto <DetailedProjectDto>)response.Value;

            // Assert
            Assert.IsType <OkObjectResult>(result);
            Assert.IsType <ResponseDto <DetailedProjectDto> >(response.Value);
        }
コード例 #4
0
        public async Task <DetailedProjectDto> GetProjectAsync(Guid id)
        {
            ProjectEntity project = await _projectStorage.FindAsync(m => m.Id == id);

            DetailedProjectDto detailedProjectDto = _mapper.Map <DetailedProjectDto>(project);

            return(detailedProjectDto);
        }
コード例 #5
0
        public async Task <DetailedProjectDto> PatchProjectAsync(Guid Id, JsonPatchDocument projectPatch)
        {
            ProjectEntity patchedProject = await _projectStorage.FindAsync(m => m.Id == Id);

            projectPatch.ApplyTo(patchedProject);
            await RecomputeProjectCollaboratorSuggestions(_mapper.Map <ProjectDto>(patchedProject));

            ProjectEntity updatedProject = await _projectStorage.UpdateAsync(patchedProject);

            DetailedProjectDto detailedProjectDto = _mapper.Map <DetailedProjectDto>(updatedProject);

            return(detailedProjectDto);
        }
コード例 #6
0
        public async Task <DetailedProjectDto> UpdateProjectAsync(DetailedProjectDto project)
        {
            await ValidateProject(new ProjectDto()
            {
                CommunicationPlatform = project.CommunicationPlatform
            });

            var mappedEntity = _mapper.Map <ProjectEntity>(project);

            await RecomputeProjectCollaboratorSuggestions(_mapper.Map <ProjectDto>(project));

            ProjectEntity updatedProject = await _projectStorage.UpdateAsync(mappedEntity);

            DetailedProjectDto detailedProjectDto = _mapper.Map <DetailedProjectDto>(updatedProject);

            return(detailedProjectDto);
        }
コード例 #7
0
        public async Task <IActionResult> UpdateProject([FromBody] DetailedProjectDto project)
        {
            ResponseDto <DetailedProjectDto> okResponse    = new ResponseDto <DetailedProjectDto>(true);
            ResponseDto <ErrorDto>           errorResponse = new ResponseDto <ErrorDto>(false);

            try
            {
                var updatedProject = await _project.UpdateProjectAsync(project);

                okResponse.Data = updatedProject;
            }
            catch (ProjectException e)
            {
                errorResponse.Data = new ErrorDto(e.Message);
                return(BadRequest(errorResponse));
            }

            return(Ok(okResponse));
        }