Esempio n. 1
0
        public void CreateTest()
        {
            // Arrange
            var mockDbSet   = new Mock <DbSet <TaskItem> >();
            var mockContext = new Mock <ApplicationDbContext>();

            mockContext.Setup(item => item.Tasks).Returns(mockDbSet.Object);

            var repository = new Mock <TaskRepository>(mockContext.Object);

            // Act
            var expTaskDTO = new TaskItemDTO {
                Id = "4", Description = "ssss"
            };

            var userRep = new Mock <UserRepository>(mockContext.Object);

            var mapper = new Mock <IMapper>();

            var userService = new Mock <UserService>(userRep.Object);
            var catRep      = new Mock <CategoryRepository>(mockContext.Object);
            var taskRep     = new Mock <TaskCategoryRepository>(mockContext.Object);
            var service     = new Mock <TaskService>(repository.Object, userRep.Object, catRep.Object, taskRep.Object, mapper.Object);

            var principal = new Mock <ClaimsPrincipal>();

            principal.Setup(b => b.Identity.IsAuthenticated).Returns(true);
            principal.Setup(b => b.FindFirst(It.IsAny <string>())).Returns(new Claim(ClaimTypes.NameIdentifier, "1"));

            service.Setup(x => x.Create(principal.Object, expTaskDTO));
            service.Object.Create(principal.Object, expTaskDTO);
            service.Verify(i => i.Create(principal.Object, expTaskDTO));
        }
Esempio n. 2
0
        public IActionResult Edit(string id, [Bind("Id,Title,Description,EstimatedTime,Progress,StartDate,EndDate,CategoriesStr,Priority,Status,UserId")] TaskItemDTO taskItemDTO)
        {
            if (id != taskItemDTO.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _taskService.Update(taskItemDTO);
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!_taskService.Any(taskItemDTO.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }

                return(RedirectToAction(nameof(Active)));
            }

            ViewBag.Categories = GetUserCategories();

            return(View(taskItemDTO));
        }
Esempio n. 3
0
        public void DeleteTest()
        {
            // Arrange
            var mockDbSet   = new Mock <DbSet <TaskItem> >();
            var mockContext = new Mock <ApplicationDbContext>();

            mockContext.Setup(item => item.Tasks).Returns(mockDbSet.Object);

            var repository = new Mock <TaskRepository>(mockContext.Object);

            var userRep = new Mock <UserRepository>(mockContext.Object);

            var mapper = new Mock <IMapper>();
            var task   = new TaskItemDTO {
                Id = "1", Description = "Description", UserId = "1"
            };
            var taskItem = new TaskItem {
                Id = "1", Description = "Description", UserId = "1"
            };

            mapper.Setup(x => x.Map <TaskItem>(task)).Returns(taskItem);
            mapper.Setup(x => x.Map <TaskItemDTO>(taskItem)).Returns(task);

            var userService = new Mock <UserService>(userRep.Object);

            var catRep  = new Mock <CategoryRepository>(mockContext.Object);
            var taskRep = new Mock <TaskCategoryRepository>(mockContext.Object);
            var service = new Mock <TaskService>(repository.Object, userRep.Object, catRep.Object, taskRep.Object, mapper.Object);

            service.Setup(x => x.Delete(task.Id));
            service.Object.Delete(task.Id);

            service.Verify(i => i.Delete(task.Id));
        }
