public void Dado_dois_ingressos_no_valor_de_30_o_total_deve_ser_60() { var sessao = new Sessao(DateTime.Now.AddDays(15), _espetaculo, _sala, 30M); var reserva = new Reserva(_cliente, sessao); var poltronas = sessao.Poltrona.ToList(); var primeiroIngresso = new Ingresso("Gabriel", poltronas[0]); var segundoIngresso = new Ingresso("Jose", poltronas[1]); reserva.AdicionarIngresso(primeiroIngresso); reserva.AdicionarIngresso(segundoIngresso); Assert.AreEqual(reserva.Total(), 60); }
public void Dado_um_poltrona_ja_ocupada_o_ingresso_nao_pode_ser_adicionada() { var sessao = new Sessao(DateTime.Now.AddDays(15), _espetaculo, _sala, 30M); var reserva = new Reserva(_cliente, sessao); var poltronas = sessao.Poltrona.ToList(); var ingresso = new Ingresso("Gabriel", poltronas[0]); reserva.AdicionarIngresso(ingresso); var mesmoIngresso = new Ingresso("Jose", poltronas[0]); reserva.AdicionarIngresso(mesmoIngresso); Assert.AreEqual(reserva.Ingressos.Count(), 1); Assert.IsTrue(reserva.Invalid); }
public void Dado_um_ingresso_adicionado_o_status_deve_ser_AguardandoPagamento() { var sessao = new Sessao(DateTime.Now.AddDays(15), _espetaculo, _sala, 30M); var reserva = new Reserva(_cliente, sessao); var poltronas = sessao.Poltrona.ToList(); var ingresso = new Ingresso("Gabriel", poltronas[0]); reserva.AdicionarIngresso(ingresso); Assert.AreEqual(reserva.Status, EStatusReserva.AguardandoPagamento); }
public void Dado_um_CancelReservaCommand_valido_a_reserva_deve_ser_confirmada() { var cliente = _clientRepository.GetById(Guid.NewGuid()); var sessao = _sessaoRepository.GetById(Guid.NewGuid()); var reserva = new Reserva(cliente, sessao); reserva.AdicionarIngresso(new Ingresso("Jose", sessao.Poltrona[0])); _reservaRepository.Add(reserva); var command = new CancelReservaCommand(reserva.Id); var commandResult = (GenericCommandResult)_handler.Handle(command); Assert.IsTrue(commandResult.Sucess); Assert.AreEqual(_reservaRepository.GetByCliente(cliente.Id).Count(), 0); }
//Cadastrar a reserva não quer dizer que ela foi comprada // Tera um handler para confirmar reserva // Ai sim é persistido, mas para outras pessoas, a reserva ja foi feita public ICommandResult Handle(CreateReservaCommand command) { command.Validate(); if (command.Invalid) { return(new GenericCommandResult(false, "Dados incorretos", command.Notifications)); } var cliente = _clienteRepository.GetById(command.ClienteId); var sessao = _sessaoRepository.GetById(command.SessaoId); var poltronas = _sessaoRepository.GetPoltronasByIds(sessao.Id, ExtractGuids.Extract(command)); //Verificar se poltronas estão ocupadas if (IsPoltronasOcuped(poltronas)) { return(new GenericCommandResult(false, "Algumas poltronas selecionadas já estão ocupadas", poltronas)); } var reserva = new Reserva(cliente, sessao); var ingressos = CreateIngressos(command.Ingressos, poltronas); reserva.AdicionarIngresso(ingressos); AddNotifications(reserva); if (Invalid) { return(new GenericCommandResult(false, "Problema ao gerar reserva", this.Notifications)); } _reservaRepository.Add(reserva); return(new GenericCommandResult(true, "Reserva cadastrado, aguardando pagamento", reserva)); //Verifica o estado das poltronas //Utilizar Dapper ou buscar estas informações na tela }