public async void CreateProject_BadRequest_NullPost()
        {
            _sut.ModelState.AddModelError("x", "Test Error");
            ProjectViewModel project = null;

            IActionResult result = await _sut.CreateProject(project);

            ObjectResult badReqResult = Assert.IsType <BadRequestObjectResult>(result);

            Assert.Equal($"Please provide details to create a project.", badReqResult.Value);
            // Ensure CreateProjectViaManager is never run since it should no be reached
            _mockManager.Verify(x => x.CreateProject(
                                    It.IsAny <ProjectViewModel>()), Times.Never);
        }
Exemple #2
0
            public async Task When_the_project_is_valid_is_should_return_a_CreatedResult_with_the_new_project_id()
            {
                var projectManagerService = new Mock <IProjectManagerService>();

                projectManagerService.Setup(pms => pms.Handle(It.IsAny <CreateProjectCommand>()))
                .Returns(Task.FromResult(CommandResult.Success(Guid.Parse("11111111-1111-1111-1111-111111111111"))));

                var subject = new ProjectsController(
                    projectManagerService.Object,
                    Mock.Of <IProjectRepository>(),
                    Mock.Of <ILogger <ProjectsController> >());

                subject.ControllerContext = new ControllerContext
                {
                    HttpContext = new DefaultHttpContext()
                };

                subject.ControllerContext.HttpContext.Request.Scheme = "http";
                subject.ControllerContext.HttpContext.Request.Host   = HostString.FromUriComponent("localhost:5000");
                subject.ControllerContext.HttpContext.Request.Path   = "/";

                var result =
                    Assert.IsType <CreatedResult>(
                        await subject.CreateProject(new CreateProjectDto("Valid project", "Desc", "VP", "Kanban")));

                Assert.EndsWith("/11111111-1111-1111-1111-111111111111", result.Location);
            }
Exemple #3
0
        public async Task CreateProject_CallWithMockedIProject_ThrowsAndCatchesProjectException()
        {
            // Arrange
            var mock        = new Mock <IProject>();
            var projectGuid = Guid.Empty;
            var projectDto  = new ProjectDto()
            {
                Id   = projectGuid,
                Name = "Project"
            };

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

            mock.Setup(project => project.CreateProjectAsync(projectDto)).ThrowsAsync(ex);
            var projectsController = new ProjectsController(mock.Object);

            // Act
            var result = await projectsController.CreateProject(projectDto);

            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);
        }
Exemple #4
0
        public async void PostExpected201WithLocationHeader()
        {
            IProjectService    prjServiceFake  = A.Fake <IProjectService>();
            ISdlcSystemService sdlcServiceFake = A.Fake <ISdlcSystemService>();
            IMapper            mapServiceFake  = A.Fake <IMapper>();
            List <project>     prjList         = new List <project> {
                CreateDefault()
            };

            var modelDTO = new ProjectDTO
            {
                external_id = "EXTERNALID",
                name        = "name"
            };

            modelDTO.sdlcSystem = new sdlcSystem
            {
                id = 1
            };

            A.CallTo(() => prjServiceFake.GetAllProjects()).Returns(prjList);

            ProjectsController sut = CreateSut(prjServiceFake, mapServiceFake, sdlcServiceFake);

            sut.ControllerContext             = new Microsoft.AspNetCore.Mvc.ControllerContext();
            sut.ControllerContext.HttpContext = new DefaultHttpContext();
            sut.ControllerContext.HttpContext.Request.Scheme = "http";
            sut.ControllerContext.HttpContext.Request.Host   = new HostString("localhost");
            //Act
            var result = await sut.CreateProject(modelDTO);

            //Assert
            Assert.IsType <CreatedResult>(result);
        }
Exemple #5
0
            public async Task When_the_new_project_is_null_it_should_return_a_BadRequest()
            {
                var subject = new ProjectsController(
                    Mock.Of <IProjectManagerService>(),
                    Mock.Of <IProjectRepository>(),
                    Mock.Of <ILogger <ProjectsController> >());

                Assert.IsType <BadRequestResult>(await subject.CreateProject(null));
            }
        public void CreateProjectReturnsBadRequestOnInvalidData()
        {
            var projectData = new ProjectCreateUpdateRequestDto();
            ProjectsController controller = this.ProjectsControllerInstance;

            controller.ModelState.AddModelError("error", "error");

            IActionResult result = controller.CreateProject(projectData);

            Assert.IsType <BadRequestObjectResult>(result);
        }
        private HttpResponseMessage ProcessNewProject(Template newProjTemplate)
        {
            var ctrler = new ProjectsController
            {
                Configuration = new HttpConfiguration(),
                Request       = new HttpRequestMessage()
            };
            var dataFromBody = new WriteDocument {
                Template = newProjTemplate
            };

            return(ctrler.CreateProject(dataFromBody).Result);
        }
Exemple #8
0
        public async void PostPayloadNotContainingSystem()
        {
            //Arrange & Act
            ProjectsController projController = new ProjectsController(_projectSvc, _mapper, _sdlcSvc);

            var model = new ProjectDTO();

            model.external_id = "EXTERNAL-ID";
            var result = await projController.CreateProject(model);

            var okResult = result as Microsoft.AspNetCore.Mvc.StatusCodeResult;

            //Assert
            Assert.Equal(StatusCodes.Status400BadRequest, okResult.StatusCode);
        }
