public void ShouldUpdateToDoItemWithoutState()
        {
            var updateToDoItemInput = new UpdateToDoItemInput
            {
                AssignedUserId = Guid.NewGuid().ToString(),
                State          = null
            };
            var updatedToDoItem = this.CreateToDoItem();

            var assignedUser = this.CreateUser();

            using (this.Repository.Record())
            {
                Expect.Call(() => this.Logger.Info(Arg.Text.Contains("Updating ToDoItem for input:")));
                Expect.Call(this.DbContextScopeFactory.Create());
                Expect.Call(this.ToDoItemRepository.Get(0)).Constraints(Is.Equal(updateToDoItemInput.ToDoItemId)).Return(updatedToDoItem);
                Expect.Call(this.UserRepository.Get(string.Empty)).Constraints(Is.Equal(updateToDoItemInput.AssignedUserId)).Return(assignedUser);
                Expect.Call(this.Mapper.Map <ToDoItemState>(null)).Constraints(Is.Anything()).Repeat.Never();
                Expect.Call(this.ToDoItemRepository.Update(null)).Constraints(Is.Equal(updatedToDoItem)).Return(updatedToDoItem);
                Expect.Call(() => this.Logger.Info(Arg.Text.Contains("Updated ToDoItem for input:")));
            }

            using (this.Repository.Playback())
            {
                var toDoItemApplicationService = new ToDoItemApplicationService(
                    this.ToDoItemRepository,
                    this.UserRepository,
                    this.DbContextScopeFactory,
                    this.Mapper,
                    this.Logger);
                toDoItemApplicationService.UpdateToDoItem(updateToDoItemInput);

                Assert.AreEqual(assignedUser, updatedToDoItem.AssignedUser);
            }
        }
        public void ShouldUpdateToDoItemWithoutUser()
        {
            var updateToDoItemInput = new UpdateToDoItemInput
            {
                AssignedUserId = null,
                State          = (Perfectial.Application.Model.ToDoItemState) this.enumGenerator.Next(0, Enum.GetValues(typeof(Perfectial.Application.Model.ToDoItemState)).Length)
            };
            var updatedToDoItem = this.CreateToDoItem();

            var state = (ToDoItemState)this.enumGenerator.Next(0, Enum.GetValues(typeof(ToDoItemState)).Length);

            using (this.Repository.Record())
            {
                Expect.Call(() => this.Logger.Info(Arg.Text.Contains("Updating ToDoItem for input:")));
                Expect.Call(this.DbContextScopeFactory.Create());
                Expect.Call(this.ToDoItemRepository.Get(0)).Constraints(Is.Equal(updateToDoItemInput.ToDoItemId)).Return(updatedToDoItem);
                Expect.Call(this.UserRepository.Get(string.Empty)).Constraints(Is.Anything()).Repeat.Never();
                Expect.Call(this.Mapper.Map <ToDoItemState>(null)).Constraints(Is.Equal(updateToDoItemInput.State.Value)).Return(state);
                Expect.Call(this.ToDoItemRepository.Update(null)).Constraints(Is.Equal(updatedToDoItem)).Return(updatedToDoItem);
                Expect.Call(() => this.Logger.Info(Arg.Text.Contains("Updated ToDoItem for input:")));
            }

            using (this.Repository.Playback())
            {
                var toDoItemApplicationService = new ToDoItemApplicationService(
                    this.ToDoItemRepository,
                    this.UserRepository,
                    this.DbContextScopeFactory,
                    this.Mapper,
                    this.Logger);
                toDoItemApplicationService.UpdateToDoItem(updateToDoItemInput);

                Assert.AreEqual(state, updatedToDoItem.State);
            }
        }
示例#3
0
        public async Task <UpdateToDoItemPayload> UpdateToDoItemAsync(
            UpdateToDoItemInput input,
            [ScopedService] ApplicationDbContext context,
            CancellationToken cancellationToken)
        {
            var item = await context.ToDoItems.FindAsync(new object[] { input.Id }, cancellationToken);

            item.Content = input.Content.HasValue ? input.Content.Value : item.Content;
            item.Status  = input.Status.HasValue ? (input.Status.Value ?? item.Status) : item.Status;

            await context.SaveChangesAsync(cancellationToken);

            return(new UpdateToDoItemPayload(item));
        }
示例#4
0
        public void UpdateToDoItem(UpdateToDoItemInput input)
        {
            this.Logger.Info($"Updating ToDoItem for input: {input}");

            using (var dbContextScope = this.DbContextScopeFactory.Create())
            {
                var toDoItem = this.toDoItemRepository.Get(input.ToDoItemId);
                if (input.State.HasValue)
                {
                    toDoItem.State = this.Mapper.Map <ToDoItemState>(input.State.Value);
                }

                if (!string.IsNullOrEmpty(input.AssignedUserId))
                {
                    toDoItem.AssignedUser = this.userRepository.Get(input.AssignedUserId);
                }

                this.toDoItemRepository.Update(toDoItem);

                dbContextScope.SaveChanges();
            }

            this.Logger.Info($"Updated ToDoItem for input: {input}");
        }