Esempio n. 4
0
        private void UpdateTaskCategories(string userId, TaskItemDTO taskItemDTO)
        {
            DeleteTaskCategoreis(taskItemDTO.Id);

            var categoriesList = taskItemDTO.CategoriesStr.Split(',').ToList();
            var categories     = SyncCategories(categoriesList, userId);

            CreateTaskCategories(categories, taskItemDTO.Id);
        }
        public void UpdateTest()
        {
            // Arrange
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "update")
                          .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
                          .Options;

            var context = new ApplicationDbContext(options);

            var repository = new TaskRepository(context);

            var userRep = new Mock <UserRepository>(context);

            var mapper = new Mock <IMapper>();
            var task   = new TaskItemDTO {
                Id = "1", Description = "Description", UserId = "1"
            };
            var taskItem = new TaskItem {
                Id = "1", Description = "Description", UserId = "1"
            };

            mapper.Setup(x => x.Map <TaskItem>(task)).Returns(taskItem);
            mapper.Setup(x => x.Map <TaskItemDTO>(taskItem)).Returns(task);
            var task1 = new TaskItemDTO {
                Id = "1", Description = "new", UserId = "1"
            };
            var taskItem1 = new TaskItem {
                Id = "1", Description = "new", UserId = "1"
            };

            mapper.Setup(x => x.Map <TaskItem>(task1)).Returns(taskItem1);
            mapper.Setup(x => x.Map <TaskItemDTO>(taskItem1)).Returns(task1);
            var principal = new Mock <ClaimsPrincipal>();

            principal.Setup(b => b.Identity.IsAuthenticated).Returns(true);
            principal.Setup(b => b.FindFirst(It.IsAny <string>())).Returns(new Claim(ClaimTypes.NameIdentifier, "1"));

            var userService = new Mock <UserService>(userRep.Object);
            //repository.Setup(i => i.FindAsNoTracking(It.IsAny<string>())).Returns(taskItem1);
            var catRep  = new Mock <CategoryRepository>(context);
            var taskRep = new Mock <TaskCategoryRepository>(context);
            var service = new Mock <TaskService>(repository, userRep.Object, catRep.Object, taskRep.Object, mapper.Object);

            var categoryService = new Mock <ICategoryService>();
            var controller      = new TaskController(service.Object, categoryService.Object);

            // Act
            controller.Create(task);
            task.Description = "new";
            var view = controller.Edit(task.Id, task);
            var str  = view.ToString();

            // Assert
            Assert.NotNull(view);
        }
Esempio n. 6
0
        public virtual void Create(ClaimsPrincipal user, TaskItemDTO taskItemDTO)
        {
            var categoriesList = taskItemDTO.CategoriesStr.Split(',').ToList();
            var categories     = SyncCategories(categoriesList, user.GetUserId());

            var taskItem = _mapper.Map <TaskItem>(taskItemDTO);

            taskItem.User = _userRepository.Find(user.GetUserId());
            _taskRepository.Create(taskItem);

            CreateTaskCategories(categories, taskItem.Id);
        }
Esempio n. 7
0
        public IActionResult Create([Bind("Id,Title,Description,EstimatedTime,Progress,StartDate,EndDate,CategoriesStr,Priority,Status")] TaskItemDTO taskItemDTO)
        {
            if (ModelState.IsValid)
            {
                _taskService.Create(User, taskItemDTO);

                return(RedirectToAction(nameof(Active)));
            }

            ViewBag.Categories = GetUserCategories();

            return(View(taskItemDTO));
        }
        public void CreateTest()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "update")
                          .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
                          .Options;
            var context = new ApplicationDbContext(options);

            var repository = new TaskRepository(context);

            var userRep = new Mock <UserRepository>(context);

            var mapper    = new Mock <IMapper>();
            var principal = new Mock <ClaimsPrincipal>();

            principal.Setup(b => b.Identity.IsAuthenticated).Returns(true);
            principal.Setup(b => b.FindFirst(It.IsAny <string>())).Returns(new Claim(ClaimTypes.NameIdentifier, "1"));

            var iden = new Mock <ClaimsIdentity>();

            iden.Setup(i => i.IsAuthenticated).Returns(true);
            iden.Setup(b => b.FindFirst(It.IsAny <string>())).Returns(new Claim(ClaimTypes.NameIdentifier, "1"));
            var task = new TaskItemDTO {
                Id = "1", Description = "Description", UserId = "1"
            };
            var taskItem = new TaskItem {
                Id = "1", Description = "Description", UserId = "1"
            };

            mapper.Setup(x => x.Map <TaskItem>(task)).Returns(taskItem);

            var userService = new Mock <UserService>(userRep.Object);

            var catRep  = new Mock <CategoryRepository>(context);
            var taskRep = new Mock <TaskCategoryRepository>(context);
            var service = new Mock <TaskService>(repository, userRep.Object, catRep.Object, taskRep.Object, mapper.Object);

            service.Setup(i => i.Create(principal.Object, task));

            var categoryService = new Mock <ICategoryService>();

            var controller = new TaskController(service.Object, categoryService.Object);

            // Act
            var view = controller.Create(task);

            // Assert
            Assert.Equal("Microsoft.AspNetCore.Mvc.RedirectToActionResult", view.ToString());
        }