Exemple #9
0
            public async Task When_the_project_breaks_domain_rules_it_should_return_a_BadRequest()
            {
                var projectManagerService = new Mock <IProjectManagerService>();

                projectManagerService.Setup(pms => pms.Handle(It.IsAny <CreateProjectCommand>()))
                .Returns(Task.FromResult(CommandResult.Fail("business rule broken")));

                var subject = new ProjectsController(
                    projectManagerService.Object,
                    Mock.Of <IProjectRepository>(),
                    Mock.Of <ILogger <ProjectsController> >());

                var result = Assert.IsType <BadRequestObjectResult>(await subject.CreateProject(new CreateProjectDto("whatever", "description", "we", "kanban")));

                Assert.Equal("business rule broken", ((string[])result.Value)[0]);
            }
Exemple #10
0
        public async Task CreateProject()
        {
            //Arrange
            var newDTO  = CreateDefaultDTO();
            var newproj = CreateDefault();

            var newMap = _mapper.Map(newproj, newDTO);

            // Act
            var result = await _contr.CreateProject(newMap);

            //Assert

            var empList = result as CreatedResult;

            Assert.IsType <CreatedResult>(result);

            Assert.NotNull(empList);
        }
        public void TestValidProjectCreateReturnsOk()
        {
            var user = new User
            {
                UserId   = Guid.NewGuid(),
                UserName = "******",
                Email    = "*****@*****.**"
            };
            var project = new ProjectCreate
            {
                ProjectName        = "testName",
                ProjectDescription = "a test description",
                ProjectExternalUrl = "https://github.com/foo/bar"
            };

            SetControllerHttpContext(user);
            var actual = _controller.CreateProject(project);

            Assert.IsInstanceOfType(actual, typeof(OkResult));
        }
Exemple #12
0
            public async Task When_the_project_abbreviation_is_already_taken_it_should_return_a_BadRequest()
            {
                var projectRepository = new Mock <IProjectRepository>();

                projectRepository.Setup(pr => pr.GetProjectByAbbreviation("prj-1"))
                .Returns(new ProjectReadModel
                {
                    ProjectId = Guid.Parse("11111111-1111-1111-1111-111111111111")
                });

                var subject = new ProjectsController(
                    Mock.Of <IProjectManagerService>(),
                    projectRepository.Object,
                    Mock.Of <ILogger <ProjectsController> >());

                var result = Assert.IsType <BadRequestObjectResult>(
                    await subject.CreateProject(
                        new CreateProjectDto("Project1", "Desc", "prj-1", "Kanban")
                        ));

                Assert.Contains("project abbreviation", (string)result.Value);
            }
Exemple #13
0
        public async Task CreateProject_CallWithMockedIProject_ReturnsOkObjectResult()
        {
            // Arrange
            var mock        = new Mock <IProject>();
            var projectGuid = Guid.Empty;
            var projectDto  = new ProjectDto()
            {
                Id   = projectGuid,
                Name = "Project"
            };

            mock.Setup(project => project.CreateProjectAsync(projectDto)).ReturnsAsync(projectDto);
            var projectsController = new ProjectsController(mock.Object);

            // Act
            var result = await projectsController.CreateProject(projectDto);

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

            // Assert
            Assert.IsType <OkObjectResult>(result);
            Assert.IsType <ResponseDto <ProjectDto> >(response.Value);
        }
        public async Task TestCreateProjectValidInput()
        {
            var projectDto = new ProjectDto
            {
                Title          = "Title1",
                Notes          = "Note1",
                Outcome        = "Outcome1",
                StartDate      = new DateTime(),
                EndDate        = new DateTime(),
                CourseIds      = Enumerable.Empty <int>(),
                OrganisationId = 1,
                ContactId      = 1
            };

            var organisation = new Organisation
            {
                Id = 1,
            };

            Contact contact = new Contact
            {
                Id             = 1,
                Name           = "Test Name",
                Email          = "*****@*****.**",
                PhoneNumber    = "111",
                OrganisationId = 1,
                Projects       = new List <Project>
                {
                    new Project {
                        Id             = 1,
                        Title          = "HCI Extreme",
                        Notes          = "Notes Test",
                        Outcome        = "Outcome Test",
                        StartDate      = new DateTime(),
                        EndDate        = new DateTime(),
                        ProjectCourses = Enumerable.Empty <ProjectCourse>().ToList(),
                        Organisation   = organisation
                    }
                }
            };

            _mockProjectRepository.Setup(x => x.InsertAsync(It.IsAny <Project>())).Returns(Task.FromResult(1));
            _mockOrganisationRepository.Setup(x => x.GetByIdAsync(1)).ReturnsAsync(organisation);
            _mockContactRepository.Setup(x => x.GetByIdAsync(1)).Returns(Task.FromResult(contact));

            // Act
            ActionResult <CreatedDto> response = await _projectsController.CreateProject(projectDto);

            // Assert
            Assert.IsInstanceOf <CreatedResult>(response.Result);
            CreatedResult createdResult = response.Result as CreatedResult;

            Assert.AreEqual(201, createdResult.StatusCode);

            CreatedDto value = createdResult.Value.As <CreatedDto>();

            Assert.IsNotNull(value);
            Assert.AreEqual(0, value.Id);

            _mockProjectRepository.Verify(x => x.InsertAsync(It.IsAny <Project>()), Times.Once);
        }