public void Test_Post_NewProject_Valid()
        {
            // Arrange
            var newTestProject = new Models.ViewModels.Project()
            {
                ProjectId = 20, ProjectName = "Test New Project", ManagerId = Guid.NewGuid(), Priority = 20, ProjectStart = DateTime.Today
            };
            var expectedUrlPart     = "api/project";
            var supposedToBeBaseUri = "http://localhost/projectmanapi";
            var expectedCreatedUri  = string.Join("/", supposedToBeBaseUri, expectedUrlPart, newTestProject.ProjectId);

            var mockRequest = mockController.Request ?? new System.Net.Http.HttpRequestMessage();

            mockRequest.RequestUri = new Uri(string.Join("/", supposedToBeBaseUri, expectedUrlPart));
            mockRequest.Method     = System.Net.Http.HttpMethod.Post;
            mockController.Request = mockRequest;

            var expectedTestResult = new CreatedNegotiatedContentResult <Models.ViewModels.Project>(new Uri(expectedCreatedUri), newTestProject, mockController);

            mockProjectsLogic.Setup(api => api.CreateProject(newTestProject)).Returns(newTestProject);

            // Act
            var actualResult     = mockController.Post(newTestProject);
            var actualProjData   = ((CreatedNegotiatedContentResult <Models.ViewModels.Project>)actualResult).Content;
            var actualCreatedUri = ((CreatedNegotiatedContentResult <Models.ViewModels.Project>)actualResult).Location.ToString();

            // Assert
            Assert.IsNotNull(actualResult);
            Assert.IsInstanceOf(typeof(CreatedNegotiatedContentResult <Models.ViewModels.Project>), actualResult);
            Assert.AreEqual(newTestProject, actualProjData);
            Assert.IsNotEmpty(actualCreatedUri);
            Assert.AreEqual(expectedCreatedUri, actualCreatedUri);
            Assert.IsTrue(actualCreatedUri.Contains(expectedUrlPart));
        }
        public void Test_For_Update_Project_Returns_True(int projectIdToUpdate, bool expectedResult)
        {
            // Arrange
            var projectToUpdate = new Models.ViewModels.Project()
            {
                ProjectId = projectIdToUpdate, ProjectName = "TestProject-10", ManagerId = Guid.NewGuid(), ManagerName = "TestUser5", Priority = 10
            };

            Models.DataModels.Project projectDMObject;
            if (expectedResult)
            {
                projectDMObject = projectToUpdate.AsDataModel();
            }
            else
            {
                projectDMObject = null;
            }
            mockProjectRepository.Setup(repo => repo.GetById(projectIdToUpdate)).Returns(projectDMObject);
            mockProjectRepository.Setup(repo => repo.Update(It.IsAny <Models.DataModels.Project>())).Returns(expectedResult);

            // Act
            var actualResult = projectLogicTest.Modify(projectIdToUpdate, projectToUpdate);

            // Assert
            Assert.Equal(expectedResult, actualResult);
        }
        public void Test_Post_New_Project_InValid()
        {
            // Arrange
            var newTestProject = new Models.ViewModels.Project()
            {
                ProjectId = 25, ProjectName = "Test New Project", Priority = 20
            };
            var validationCxt       = new ValidationContext(newTestProject);
            var expectedErrMsg      = "Invalid request information. Please verify the information entered.";
            var fnMissingModelState = new ModelState();
            var mockModelErr        = new ModelError(expectedErrMsg);

            fnMissingModelState.Errors.Add(mockModelErr);
            mockController.ModelState.Add("ManagerId", fnMissingModelState);
            mockProjectsLogic.Setup(api => api.CreateProject(newTestProject));

            // Act
            var actualResult     = mockController.Post(newTestProject);
            var actualModelState = ((InvalidModelStateResult)actualResult).ModelState;

            // Assert
            Assert.IsNotNull(actualResult);
            Assert.Contains("ManagerId", actualModelState.Keys.ToList());
            Assert.AreEqual(fnMissingModelState, actualModelState["ManagerId"]);
            Assert.IsNotEmpty(actualModelState["ManagerId"].Errors[0].ErrorMessage);
            Assert.AreEqual(expectedErrMsg, actualModelState["ManagerId"].Errors[0].ErrorMessage);
        }
