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); }
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)); }
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); }
//[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); }
//[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()); }
//[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()); }