public async Task DeleteSalarioCommand()
        {
            var commandBuilder = new DeleteSalarioCommandBuilder()
                                 .ComId(new Guid("32cd6820-0da5-4c5f-94d1-e73b01f05de2"))
                                 .ComStatus(false)
                                 .Instanciar();

            commandBuilder.IsValid();

            var salarioRetorno = new Salario(decimal.One, decimal.One);

            _mocker.GetMock <IMediator>().Setup(x => x.Publish(It.IsAny <DomainNotification>(), default)).Returns(Task.CompletedTask);
            _mocker.GetMock <ISalarioRepository>().Setup(x => x.GetByIdAsync(commandBuilder.Id, default)).ReturnsAsync(salarioRetorno);
            _mocker.GetMock <ISalarioRepository>().Setup(x => x.DeleteAsync(It.IsAny <Salario>(), default))
            .Returns(Task.CompletedTask)
            .Callback <Salario, CancellationToken>((objeto, token) =>
            {
                objeto.Id.Should().NotBeEmpty();
                objeto.Id.Should().Be(commandBuilder.Id);
                objeto.Pagamento.Should().Be(salarioRetorno.Pagamento);
                objeto.Adiantamento.Should().Be(salarioRetorno.Adiantamento);
                objeto.Status.Should().BeFalse();
            });

            var resultado = await _commandHandler.Handle(commandBuilder, default);

            resultado.Should().BeTrue();
            _mocker.Verify <IMediator>(x => x.Publish(It.IsAny <DomainNotification>(), default), Times.Never);
            _mocker.Verify <ISalarioRepository>(x => x.GetByIdAsync(It.IsAny <Guid>(), default), Times.Once);
            _mocker.Verify <ISalarioRepository>(x => x.DeleteAsync(It.IsAny <Salario>(), default), Times.Once);
        }
        public async Task DeleteSalarioCommandValidar()
        {
            var commandBuilder = new DeleteSalarioCommandBuilder().Instanciar();

            commandBuilder.IsValid();

            _mocker.GetMock <IMediator>().Setup(x => x.Publish(It.IsAny <DomainNotification>(), default))
            .Returns(Task.CompletedTask)
            .Callback <DomainNotification, CancellationToken>((notification, token) =>
            {
                notification.Should().NotBeNull();
                commandBuilder.ValidationResult.Errors
                .FirstOrDefault(x => x.PropertyName == notification.Key && x.ErrorMessage == notification.Value)
                .Should()
                .NotBeNull();
                token.IsCancellationRequested.Should().BeFalse();
            });

            var resultado = await _commandHandler.Handle(commandBuilder, default);

            resultado.Should().BeFalse();
            commandBuilder.ValidationResult.Errors.Should().HaveCount(1);
            commandBuilder.IsValid().Should().BeFalse();
            _mocker.Verify <IMediator>(x => x.Publish(It.IsAny <DomainNotification>(), default), Times.Once);
            _mocker.Verify <ISalarioRepository>(x => x.GetByIdAsync(It.IsAny <Guid>(), default), Times.Never);
            _mocker.Verify <ISalarioRepository>(x => x.DeleteAsync(It.IsAny <Salario>(), default), Times.Never);
        }
        public void NaoDeveApresentarMensagemValidacaoSalario()
        {
            var command = new DeleteSalarioCommandBuilder()
                          .ComId(Guid.NewGuid())
                          .ComStatus(false)
                          .Instanciar();

            command.IsValid();

            command.ValidationResult.Errors.Should().HaveCount(0);
            command.ValidationResult.IsValid.Should().BeTrue();
        }
        public void DeveValidarIdSalario()
        {
            var command = new DeleteSalarioCommandBuilder()
                          .ComStatus(false)
                          .Instanciar();

            command.IsValid();

            command.ValidationResult.IsValid.Should().BeFalse();
            command.ValidationResult.Errors.Should().HaveCount(1);
            command.ValidationResult.Errors[0].ErrorMessage.Should().Be("Id salário inválido");
        }
        public void DeveValidarIdEStatusSalario()
        {
            var command = new DeleteSalarioCommandBuilder()
                          .ComStatus(true)
                          .Instanciar();

            command.IsValid();

            command.ValidationResult.IsValid.Should().BeFalse();
            command.ValidationResult.Errors.Should().HaveCount(2);
            command.ValidationResult.Errors[0].ErrorMessage.Should().Be("Id salário inválido");
            command.ValidationResult.Errors[1].ErrorMessage.Should().Be("Campo status inválido para exclusão");
        }