public void Handle_Throw_A_ValidationException_When_No_Group_Found()
        {
            // Arrange
            var sut = new AddPersonCommandHandler(_PersonManagerRepository.Object, _unitOfWork.Object);

            // Assert
            Assert.ThrowsAsync <ValidationException>(() => sut.Handle(NewAddPersonCommand(), new CancellationToken()));
        }
        public async Task Handle_Uses_SaveAllAsync_From_IUnitOfWork_To_Save_Into_The_Database()
        {
            // Arrange
            _PersonManagerRepository.Setup(r => r.GetAsync(It.IsAny <int>())).ReturnsAsync(NewGroup());
            var sut = new AddPersonCommandHandler(_PersonManagerRepository.Object, _unitOfWork.Object);
            // Act
            await sut.Handle(NewAddPersonCommand(), new CancellationToken());

            // Assert
            _unitOfWork.Verify(u => u.SaveAllAsync(), Times.Once);
        }
        public async Task Handle_Uses_GetAsync_From_IGroupRepository_To_Retrieve_The_Group_By_Id()
        {
            // Arrange
            _PersonManagerRepository.Setup(r => r.GetAsync(It.IsAny <int>())).ReturnsAsync(NewGroup());
            var sut = new AddPersonCommandHandler(_PersonManagerRepository.Object, _unitOfWork.Object);
            // Act
            await sut.Handle(NewAddPersonCommand(), new CancellationToken());

            // Assert
            _PersonManagerRepository.Verify(r => r.GetAsync(It.IsAny <int>()), Times.Once);
        }
        public async Task Handle_Uses_Update_From_IGroupRepository_To_Update_The_Group_Into_The_Context()
        {
            // Arrange
            _PersonManagerRepository.Setup(r => r.GetAsync(It.IsAny <int>())).ReturnsAsync(NewGroup());
            var sut = new AddPersonCommandHandler(_PersonManagerRepository.Object, _unitOfWork.Object);
            // Act
            await sut.Handle(NewAddPersonCommand(), new CancellationToken());

            // Assert
            _PersonManagerRepository.Verify(r =>
                                            r.Update(It.Is <Group>(g => g.Persons.Any())), Times.Once);
        }