public async Task <IResponse <ITasksGroup> > RemoveAsync(string id) { ITasksGroup groupToRemove = await mTasksGroupRepository.FindAsync(id).ConfigureAwait(false); if (groupToRemove == null) { return(new FailResponse <ITasksGroup>($"Entity group {id} not found. No deletion performed")); } if (groupToRemove.Size > 0) { StringBuilder idsInGroup = new StringBuilder(); groupToRemove.GetAllTasks().Select(task => task.ID).ToList().ForEach(id => idsInGroup.Append(id).Append(", ")); return(new FailResponse <ITasksGroup>(groupToRemove, $"Entity group {id} cannot be deleted. Please move or remove" + $" the next work tasks ids: {idsInGroup}")); } try { await mTasksGroupRepository.RemoveAsync(groupToRemove).ConfigureAwait(false); return(new SuccessResponse <ITasksGroup>(groupToRemove)); } catch (Exception ex) { return(new FailResponse <ITasksGroup>($"An error occurred when removing tasks group id {id}: {ex.Message}")); } }
public async Task SaveTaskAsync_ValidWorkTaskToAdd_SuccessResponseReturnedAndSavePerformed() { IWorkTask validWorkTask = A.Fake <IWorkTask>(); validWorkTask.GroupName = "groupName"; validWorkTask.Description = "validDescription"; ITasksGroup tasksGroup = mTasksGroupFactory.CreateGroup("bla"); tasksGroup.SetGroupName(validWorkTask.GroupName); IDbRepository <ITasksGroup> dbRepository = A.Fake <IDbRepository <ITasksGroup> >(); A.CallTo(() => dbRepository.ListAsync()).Returns(new List <ITasksGroup>() { tasksGroup }); TasksGroupService tasksGroupService = new TasksGroupService(dbRepository, mTasksGroupFactory, NullLogger <TasksGroupService> .Instance); IResponse <IWorkTask> response = await tasksGroupService.SaveTaskAsync(validWorkTask.GroupName, validWorkTask.Description) .ConfigureAwait(false); Assert.True(response.IsSuccess); Assert.Equal(tasksGroup.GetAllTasks().First(), response.ResponseObject); A.CallTo(() => dbRepository.UpdateAsync(A <ITasksGroup> .Ignored)).MustHaveHappenedOnceExactly(); }
public async Task SaveTaskAsync_DescriptionExistsInTheSameGroup_SaveNotPerformed() { IWorkTask workTask = A.Fake <IWorkTask>(); workTask.GroupName = "groupName"; workTask.Description = "description"; IWorkTask workTaskWithSameDescription = A.Fake <IWorkTask>(); workTask.GroupName = workTask.GroupName; workTask.Description = workTask.Description; ITasksGroup tasksGroup = A.Fake <ITasksGroup>(); tasksGroup.SetGroupName(workTask.GroupName); A.CallTo(() => tasksGroup.GetAllTasks()).Returns(new List <IWorkTask> { workTask }); IDbRepository <ITasksGroup> dbRepository = A.Fake <IDbRepository <ITasksGroup> >(); A.CallTo(() => dbRepository.ListAsync()).Returns(new List <ITasksGroup>() { tasksGroup }); TasksGroupService tasksGroupService = new TasksGroupService(dbRepository, mTasksGroupFactory, NullLogger <TasksGroupService> .Instance); await tasksGroupService.SaveTaskAsync(workTask.GroupName, workTask.Description).ConfigureAwait(false); A.CallTo(() => dbRepository.UpdateAsync(A <ITasksGroup> .Ignored)).MustNotHaveHappened(); }
public async Task SaveTaskAsync_DescriptionExistsInTheSameGroup_FailResponseReturned() { IWorkTask workTask = A.Fake <IWorkTask>(); workTask.GroupName = "groupName"; workTask.Description = "description"; IWorkTask workTaskWithSameDescription = A.Fake <IWorkTask>(); workTask.GroupName = workTask.GroupName; workTask.Description = workTask.Description; ITasksGroup tasksGroup = A.Fake <ITasksGroup>(); tasksGroup.SetGroupName(workTask.GroupName); A.CallTo(() => tasksGroup.GetAllTasks()).Returns(new List <IWorkTask> { workTask }); IDbRepository <ITasksGroup> dbRepository = A.Fake <IDbRepository <ITasksGroup> >(); A.CallTo(() => dbRepository.ListAsync()).Returns(new List <ITasksGroup>() { tasksGroup }); TasksGroupService tasksGroupService = new TasksGroupService(dbRepository, mTasksGroupFactory, NullLogger <TasksGroupService> .Instance); IResponse <IWorkTask> response = await tasksGroupService.SaveTaskAsync(workTask.GroupName, workTask.Description).ConfigureAwait(false); Assert.False(response.IsSuccess); Assert.Null(response.ResponseObject); }
private Task UpdateGroupNamesForAllChildren(ITasksGroup tasksGroup) { foreach (IWorkTask workTaskChild in tasksGroup.GetAllTasks()) { mLogger.LogDebug($"Updating task's group name from {workTaskChild.GroupName} to {tasksGroup.Name}"); workTaskChild.GroupName = tasksGroup.Name; } return(Task.CompletedTask); }
private bool ValidateUniqueTaskDescription(ITasksGroup tasksGroup, string workTaskDescription) { foreach (IWorkTask workTask in tasksGroup.GetAllTasks()) { if (workTask.Description.Equals(workTaskDescription)) { return(false); } } return(true); }
public async Task <IEnumerable <WorkTaskResource> > ListTasksOfSpecificGroupAsync(string groupNameOrId) { IEnumerable <WorkTaskResource> workTaskResources = new List <WorkTaskResource>(); if (string.IsNullOrEmpty(groupNameOrId)) { mLogger.LogWarning($"{nameof(groupNameOrId)} is null or empty"); return(workTaskResources); } ITasksGroup group = await GetSpecificGroup(groupNameOrId).ConfigureAwait(false); if (group == null) { mLogger.LogDebug($"Could not find tasks of group {groupNameOrId}"); return(workTaskResources); } workTaskResources = mMapper.Map <IEnumerable <IWorkTask>, IEnumerable <WorkTaskResource> >(group.GetAllTasks()); mLogger.LogDebug($"Found {workTaskResources.Count()} work tasks"); return(workTaskResources); }
private bool IsWorkTaskDescriptionAlreadyExist(ITasksGroup tasksGroup, string workTaskDescription) { return(tasksGroup.GetAllTasks().Any( task => task.Description.Equals(workTaskDescription, StringComparison.OrdinalIgnoreCase))); }