Exemplo n.º 4
0
        public void Test_Get_User_Projects()
        {
            // Arrange
            string testUserId        = "User1Test";
            var    testUserGuid      = Guid.NewGuid();
            var    mockedProjectList = new Models.ViewModels.Project[] {
                new Models.ViewModels.Project()
                {
                    ProjectId = 1, ProjectName = "TestProject-1", Priority = 5, ManagerId = testUserGuid, ManagerName = "User1Test"
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 2, ProjectName = "TestProject-2", Priority = 15, ManagerId = testUserGuid, ManagerName = "User1Test"
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 16, ProjectName = "TestProject-16", Priority = 25, ManagerId = testUserGuid, ManagerName = "User1Test"
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 20, ProjectName = "TestProject-20", Priority = 10, ManagerId = testUserGuid, ManagerName = "User1Test"
                },
            };

            mockProjectsLogic.Setup(api => api.GetUserProjects(testUserId)).Returns(mockedProjectList);

            // Act
            var actualResult = mockController.GetUserProjects(testUserId);
            var actualData   = (OkObjectResult)actualResult;

            // Assert
            Assert.Equal(StatusCodes.Status200OK, actualData.StatusCode);
            Assert.Equal(mockedProjectList.Count(), (actualData.Value as IEnumerable <Models.ViewModels.Project>).Count());
        }
        public void Test_For_Converting_AsDataModel_List()
        {
            // Arrange
            var projectsList = new Models.ViewModels.Project[] {
                new Models.ViewModels.Project()
                {
                    ProjectId = 1, ProjectName = "TestProject-1", ManagerId = Guid.NewGuid(), Priority = 10
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 2, ProjectName = "TestProject-2", ManagerId = Guid.NewGuid(), Priority = 5
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 3, ProjectName = "TestProject-3", ManagerId = Guid.NewGuid(), Priority = 15
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 4, ProjectName = "TestProject-4", ManagerId = Guid.NewGuid(), Priority = 20
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 5, ProjectName = "TestProject-5", ManagerId = Guid.NewGuid(), Priority = 30
                },
            }.AsEnumerable();

            var testDataModelList = new Models.DataModels.Project[] {
                new Models.DataModels.Project()
                {
                    ProjectId = 1, ProjectName = "As-Is-Project-1", ManagerId = Guid.NewGuid(), Priority = 1
                },
                new Models.DataModels.Project()
                {
                    ProjectId = 2, ProjectName = "As-Is-Project-2", ManagerId = Guid.NewGuid(), Priority = 2
                },
                new Models.DataModels.Project()
                {
                    ProjectId = 3, ProjectName = "As-Is-Project-3", ManagerId = Guid.NewGuid(), Priority = 3
                },
                new Models.DataModels.Project()
                {
                    ProjectId = 4, ProjectName = "As-Is-Project-4", ManagerId = Guid.NewGuid(), Priority = 4
                },
                new Models.DataModels.Project()
                {
                    ProjectId = 5, ProjectName = "As-Is-Project-5", ManagerId = Guid.NewGuid(), Priority = 5
                },
            }.AsEnumerable();

            // Act
            var actualDataModelResult = projectsList.AsDataModel(testDataModelList);

            // Assert
            Assert.Equal(projectsList.Select(t => t.ProjectName), actualDataModelResult.Select(t => t.ProjectName));
            Assert.Equal(projectsList.Select(t => t.Priority), actualDataModelResult.Select(t => t.Priority));
        }
