public async Task Handle_ValidCompany_ReturnsSpecyficType()
        {
            //Arrange
            var handler = new UpdateCompanyCommandHandler(_mockCompanyRepository.Object, _mapper, _logger.Object, _mockCurrentUserService.Object);

            var command = new UpdateCompanyCommand()
            {
                Id = "1", Name = "UpdateCompany"
            };

            //Act
            var result = await handler.Handle(command, CancellationToken.None);

            //Assert
            result.ShouldBeOfType <Unit>();
        }
        public void Handle_InvalidCompanyId_ThrowsNotFoundException()
        {
            //Arrange
            var handler = new UpdateCompanyCommandHandler(_mockCompanyRepository.Object, _mapper, _logger.Object, _mockCurrentUserService.Object);

            var command = new UpdateCompanyCommand()
            {
                Id = "99"
            };

            //Act
            Func <Task> func = () => handler.Handle(command, CancellationToken.None);

            //Assert
            func.ShouldThrowAsync <NotFoundException>();
        }
        public void Handle_NotOwnerUser_ThrowsForbiddenAccessException()
        {
            //Arrange
            _mockCurrentUserService.SetupGet(x => x.UserId).Returns("user2");

            var handler = new UpdateCompanyCommandHandler(_mockCompanyRepository.Object, _mapper, _logger.Object, _mockCurrentUserService.Object);

            var command = new UpdateCompanyCommand()
            {
                Id = "1"
            };

            //Act
            Func <Task> func = () => handler.Handle(command, CancellationToken.None);

            //Assert
            func.ShouldThrowAsync <ForbiddenAccessException>();
        }
        public async Task Handle_ValidCompany_UpdatedToCompanyRepository()
        {
            //Arrange
            var handler = new UpdateCompanyCommandHandler(_mockCompanyRepository.Object, _mapper, _logger.Object, _mockCurrentUserService.Object);

            var command = new UpdateCompanyCommand()
            {
                Id = "1", Name = "UpdateCompany"
            };

            //Act
            await handler.Handle(command, CancellationToken.None);

            var entityUpdated = await _mockCompanyRepository.Object.GetByIdAsync(command.Id);

            //Assert
            entityUpdated.Id.ShouldBe("1");

            entityUpdated.Name.ShouldBe("UpdateCompany");
        }