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);
        }
Пример #14
0
        public async Task Update(int id, Models.TaskDetailModel entity)
        {
            _taskManagerDbContext.Tasks.Update(entity);

            await _taskManagerDbContext.SaveChangesAsync();
        }
Пример #15
0
        public async Task <int> Insert(Models.TaskDetailModel entity)
        {
            _taskManagerDbContext.Tasks.Add(entity);

            return(await _taskManagerDbContext.SaveChangesAsync());
        }
Пример #16
0
        public async Task Delete(Models.TaskDetailModel entity)
        {
            _taskManagerDbContext.Tasks.Remove(entity);

            await _taskManagerDbContext.SaveChangesAsync();
        }