Exemplo n.º 6
0
        public static Models.DataModels.Project AsDataModel(this Models.ViewModels.Project projectData, Models.DataModels.Project projectDataModel = null)
        {
            var config = new MapperConfiguration(cfg => {
                cfg.CreateMap <Models.ViewModels.Project, Models.DataModels.Project>();
            });

            if (projectDataModel == null)
            {
                projectDataModel = config.CreateMapper().Map <Models.ViewModels.Project, Models.DataModels.Project>(projectData);
            }
            else
            {
                projectDataModel = config.CreateMapper().Map(projectData, projectDataModel);
            }
            return(projectDataModel);
        }
        public void Test_Put_Project_Not_Found(int index, string ProjecttNameToUpdate)
        {
            // Arrange
            var projToUpdate = new Models.ViewModels.Project {
                ProjectId = index, ProjectName = ProjecttNameToUpdate, ManagerId = Guid.NewGuid(), Priority = 5
            };

            projToUpdate.ProjectName = ProjecttNameToUpdate;
            mockProjectsLogic.Setup(api => api.Modify(projToUpdate.ProjectId, projToUpdate)).Returns(false);

            // Act
            var actualResult   = mockController.Put(projToUpdate.ProjectId, projToUpdate);
            var actualUserData = (NotFoundResult)actualResult;

            // Assert
            Assert.IsNotNull(actualResult);
            Assert.IsInstanceOf(typeof(NotFoundResult), actualUserData);
        }
        public void Test_For_Delete_Project(int projectIdToDelete, bool expectedResult)
        {
            // Arrange
            var projectToDelete = new Models.ViewModels.Project()
            {
                ProjectId = projectIdToDelete, ProjectName = "TestProject-25", ManagerId = Guid.NewGuid(), ManagerName = "TestUser15", Priority = 20
            };
            var projectDataModel = expectedResult ? projectToDelete.AsDataModel() : null;

            mockProjectRepository.Setup(repo => repo.GetById(projectIdToDelete)).Returns(projectDataModel);
            mockProjectRepository.Setup(repo => repo.Delete(projectDataModel)).Returns(expectedResult);

            // Act
            var actualResult = projectLogicTest.Remove(projectIdToDelete);

            // Assert
            Assert.Equal(expectedResult, actualResult);
        }
        public void Test_For_CreateProject()
        {
            // Arrange
            var newProjectViewModel = new Models.ViewModels.Project()
            {
                ProjectId = 1, ProjectName = "TestProject-1", ManagerId = Guid.NewGuid(), ManagerName = "TestUser", Priority = 10
            };
            var newProjectDataModel = newProjectViewModel.AsDataModel();

            mockProjectRepository.Setup(repo => repo.Create(It.IsAny <Models.DataModels.Project>())).Returns(newProjectDataModel);

            // Act
            var actualResponse = projectLogicTest.CreateProject(newProjectViewModel);

            // Assert
            Assert.NotNull(actualResponse);
            Assert.Equal(newProjectViewModel.ProjectName, actualResponse.ProjectName);
        }
        public void Test_For_End_Project(int projectIdToEnd, bool expectedResult)
        {
            // Arrange
            var projectToEnd = new Models.ViewModels.Project()
            {
                ProjectId = projectIdToEnd, ProjectName = "TestProject-XXX", ManagerId = Guid.NewGuid(), Priority = 20
            };
            var projectDataModel = expectedResult ? projectToEnd.AsDataModel() : null;

            mockProjectRepository.Setup(repo => repo.GetById(projectIdToEnd)).Returns(projectDataModel);
            mockProjectRepository.Setup(repo => repo.Update(It.IsAny <Models.DataModels.Project>())).Returns(expectedResult);

            // Act
            var actualResult = projectLogicTest.EndProject(projectIdToEnd);

            // Assert
            Assert.Equal(expectedResult, actualResult);
        }
        public void Test_GetProject_By_Id()
        {
            // Arrange
            int projectIdToGet = 10;
            var projectToGet   = new Models.ViewModels.Project()
            {
                ProjectId = projectIdToGet, ProjectName = "TestProject-10", ManagerId = Guid.NewGuid(), ManagerName = "", Priority = 10
            };
            var getProjectDataModel = projectToGet.AsDataModel();

            mockProjectRepository.Setup(repo => repo.GetById(projectIdToGet)).Returns(getProjectDataModel);

            // Act
            var actualResult = projectLogicTest.GetProject(projectIdToGet);

            // Assert
            Assert.NotNull(actualResult);
            Assert.Equal(projectToGet.ProjectName, actualResult.ProjectName);
        }
Exemplo n.º 12
0
        //[TestCase(Description = "Create a new Project", TestName = "Test for Create Project returns Valid result")]
        public void Test_Post_NewProject_Valid()
        {
            // Arrange
            var newTestProject = new Models.ViewModels.Project()
            {
                ProjectId = 20, ProjectName = "Test New Project", ManagerId = Guid.NewGuid(), Priority = 20, ProjectStart = DateTime.Today
            };
            var expectedTestResult = new CreatedResult(string.Concat("/", newTestProject.ProjectId), newTestProject);

            mockProjectsLogic.Setup(api => api.CreateProject(newTestProject)).Returns(newTestProject);

            // Act
            var actualResult   = mockController.Post(newTestProject);
            var actualProjData = ((CreatedResult)actualResult).Value as Models.ViewModels.Project;

            // Assert
            Assert.NotNull(actualResult);
            Assert.IsType <CreatedResult>(actualResult);
            Assert.Equal(newTestProject, actualProjData);
        }
        public void Test_Post_New_Project_For_Exception()
        {
            // Arrange
            var newTestProject = new Models.ViewModels.Project()
            {
                ProjectId = 5, ProjectName = "Test New Project", ManagerId = Guid.NewGuid(), Priority = 20, ProjectStart = DateTime.Today
            };
            var expectedErrMsg = "Test Exception raised";

            mockProjectsLogic.Setup(api => api.CreateProject(newTestProject)).Throws(new Exception(expectedErrMsg));

            // Act
            var actualResult = mockController.Post(newTestProject);
            var actualData   = ((ExceptionResult)actualResult).Exception;

            // Assert
            Assert.IsNotNull(actualResult);
            Assert.IsInstanceOf(typeof(Exception), actualData);
            Assert.AreEqual(actualData.Message, expectedErrMsg);
        }
