Exemple #1
0
        public async Task <ValidationResult> Handle(InativarEmpresaCommand message, CancellationToken cancellationToken)
        {
            if (!message.IsValid())
            {
                return(message.ValidationResult);
            }

            Usuario usuarioProprietarioEmpresa = await _repository.ObterUsuarioPorId(message.UsuarioProprietarioEmpresaId);

            if (usuarioProprietarioEmpresa is null)
            {
                return(await NotifyAndReturn("Usuário não encontrado."));
            }

            Empresa empresaParaInativar = await _repository.ObterEmpresaPorId(message.EmpresaId);

            if (empresaParaInativar is null)
            {
                return(await NotifyAndReturn("Empresa não encontrada."));
            }

            try
            {
                usuarioProprietarioEmpresa.InativarEmpresa(empresaParaInativar);
                _repository.AtualizarEmpresa(empresaParaInativar);
                _repository.AtualizarUsuario(usuarioProprietarioEmpresa);
            }
            catch (DomainException exception)
            {
                return(await NotifyAndReturn(exception.Message));
            }

            return(await SaveAndPublish(new EmpresaInativadaEvent(empresaParaInativar.Id, empresaParaInativar.UsuarioProprietarioId)));
        }
Exemple #2
0
        public async Task UsuarioCommandHandler_InativarEmpresaCommand_Handle_DeveInativarEmpresa()
        {
            //Arrange
            InativarEmpresaCommand inativarEmpresaCommand = _applicationFixtures.UsuarioCommandHandler.CriarInvativarEmpresaCommandValido();
            Empresa empresa = _domainFixtures.Empresa.CriarEmpresaValida();
            Usuario usuario = _domainFixtures.Usuario.CriarUsuarioValido();

            usuario.AdicionarEmpresa(empresa);

            _applicationFixtures.Mocker.GetMock <IUsuarioRepository>().Setup(r => r.ObterUsuarioPorId(inativarEmpresaCommand.UsuarioProprietarioEmpresaId)).ReturnsAsync(usuario);
            _applicationFixtures.Mocker.GetMock <IUsuarioRepository>().Setup(r => r.ObterEmpresaPorId(inativarEmpresaCommand.EmpresaId)).ReturnsAsync(empresa);
            _applicationFixtures.Mocker.GetMock <IUsuarioRepository>().Setup(r => r.Commit()).ReturnsAsync(true);

            //Act
            await _usuarioCommandHandler.Handle(inativarEmpresaCommand, ApplicationFixtures.CancellationToken);

            //Assert
            empresa.Ativo.Should().BeFalse();
            _applicationFixtures.Mocker.GetMock <IUsuarioRepository>().Verify(r => r.AtualizarEmpresa(empresa), Times.Once);
            _applicationFixtures.Mocker.GetMock <IUsuarioRepository>().Verify(r => r.AtualizarUsuario(usuario), Times.Once);
            _applicationFixtures.Mocker.Verify <IMediatrHandler>(m => m.Publish(It.IsAny <Event>()), Times.Once);
        }