public void Verify_IsTaskValid_ReturnFalseWhenTaskContainsChildTask() { // Arrange var mockRepository = new Mock <ITaskDetailsRepository>(); var taskManager = new TaskManager(mockRepository.Object); var taskDetail = new Models.TaskDetailModel() { Id = 1, Name = "Task 1", Priority = 20 }; var taskDetailsList = new List <Models.TaskDetailModel>() { taskDetail, new Models.TaskDetailModel() { Id = 2, Name = "Task 2 ", Priority = 20, ParentTaskId = 1 }, }; mockRepository.Setup(r => r.GetAllTasks()).Returns(Task.FromResult <IEnumerable <Models.TaskDetailModel> >(taskDetailsList)); // Act var result = taskManager.IsTaskValid(taskDetail); // Assert Assert.False(result); }
public async Task <IActionResult> Put(int id, [FromBody] TaskDetail task) { try { if (task == null || task.Id != id) { _logger.LogInformation("Provide valid task item detail"); return(BadRequest("Invalid task detail")); } if (!_taskManager.IsTaskValid(task)) { return(BadRequest("This task has active child tasks. Active child tasks has to be closed before closing parent task")); } await _taskManager.UpdateTaskDetails(id, task); _logger.LogInformation($"Updated task with id {task.Id}"); return(Ok($"{task.Name} Saved")); } catch (Exception ex) { _logger.LogError(ex.Message); return(StatusCode((int)HttpStatusCode.InternalServerError, "An exception has occured with Service, Please contact service team")); } }
public async Task Update(int id, Models.TaskDetailModel entity) { entity.ProjectDetail = null; entity.UserDetail = null; _projectManagerDbContext.Tasks.Update(entity); await _projectManagerDbContext.SaveChangesAsync(); }
public async Task <int> Insert(Models.TaskDetailModel entity) { entity.UserDetail = null; entity.ProjectDetail = null; _projectManagerDbContext.Tasks.Add(entity); return(await _projectManagerDbContext.SaveChangesAsync()); }
public async Task VerifyUpdateCalledOnce() { // Arrange var mockRepository = new Mock <ITaskDetailsRepository>(); var taskManager = new TaskManager(mockRepository.Object); var taskDetail = new Models.TaskDetailModel(); // Act await taskManager.UpdateTaskDetails(10, taskDetail); // Assert mockRepository.Verify(t => t.Update(10, taskDetail), Times.Once); }
public async Task Verify_Put_Returns_BadRequest_WhenTaskDetailIsInvalid() { // Arrange var mockManageTask = new Mock <ITaskManager>(); var taskRepository = new TaskController(mockManageTask.Object, Logger); var taskDetail = new Models.TaskDetailModel() { Id = 1001, Name = "Task 1", Priority = 10 }; // Act var statusResult = await taskRepository.Put(1002, taskDetail); // Assert Assert.NotNull(statusResult as BadRequestObjectResult); Assert.Equal("Invalid task detail", (statusResult as BadRequestObjectResult).Value); }
public async Task Verify_Post_Returns_InternalServerErrorStatus_OnException() { // Arrange var mockManageTask = new Mock <ITaskManager>(); var taskRepository = new TaskController(mockManageTask.Object, Logger); var taskDetail = new Models.TaskDetailModel() { Id = 1001, Name = "Task 1", Priority = 10 }; mockManageTask.Setup(manage => manage.AddTaskDetails(taskDetail)).Throws(new Exception()); // Act var statusResult = await taskRepository.Post(taskDetail); // Assert Assert.Equal((int)HttpStatusCode.InternalServerError, (statusResult as ObjectResult)?.StatusCode); }
public async Task Verify_Put_Returns_BadRequestWhenTaskDetailIsNotValidToClose() { // Arrange var mockManageTask = new Mock <ITaskManager>(); var taskRepository = new TaskController(mockManageTask.Object, Logger); var taskDetail = new Models.TaskDetailModel() { Id = 1001, Name = "Task 1", Priority = 10, EndTask = true }; mockManageTask.Setup(manage => manage.IsTaskValid(taskDetail)).Returns(false); // Act var statusResult = await taskRepository.Put(1001, taskDetail); // Assert Assert.NotNull(statusResult as BadRequestObjectResult); Assert.Equal("This task has active child tasks. Active child tasks has to be closed before closing parent task", (statusResult as BadRequestObjectResult).Value); }
public async Task Verify_Put_Return_OkStatusAndCheckServiceResponse() { // Arrange var mockManageTask = new Mock <ITaskManager>(); var taskRepository = new TaskController(mockManageTask.Object, Logger); var taskDetail = new Models.TaskDetailModel() { Id = 1001, Name = "Task 1", Priority = 10 }; mockManageTask.Setup(manage => manage.IsTaskValid(taskDetail)).Returns(true); mockManageTask.Setup(manage => manage.UpdateTaskDetails(1001, taskDetail)).Returns(Task.FromResult(1001)); // Act var statusResult = await taskRepository.Put(1001, taskDetail); // Assert Assert.NotNull(statusResult as OkObjectResult); Assert.Equal(Expected, (statusResult as OkObjectResult).Value); }
public async Task VerifyAddTaskDetails_Returns_OkStatusAndCheckTaskId() { // Arrange var mockManageTask = new Mock <ITaskManager>(); var taskRepository = new TaskController(mockManageTask.Object, Logger); var taskDetail = new Models.TaskDetailModel() { Id = 1001, Name = "Task 1", Priority = 10 }; mockManageTask.Setup(manage => manage.AddTaskDetails(taskDetail)).Returns(Task.FromResult(1001)); // Act var statusResult = await taskRepository.Post(taskDetail); // Assert Assert.NotNull(statusResult as OkObjectResult); Assert.Equal("Task with id 1001 created successfully", (statusResult as OkObjectResult).Value); }
public async Task <IActionResult> Post([FromBody] TaskDetail task) { try { if (task == null) { _logger.LogInformation("Invalid task item detail."); return(BadRequest()); } await _taskManager.AddTaskDetails(task); _logger.LogInformation($"Inserted task to database with id {task.Id}"); return(Ok($"Task with id {task.Id} created successfully")); } catch (Exception ex) { _logger.LogError(ex.Message); return(StatusCode((int)HttpStatusCode.InternalServerError, "An exception has occured with Service while inserting task, Please contact service team")); } }
public async Task VerifyUpdateSaveChangesCalledOnce() { // Arrange var contextOptions = new DbContextOptions <ProjectManagerDbContext>(); var mockContext = new Mock <ProjectManagerDbContext>(contextOptions); var taskRepository = new TaskDetailsRepository(mockContext.Object); var taskDetail = new Models.TaskDetailModel() { Id = 1, Name = "Task 1 ", Priority = 10 }; var mockSet = new Mock <DbSet <Models.TaskDetailModel> >(); mockContext.Setup(m => m.Tasks).Returns(mockSet.Object); // Act await taskRepository.Update(1, taskDetail); // Assert mockSet.Verify(m => m.Update(taskDetail), Times.Once); mockContext.Verify(m => m.SaveChangesAsync(System.Threading.CancellationToken.None), Times.Once); }
public async Task VerifyGetTaskDetail_Return_OkStatusAndTaskDetails() { // Arrange var mockManageTask = new Mock <ITaskManager>(); var taskRepository = new TaskController(mockManageTask.Object, Logger); var taskDetail = new Models.TaskDetailModel() { Id = 1, Name = "Task 1", Priority = 10 }; mockManageTask.Setup(manage => manage.GetTaskDetail(1)).Returns(Task.FromResult(taskDetail)); // Act var statusResult = await taskRepository.Get(1); // Assert Assert.NotNull(statusResult as OkObjectResult); var taskDetailsResult = (statusResult as OkObjectResult).Value as Models.TaskDetailModel; Assert.Equal("Task 1", taskDetailsResult?.Name); Assert.Equal(10, taskDetailsResult?.Priority); }
public async Task Update(int id, Models.TaskDetailModel entity) { _taskManagerDbContext.Tasks.Update(entity); await _taskManagerDbContext.SaveChangesAsync(); }
public async Task <int> Insert(Models.TaskDetailModel entity) { _taskManagerDbContext.Tasks.Add(entity); return(await _taskManagerDbContext.SaveChangesAsync()); }
public async Task Delete(Models.TaskDetailModel entity) { _taskManagerDbContext.Tasks.Remove(entity); await _taskManagerDbContext.SaveChangesAsync(); }