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))); }
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); }