Esempio n. 9
0
        public virtual void Update(TaskItemDTO taskItemDTO)
        {
            var prevTaskItem = _taskRepository.FindAsNoTracking(taskItemDTO.Id);

            UpdateTaskCategories(taskItemDTO.UserId, taskItemDTO);
            var taskItem = _mapper.Map <TaskItem>(taskItemDTO);
            var diff     = GetDiff(prevTaskItem, taskItem, taskItemDTO.CategoriesStr);

            foreach (var item in diff)
            {
                taskItem.Changes.Add(item);
            }

            _taskRepository.Update(taskItem);
        }
        public void DeleteTest()
        {
            // Arrange
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "delete2")
                          .Options;

            var context = new ApplicationDbContext(options);

            var repository = new TaskRepository(context);
            var principal  = new Mock <ClaimsPrincipal>();

            principal.Setup(b => b.Identity.IsAuthenticated).Returns(true);
            principal.Setup(b => b.FindFirst(It.IsAny <string>())).Returns(new Claim(ClaimTypes.NameIdentifier, "1"));

            var userRep           = new Mock <UserRepository>(context);
            var categoryRep       = new Mock <CategoryRepository>(context);
            var taskCategoriesRep = new Mock <TaskCategoryRepository>(context);

            var mapper = new Mock <IMapper>();
            var task   = new TaskItemDTO {
                Id = "1", Description = "Description", UserId = "1"
            };
            var taskItem = new TaskItem {
                Id = "1", Description = "Description", UserId = "1"
            };

            mapper.Setup(x => x.Map <TaskItem>(task)).Returns(taskItem);
            mapper.Setup(x => x.Map <TaskItemDTO>(taskItem)).Returns(task);

            var userService     = new Mock <UserService>(userRep.Object);
            var categoryService = new Mock <ICategoryService>();

            var catRep  = new Mock <CategoryRepository>(context);
            var taskRep = new Mock <TaskCategoryRepository>(context);
            var service = new Mock <TaskService>(repository, userRep.Object, catRep.Object, taskRep.Object, mapper.Object);

            var controller = new TaskController(service.Object, categoryService.Object);

            // Act
            controller.Create(task);
            controller.DeleteConfirmed("1");

            // Assert
            Assert.Equal(0, context.Tasks.Count());
        }
Esempio n. 11
0
 public static TaskItem ToTask(this TaskItemDTO taskDto)
 {
     return(new TaskItem
     {
         Id = taskDto.Id,
         Title = taskDto.Title,
         Description = taskDto.Description,
         EstimatedTime = taskDto.EstimatedTime,
         Progress = taskDto.Progress,
         StartDate = taskDto.StartDate,
         EndDate = taskDto.EndDate,
         Priority = taskDto.Priority,
         Status = taskDto.Status,
         Changes = taskDto.Changes,
         UserId = taskDto.UserId,
     });
 }
Esempio n. 12
0
        public void UpdateTest()
        {
            // Arrange
            var mockDbSet   = new Mock <DbSet <TaskItem> >();
            var mockContext = new Mock <ApplicationDbContext>();

            mockContext.Setup(item => item.Tasks).Returns(mockDbSet.Object);

            var repository = new Mock <TaskRepository>(mockContext.Object);

            var userRep = new Mock <UserRepository>(mockContext.Object);

            var mapper = new Mock <IMapper>();
            var task   = new TaskItemDTO {
                Id = "1", Description = "Description", UserId = "1"
            };
            var taskItem = new TaskItem {
                Id = "1", Description = "Description", UserId = "1"
            };

            mapper.Setup(x => x.Map <TaskItem>(task)).Returns(taskItem);
            mapper.Setup(x => x.Map <TaskItemDTO>(taskItem)).Returns(task);

            repository.Setup(i => i.FindAsNoTracking(It.IsAny <string>())).Returns(taskItem);

            var userService = new Mock <UserService>(userRep.Object);

            var catRep  = new Mock <CategoryRepository>(mockContext.Object);
            var taskRep = new Mock <TaskCategoryRepository>(mockContext.Object);
            var service = new Mock <TaskService>(repository.Object, userRep.Object, catRep.Object, taskRep.Object, mapper.Object);
            var cp      = new Mock <ClaimsPrincipal>();

            cp.Setup(m => m.HasClaim(It.IsAny <string>(), It.IsAny <string>())).Returns(true);

            var mockMyImplementation = new Mock <IdentityExtension>();

            IdentityExtensions.Implementation = mockMyImplementation.Object;
            mockMyImplementation.Setup(m => m.GetUserId(cp.Object)).Returns("1");
            // Act
            service.Setup(i => i.Create(cp.Object, task));
            service.Object.Create(cp.Object, task);
            service.Setup(i => i.Update(task));
            service.Object.Update(task);
            // Assert
            service.Verify(i => i.Update(task));
        }
