public async Task EmpresaCommandHandler_Handle_AprovarSolicitacaoLocacaoCommand_NaoDeveDispararEventoDeSolicitacaoAprovada() { //Arrange AprovarSolicitacaoLocacaoCommand aprovarSolicitacaoLocacaoCommand = _applicationFixtures.EmpresaCommandHandler.CriarAprovarSolicitacaoLocacaoCommandValido(); //Act await _empresaCommandHandler.Handle(aprovarSolicitacaoLocacaoCommand, ApplicationFixtures.CancellationToken); //Assert _applicationFixtures.Mocker.Verify <IMediatrHandler>(m => m.Notify(It.IsAny <DomainNotification>()), Times.AtLeastOnce()); }
public async Task EmpresaCommandHandler_Handle_AprovarSolicitacaoLocacaoCommand_DeveDispararEventoDeSolicitacaoAprovada() { //Arrange Quadra quadra = _domainFixtures.Quadra.CriarQuadraValida(); Empresa empresa = _domainFixtures.Empresa.CriarEmpresaValida(); empresa.AdicionarQuadra(quadra); AprovarSolicitacaoLocacaoCommand aprovarSolicitacaoLocacaoCommand = _applicationFixtures.EmpresaCommandHandler.CriarAprovarSolicitacaoLocacaoCommandValidoComQuadra(quadra.Id); _applicationFixtures.Mocker.GetMock <IEmpresaRepository>().Setup(r => r.ObterEmpresaComQuadrasPorId(aprovarSolicitacaoLocacaoCommand.EmpresaId)).ReturnsAsync(empresa); //Act await _empresaCommandHandler.Handle(aprovarSolicitacaoLocacaoCommand, ApplicationFixtures.CancellationToken); //Assert _applicationFixtures.Mocker.Verify <IMediatrHandler>(m => m.Publish(It.IsAny <Event>()), Times.Once); }
public async Task <ValidationResult> Handle(AprovarSolicitacaoLocacaoCommand message, CancellationToken cancellationToken) { if (!message.IsValid()) { return(message.ValidationResult); } Empresa empresa = await _empresaRepository.ObterEmpresaComQuadrasPorId(message.EmpresaId); if (empresa is null) { return(await NotifyAndReturn("Empresa não encontrada.")); } Quadra quadraQueSeraLocada = empresa.Quadras.SingleOrDefault(q => q.Id.Equals(message.QuadraId)); if (quadraQueSeraLocada is null) { return(await NotifyAndReturn($"Quadra não encontrada na empresa '{empresa.RazaoSocial}'.")); } return(await PublishEvents(new SolicitacaoLocacaoAprovadaEvent(message.SolicitacaoId, empresa.Id, message.QuadraId, new InformacoesTempoQuadra(quadraQueSeraLocada.ValorPorTempoLocado, quadraQueSeraLocada.TempoLocacao)))); }