Пример #1
0
        public async void ShouldCreateNewTaskWhenValid()
        {
            // Arrange

            var validator  = new Mock <IDeleteTodoTaskValidator>();
            var repository = new Mock <ITodoTaskEntityRepository>();

            validator.Setup(m => m.ValidateAndThrow(It.IsAny <TodoTaskEntity>()));

            var task = new TodoTaskEntity();

            repository.Setup(m => m.GetById(It.IsAny <string>())).ReturnsAsync(task);
            repository.Setup(m => m.DeleteAsync(It.IsAny <TodoTaskEntity>()));

            var handler = new DeleteCommandHandler(
                repository.Object, validator.Object);

            //  Act

            await handler.HandleAsync("afab15bc-d16b-49b8-a072-6bc1bc0d5156");

            // Assert

            validator.Verify(m => m.ValidateAndThrow(It.IsAny <TodoTaskEntity>()), Times.Once);
            repository.Verify(
                m => m.GetById(It.Is <string>(p => p == "afab15bc-d16b-49b8-a072-6bc1bc0d5156")), Times.Once);
            repository.Verify(m => m.DeleteAsync(It.Is <TodoTaskEntity>(p => p == task)), Times.Once);
        }
Пример #2
0
        public async Task <TodoTask> AddTaskAsync(
            TodoTaskForm form,
            CancellationToken ct)
        {
            var categoryEntity = await _dbContext.Categories.FirstOrDefaultAsync(x => x.Id == form.CategoryId);

            if (categoryEntity == null)
            {
                throw new ArgumentException("Given category doesn't exist.");
            }

            var newTask = new TodoTaskEntity
            {
                Id         = new Guid(),
                Name       = form.Name,
                IsDone     = false,
                CategoryId = form.CategoryId,
                CreatedAt  = DateTimeOffset.UtcNow
            };

            _dbContext.Tasks.Add(newTask);

            var result = await _dbContext.SaveChangesAsync(ct);

            newTask.Category = categoryEntity;

            if (result >= 1)
            {
                return(Mapper.Map <TodoTask>(newTask));
            }
            return(null);
        }
Пример #3
0
        public async Task <string> CreateAsync(TodoTaskEntity entity)
        {
            entity.Id = await generator.NextAsync();

            await store.Set(tasks => tasks.Append(entity));

            return(entity.Id);
        }
Пример #4
0
 private static void AssertEqualToEntity(TodoTaskDto model, TodoTaskEntity entity)
 {
     Assert.NotNull(model);
     Assert.NotNull(entity);
     Assert.Equal(entity.Id, model.Id);
     Assert.Equal(entity.Name, model.Name);
     Assert.Equal(entity.Priority, model.Priority);
     Assert.Equal((int)entity.Status, (int)model.Status);
 }
Пример #5
0
 public static TodoTask ToModel(this TodoTaskEntity entity)
 {
     return(new TodoTask
     {
         Id = entity.Id,
         Name = entity.Name,
         Priority = entity.Priority,
         Status = Enum.Parse <TodoTaskStatus>(entity.Status.ToString())
     });
 }
Пример #6
0
        public void ShouldMapTodoTaskEntityName(string model, string expected)
        {
            // Arrange & Act

            var result = new TodoTaskEntity
            {
                Id       = Guid.NewGuid().ToString(),
                Name     = model,
                Priority = 1,
                Status   = TodoTaskEntityStatus.NotStarted
            }.ToModel();

            // Assert

            Assert.Equal(expected, result.Name);
        }
Пример #7
0
        public void ShouldMapTodoTaskEntityId(string model, string expected)
        {
            // Arrange & Act

            var result = new TodoTaskEntity
            {
                Id       = model,
                Name     = "Make a toast",
                Priority = 1,
                Status   = TodoTaskEntityStatus.NotStarted
            }.ToModel();

            // Assert

            Assert.Equal(expected, result.Id);
        }
Пример #8
0
        public void ShouldMapTodoTaskEntityStatus(TodoTaskEntityStatus model, TodoTaskStatus expected)
        {
            // Arrange & Act

            var result = new TodoTaskEntity
            {
                Id       = Guid.NewGuid().ToString(),
                Name     = "Make a toast",
                Priority = 3,
                Status   = model
            }.ToModel();

            // Assert

            Assert.Equal(expected, result.Status);
        }
Пример #9
0
        public void ShouldMapTodoTaskEntityPriority(int model, int expected)
        {
            // Arrange & Act

            var result = new TodoTaskEntity
            {
                Id       = Guid.NewGuid().ToString(),
                Name     = "Make a toast",
                Priority = model,
                Status   = TodoTaskEntityStatus.NotStarted
            }.ToModel();

            // Assert

            Assert.Equal(expected, result.Priority);
        }
Пример #10
0
        public Task ValidateAndThrow(TodoTaskEntity context)
        {
            if (context == null)
            {
                throw new TodoListValidationException($"Task was not found");
            }

            if (string.IsNullOrEmpty(context.Id))
            {
                throw new TodoListValidationException($"{nameof(CreateTodoTaskCommand.Name)} can't be empty");
            }

            if (context.Status != TodoTaskEntityStatus.Completed)
            {
                throw new TodoListValidationException(
                          $"Can't delete task not in {TodoTaskStatus.Completed} {nameof(CreateTodoTaskCommand.Status)}");
            }

            return(Task.CompletedTask);
        }
Пример #11
0
        public async Task ShouldGetAll()
        {
            // Arrange

            var repository = new Mock <ITodoTaskEntityRepository>();

            var tasks = new TodoTaskEntity[]
            {
                new TodoTaskEntity
                {
                    Id       = "afab15bc-d16b-49b8-a072-6bc1bc0d5156",
                    Name     = "Make a toast",
                    Priority = 1,
                    Status   = TodoTaskEntityStatus.InProgress
                }
            };

            repository
            .Setup(m => m.GetAll())
            .ReturnsAsync(tasks);

            var handler = new GetAllQueryHandler(repository.Object);

            // Act

            var result = await handler.HandleAsync();

            // Result

            Assert.NotNull(result);
            Assert.Single(result);
            Assert.Equal("afab15bc-d16b-49b8-a072-6bc1bc0d5156", result.ElementAt(0).Id);
            Assert.Equal("Make a toast", result.ElementAt(0).Name);
            Assert.Equal(1, result.ElementAt(0).Priority);
            Assert.Equal(TodoTaskStatus.InProgress, result.ElementAt(0).Status);
            repository.Verify(m => m.GetAll(), Times.Once);
        }
Пример #12
0
 public async Task UpdateAsync(TodoTaskEntity entity)
 {
     await store.Set(tasks => tasks
                     .Where(task => task.Id != entity.Id)
                     .Append(entity));
 }
Пример #13
0
 public async Task DeleteAsync(TodoTaskEntity entity)
 {
     await store.Set(tasks => tasks.Where(task => task.Id != entity.Id));
 }