Exemplo n.º 14
0
        //[TestCase(Description = "Create a new Project", TestName = "Test Create Project throws Exception")]
        public void Test_Post_New_Project_For_Exception()
        {
            // Arrange
            var newTestProject = new Models.ViewModels.Project()
            {
                ProjectId = 5, ProjectName = "Test New Project", ManagerId = Guid.NewGuid(),
                Priority  = 20, ProjectStart = DateTime.Today
            };
            var expectedErrMsg = "Test Exception raised";

            mockProjectsLogic.Setup(api => api.CreateProject(newTestProject)).Throws(new Exception(expectedErrMsg));

            // Act
            var actualResult = mockController.Post(newTestProject);
            var actualData   = ((ObjectResult)actualResult);

            // Assert
            Assert.NotNull(actualResult);
            Assert.Equal(StatusCodes.Status500InternalServerError, actualData.StatusCode);
            Assert.Equal(actualData.Value, expectedErrMsg);
        }
        public void Test_For_Search_Projects(string searchText, bool exactMatch)
        {
            // Arrange
            var projectsList = new Models.ViewModels.Project[] {
                new Models.ViewModels.Project()
                {
                    ProjectId = 1, ProjectName = "TestProject-1", ManagerId = Guid.NewGuid(), Priority = 10
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 2, ProjectName = "TestProject-2", ManagerId = Guid.NewGuid(), Priority = 5
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 3, ProjectName = "TestProject-3", ManagerId = Guid.NewGuid(), Priority = 15
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 4, ProjectName = "TestProject-4", ManagerId = Guid.NewGuid(), Priority = 20
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 5, ProjectName = "TestProject-5", ManagerId = Guid.NewGuid(), Priority = 30
                },
            }.AsEnumerable();

            if (exactMatch)
            {
                projectsList = projectsList.Where(p => p.ProjectName.Contains(searchText));
            }

            mockProjectRepository.Setup(repo => repo.Search(It.IsAny <System.Linq.Expressions.Expression <Func <Models.DataModels.Project, bool> > >())).Returns(projectsList.AsDataModel());
            // Act
            var actualResult = projectLogicTest.Search(searchText, exactMatch);

            // Assert
            Assert.NotNull(actualResult);
            Assert.Equal(projectsList.Count(), actualResult.Count());
        }
Exemplo n.º 16
0
        //[TestCase(Description = "Create a new Project", TestName = "Test Create Invalid Project returns BadRequest result")]
        public void Test_Post_New_Project_InValid()
        {
            // Arrange
            var newTestProject = new Models.ViewModels.Project()
            {
                ProjectId = 25, ProjectName = "Test New Project", Priority = 20
            };
            var expectedErrMsg = "Invalid request information. Please verify the information entered.";

            mockController.ModelState.AddModelError("ManagerId", expectedErrMsg);
            //.AddModelError("ManagerId", expectedErrMsg);
            mockProjectsLogic.Setup(api => api.CreateProject(newTestProject));

            // Act
            var actualResult     = mockController.Post(newTestProject);
            var actualData       = (BadRequestObjectResult)actualResult;
            var actualModelState = (SerializableError)actualData.Value;

            // Assert
            Assert.NotNull(actualResult);
            Assert.Equal(StatusCodes.Status400BadRequest, actualData.StatusCode);
            Assert.Contains("ManagerId", actualModelState.Keys);
            Assert.Contains(expectedErrMsg, (actualModelState["ManagerId"] as string[])[0]);
        }
        public void Test_For_GetAllProjects()
        {
            // Arrange
            var projectsList = new Models.ViewModels.Project[] {
                new Models.ViewModels.Project()
                {
                    ProjectId = 1, ProjectName = "TestProject-1", ManagerId = Guid.NewGuid(), Priority = 10
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 2, ProjectName = "TestProject-2", ManagerId = Guid.NewGuid(), Priority = 5
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 3, ProjectName = "TestProject-3", ManagerId = Guid.NewGuid(), Priority = 15
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 4, ProjectName = "TestProject-4", ManagerId = Guid.NewGuid(), Priority = 20
                },
                new Models.ViewModels.Project()
                {
                    ProjectId = 5, ProjectName = "TestProject-5", ManagerId = Guid.NewGuid(), Priority = 30
                },
            }.AsEnumerable();
            var projectsListDataModel = projectsList.AsDataModel();

            mockProjectRepository.Setup(repo => repo.GetAll()).Returns(projectsListDataModel);

            // Act
            var actualResult = projectLogicTest.GetAllProjects();

            // Assert
            Assert.NotNull(actualResult);
            Assert.Equal(projectsList.Count(), actualResult.Count());
        }