Esempio n. 13
0
        public CreateTaskOutput Execute(CreateTaskInput input)
        {
            if (input is null)
            {
                throw new ArgumentNullException(nameof(input));
            }

            if (input.IsValid())
            {
                //create new Domain TaskItem from the supplied input data
                TaskItem newTask = InputToTaskItem(input);

                if (taskManager.Add(newTask))
                {
                    ITaskItemRepository taskItemRepo = taskItemRepositoryFactory.New();

                    //Create a TaskItemDAL to save to the database
                    TaskItemDAL taskItemDAL = TaskItemAndInputToDAL(newTask, input);

                    //add the new TaskItemDAL to the database
                    if (taskItemRepo.Add(taskItemDAL))
                    {
                        //save the changed make to the TaskItemRepository
                        if (taskItemRepo.Save())
                        {
                            //create DTO to return as Output data
                            TaskItemDTO taskItemDTO = InputToTaskItemDTO(input);

                            //fill output data and return
                            return(new CreateTaskOutput {
                                Success = true, TaskItemDTO = taskItemDTO
                            });
                        }
                        else
                        {
                            //failed to save state of repository
                            //remove taskItem from domain TaskManager
                            if (!taskManager.Remove(newTask))
                            {
                                //TaskItem could not be removed. we're now screwed . . .
                                //TODO: decide what to do here
                            }

                            return(new CreateTaskOutput {
                                Success = false, Error = "Unable to save the new Task."
                            });
                        }
                    }
                    else
                    {
                        //failed to save task to repository
                        //remove taskItem from domain TaskManager
                        if (!taskManager.Remove(newTask))
                        {
                            //TaskItem could not be removed. we're now screwed . . .
                            //TODO: decide what to do here
                        }

                        return(new CreateTaskOutput {
                            Success = false, Error = "Unable to save the new Task."
                        });
                    }
                }
                else
                {
                    //unable to add new TaskItem to domain TaskManager
                    return(new CreateTaskOutput {
                        Success = false, Error = "Unable to process the new Task."
                    });
                }
            }
            else
            {
                //Input is not valid
                return(new CreateTaskOutput {
                    Success = false, Error = input.GetErrorMessage()
                });
            }
        }
