@Test public void deveInformarSeEhPossivelReservarAQuantidadeDeIngressosDentroDeQualquerDasSessoes() { Espetaculo ivete = new Espetaculo(); ivete.getSessoes().add(sessaoComIngressosSobrando(1)); ivete.getSessoes().add(sessaoComIngressosSobrando(3)); ivete.getSessoes().add(sessaoComIngressosSobrando(2)); assertTrue(ivete.Vagas(5)); }
@Test public void DeveInformarSeNaoEhPossivelReservarAQuantidadeDeIngressosDentroDeQualquerDasSessoesComUmMinimoPorSessao() { Espetaculo ivete = new Espetaculo(); ivete.getSessoes().add(sessaoComIngressosSobrando(2)); ivete.getSessoes().add(sessaoComIngressosSobrando(2)); ivete.getSessoes().add(sessaoComIngressosSobrando(2)); assertFalse(ivete.Vagas(5, 3)); }
@Test public void naoDeveCriarSessaoParaEspetaculoComDataInicioMaiorQueFimSemanal() { LocalDate inicio = new LocalDate(); LocalDate fim = new LocalDate().minusDays(20); LocalTime hora = new LocalTime(); Periodicidade semanal = Periodicidade.SEMANAL; Espetaculo show = new Espetaculo(); List<Sessao> sessoes = show.criaSessoes(inicio, fim, hora, semanal); Assert.assertEquals(0, sessoes.size()); }
@Test public void naoDeveCriarSessaoParaEspetaculoComDataInicioMaiorQueFimDiario() { LocalDate inicio = new LocalDate(); LocalDate fim = new LocalDate().minusDays(5); LocalTime hora = new LocalTime(); Periodicidade diaria = Periodicidade.DIARIA; Espetaculo show = new Espetaculo(); List<Sessao> sessoes = show.criaSessoes(inicio, fim, hora, diaria); Assert.assertEquals(0, sessoes.size()); }
@Test public void deveCriarSessoesDiariasComExemploEnunciado() { Espetaculo espetaculo = new Espetaculo(); LocalDate inicio = new LocalDate(2010, 1, 1); LocalDate fim = new LocalDate(2010, 1, 3); LocalTime horario = new LocalTime(17); Periodicidade periodicidade = Periodicidade.DIARIA; List<Sessao> sessoes = espetaculo.criaSessoes(inicio, fim, horario, periodicidade); Assert.assertEquals(3, sessoes.size()); }
@Test public void deveCriarSessoesSemanais() { Espetaculo espetaculo = new Espetaculo(); LocalDate inicio = new LocalDate(2015, 1, 9); LocalDate fim = new LocalDate(2015, 1, 23); LocalTime horario = new LocalTime(17); Periodicidade periodicidade = Periodicidade.SEMANAL; List<Sessao> sessoes = espetaculo.criaSessoes(inicio, fim, horario, periodicidade); Assert.assertEquals(3, sessoes.size()); }
@Test public void deveCriar1SessaoParaEspetaculoComDatasIguaisEPeriodicidadeSemanal() { LocalDate inicio = new LocalDate(); LocalDate fim = new LocalDate(); LocalTime hora = new LocalTime(); Periodicidade semanal = Periodicidade.SEMANAL; Espetaculo show = new Espetaculo(); List<Sessao> sessoes = show.criaSessoes(inicio, fim, hora, semanal); Assert.assertEquals(1, sessoes.size()); Assert.assertEquals(sessoes.get(0).getEspetaculo(), show); Assert.assertEquals(sessoes.get(0).getInicio(), inicio.toDateTime(hora)); }
@Post("/espetaculos") public void adiciona(Espetaculo espetaculo) { // aqui eh onde fazemos as varias validacoes // se nao tiver nome, avisa o usuario // se nao tiver descricao, avisa o usuario if (Strings.isNullOrEmpty(espetaculo.getNome())) { validator.add(new SimpleMessage("", "Nome do espetáculo não pode estar em branco")); } if (Strings.isNullOrEmpty(espetaculo.getDescricao())) { validator.add(new SimpleMessage("", "Descrição do espetáculo não pode estar em branco")); } validator.onErrorRedirectTo(this).lista(); agenda.cadastra(espetaculo); result.redirectTo(this).lista(); }
@Test public void deveCriarSessaoParaEspetaculoComDatasDiferentessEPeriodicidadeSemanal() { LocalDate inicio = new LocalDate(); LocalDate fim = inicio.plusDays(10); LocalTime hora = new LocalTime(); Periodicidade semanal = Periodicidade.SEMANAL; Espetaculo show = new Espetaculo(); List<Sessao> sessoes = show.criaSessoes(inicio, fim, hora, semanal); Assert.assertEquals(2, sessoes.size()); Assert.assertEquals(sessoes.get(0).getEspetaculo(), show); for (int i = 0; i < sessoes.size(); i++) { Assert.assertEquals(sessoes.get(i).getInicio(), inicio.plusWeeks(i).toDateTime(hora)); } }
@Post("/espetaculo/{espetaculoId}/sessoes") public void cadastraSessoes( Long espetaculoId, LocalDate inicio, LocalDate fim, LocalTime horario, Periodicidade periodicidade) { Espetaculo espetaculo = carregaEspetaculo(espetaculoId); // aqui faz a magica! // cria sessoes baseado no periodo de inicio e fim passados pelo usuario List<Sessao> sessoes = espetaculo.criaSessoes(inicio, fim, horario, periodicidade); agenda.agende(sessoes); result.include("message", sessoes.size() + " sessões criadas com sucesso"); result.redirectTo(this).lista(); }