Esempio n. 14
0
        private TaskService SetUpService()
        {
            var list    = GetTestList().AsQueryable();
            var mockSet = new Mock <DbSet <TaskItem> >();

            mockSet.As <IQueryable <TaskItem> >().Setup(m => m.Provider).Returns(list.Provider);
            mockSet.As <IQueryable <TaskItem> >().Setup(m => m.Expression).Returns(list.Expression);
            mockSet.As <IQueryable <TaskItem> >().Setup(m => m.ElementType).Returns(list.ElementType);
            mockSet.As <IQueryable <TaskItem> >().Setup(m => m.GetEnumerator()).Returns(list.GetEnumerator());

            var mockContext = new Mock <ApplicationDbContext>();

            mockContext.Setup(item => item.Tasks).Returns(mockSet.Object);

            var repository = new TaskRepository(mockContext.Object);

            var userRep = new Mock <UserRepository>(mockContext.Object);

            var mapper = new Mock <IMapper>();
            var task   = new TaskItemDTO {
                Id = "1", Description = "aaaa", Status = Status.Active, Priority = Priority.Critical, Categories = new List <TaskCategories>()
                {
                    new TaskCategories {
                        Category = new CategoryItem {
                            Name = "Work", Id = "1"
                        }
                    }
                }, UserId = "1"
            };
            var taskItem = new TaskItem {
                Id = "1", Description = "aaaa", Status = Status.Active, Priority = Priority.Critical, Categories = new List <TaskCategories>()
                {
                    new TaskCategories {
                        Category = new CategoryItem {
                            Name = "Work", Id = "1"
                        }
                    }
                }, UserId = "1"
            };

            mapper.Setup(x => x.Map <TaskItemDTO>(taskItem)).Returns(task);
            var task1 = new TaskItemDTO {
                Id = "1", Description = "bbbb", Status = Status.Active, Priority = Priority.Critical, Categories = new List <TaskCategories>()
                {
                    new TaskCategories {
                        Category = new CategoryItem {
                            Name = "Work", Id = "1"
                        }
                    }
                }, UserId = "1"
            };
            var taskItem1 = new TaskItem {
                Id = "1", Description = "bbbb", Status = Status.Active, Priority = Priority.Critical, Categories = new List <TaskCategories>()
                {
                    new TaskCategories {
                        Category = new CategoryItem {
                            Name = "Work", Id = "1"
                        }
                    }
                }, UserId = "1"
            };

            mapper.Setup(x => x.Map <TaskItemDTO>(taskItem1)).Returns(task1);
            var task2 = new TaskItemDTO {
                Id = "1", Description = "cccc", Status = Status.Closed, Priority = Priority.Critical, Categories = new List <TaskCategories>()
                {
                    new TaskCategories {
                        Category = new CategoryItem {
                            Name = "Work", Id = "1"
                        }
                    }
                }, UserId = "1"
            };
            var taskItem2 = new TaskItem {
                Id = "1", Description = "cccc", Status = Status.Closed, Priority = Priority.Critical, Categories = new List <TaskCategories>()
                {
                    new TaskCategories {
                        Category = new CategoryItem {
                            Name = "Work", Id = "1"
                        }
                    }
                }, UserId = "1"
            };

            mapper.Setup(x => x.Map <TaskItemDTO>(taskItem2)).Returns(task2);

            var userService = new Mock <UserService>(userRep.Object);

            var catRep  = new Mock <CategoryRepository>(mockContext.Object);
            var taskRep = new Mock <TaskCategoryRepository>(mockContext.Object);
            var service = new TaskService(repository, userRep.Object, catRep.Object, taskRep.Object, mapper.Object);

            return(service);
        }
Esempio n. 15
0
        /// <summary>
        /// Extracts TaskItem input data from a IAddTaskView and creates a new TaskItem for the
        /// application.
        /// </summary>
        /// <param name="view">
        /// Where new TaskItem info was inputted
        /// </param>
        public void CreateTask(IAddTaskView view)
        {
            //map the view's notification frequency type string to an enum value
            NotificationFrequencyType notificationFrequencyType =
                frequenctTypeStrMap.Where(x => x.Value == view.FrequencyType).First().Key;

            //create input for use-case from data of the view
            CreateTaskInput input = new CreateTaskInput {
                Title       = view.Title,
                Description = view.Description,
                StartTime   = view.StartTime,
                R           = view.Color.R,
                G           = view.Color.G,
                B           = view.Color.B,
                NotificationFrequencyType   = notificationFrequencyType,
                CustomNotificationFrequency = view.CustomFrequency
            };

            //create UseCase instance and assign input structure to its input port
            var uc = taskSchedulerApplication.NewCreateTaskUseCase();
            //run the use case


            CreateTaskOutput output = uc.Execute(input);

            if (output.Success)
            {
                //get the taskItemDTO returned creatd by the executed usecase
                TaskItemDTO taskDTO = output.TaskItemDTO;

                //get a string representation of the taskDTO's notification frequency type
                string frequencyTypeStr = frequenctTypeStrMap[taskDTO.NotificationFrequencyType];

                //convert the taskDTO's rgb color to a Windows brush
                SolidColorBrush colorBrush = new SolidColorBrush(Windows.UI.Color.FromArgb(255, taskDTO.R, taskDTO.G, taskDTO.B));

                //create task item model from taskDTO
                TaskItemModel newTaskItemModel = new TaskItemModel()
                {
                    Id                    = taskDTO.Id,
                    Title                 = taskDTO.Title,
                    Description           = taskDTO.Description,
                    StartTime             = taskDTO.StartTime,
                    FrequencyType         = frequencyTypeStr,
                    NotificationFrequency = taskDTO.CustomNotificationFrequency,
                    Color                 = colorBrush
                };

                //fire the TaskCreated event
                OnTaskCreated(newTaskItemModel);

                //clear the views input fields and close it
                view.ClearFields();
                view.CloseSelf();
            }
            else
            {
                //transfer the use-cases error to the view
                view.ApplicationErrorMessage = output.Error;
                view.ApplicationError        = true;
            }
        }