class TestComboAtividades(unittest.TestCase): def setUp(self): self.horario1 = Horario("10/11/2017 10:00") self.horario2 = self.horario1.mais("2 horas") self.horario3 = self.horario2.mais("50 minutos") self.tdd = AtividadeSimples(TipoAtividade.TUTORIAL,"Introdução à TDD",self.horario1,15.00) self.hackathon = AtividadeSimples(TipoAtividade.HACKATHON,"Soluções Inteligentes",self.horario2,50.00) self.workshop = AtividadeSimples(TipoAtividade.WORKSHOP,"Hackeando Dados Públicos",self.horario2,20.00) self.jsf = AtividadeSimples(TipoAtividade.TUTORIAL,"Java pra Web",self.horario1,10.00) self.primefaces = AtividadeSimples(TipoAtividade.PALESTRA,"Framework Web Java",self.horario2,20.00) self.junit = AtividadeSimples(TipoAtividade.WORKSHOP,"Testando aplicações Java",self.horario3,20.00) def test_deve_gerar_excecao_se_atividade_simples_adicionar_atividades(self): with self.assertRaises(TypeError): self.tdd.add(self.hackathon) def test_deve_retornar_preco_de_combo_com_logica_aplicada_aos_seus_precos(self): kit_java = KitAtividade("Kit Javeiro") for atividade in [self.jsf , self.primefaces , self.junit]: kit_java.add(atividade) preco_kit_java = kit_java.preco_total self.assertEqual(50.00,preco_kit_java) def test_misturando_atividades_simples_com_compostas_em_um_kit(self): kit_python = KitAtividade("Pythonista") kit_java = KitAtividade("Javeiro") kit_geral = KitAtividade("Melhores Práticas Dev") for atividade in [ self.tdd , self.workshop]: kit_python.add(atividade) for atividade in [self.junit , self.primefaces]: kit_java.add(atividade) for kit in [ kit_java , kit_python]: kit_geral.add(kit) kit_geral.add(self.jsf) self.assertEqual(85.00,kit_geral.preco_total)
class TestResponsavel(unittest.TestCase): def setUp(self): self.hoje = Horario() data_inicio = self.hoje.mais("1 dia") self.duracao1 = Duracao(data_inicio,durando="50 minutos") self.espaco = EspacoSimples("SALA-01",40,None) self.palestra = AtividadeSimples(TipoAtividade.PALESTRA,"Introdução à Vuejs",self.duracao1,0.0) self.palestra.definir_espaco(self.espaco) def test_deve_retornar_responsavel_da_atividade(self): marlysson = Pessoa("Marlysson",20,TipoSexo.MASCULINO) marcelo = Pessoa("Marcelo",22,TipoSexo.MASCULINO) self.palestra.add_responsavel(marlysson) self.palestra.add_responsavel(marcelo) self.assertListEqual(self.palestra.ministrantes,[marlysson,marcelo]) def test_deve_retornar_curriculo_do_responsavel_atividade(self): pessoa = Pessoa("Luciano Ramalho",50,TipoSexo.MASCULINO) curriculo = Curriculo("Python",15,"Thougthworks","") pessoa.add_curriculo(curriculo) self.palestra.add_responsavel(pessoa) self.assertEqual(self.palestra.ministrantes[0],pessoa) if __name__ == "__main__": unittest.main(verbosity=2)
class TestComboAtividades(unittest.TestCase): def setUp(self): self.horario1 = Horario("10/11/2017 10:00") self.horario2 = self.horario1.mais("2 horas") self.horario3 = self.horario2.mais("50 minutos") self.tdd = AtividadeSimples(TipoAtividade.TUTORIAL, "Introdução à TDD", self.horario1, 15.00) self.hackathon = AtividadeSimples(TipoAtividade.HACKATHON, "Soluções Inteligentes", self.horario2, 50.00) self.workshop = AtividadeSimples(TipoAtividade.WORKSHOP, "Hackeando Dados Públicos", self.horario2, 20.00) self.jsf = AtividadeSimples(TipoAtividade.TUTORIAL, "Java pra Web", self.horario1, 10.00) self.primefaces = AtividadeSimples(TipoAtividade.PALESTRA, "Framework Web Java", self.horario2, 20.00) self.junit = AtividadeSimples(TipoAtividade.WORKSHOP, "Testando aplicações Java", self.horario3, 20.00) def test_deve_gerar_excecao_se_atividade_simples_adicionar_atividades( self): with self.assertRaises(TypeError): self.tdd.add(self.hackathon) def test_deve_retornar_preco_de_combo_com_logica_aplicada_aos_seus_precos( self): kit_java = KitAtividade("Kit Javeiro") for atividade in [self.jsf, self.primefaces, self.junit]: kit_java.add(atividade) preco_kit_java = kit_java.preco_total self.assertEqual(50.00, preco_kit_java) def test_misturando_atividades_simples_com_compostas_em_um_kit(self): kit_python = KitAtividade("Pythonista") kit_java = KitAtividade("Javeiro") kit_geral = KitAtividade("Melhores Práticas Dev") for atividade in [self.tdd, self.workshop]: kit_python.add(atividade) for atividade in [self.junit, self.primefaces]: kit_java.add(atividade) for kit in [kit_java, kit_python]: kit_geral.add(kit) kit_geral.add(self.jsf) self.assertEqual(85.00, kit_geral.preco_total)
class AgendaEvento(unittest.TestCase): def setUp(self): self.local = Local("Av. Frei Serafim", "Centro", 1010, "Teresina-Pi") self.hoje = Horario() data_inicio = self.hoje.mais("1 dia") self.duracao_evento = Duracao(data_inicio, durando="3 dias") self.prazo_inscricoes = self.hoje.mais("1 dia") self.duracao1 = Duracao(data_inicio, durando="50 minutos") self.duracao2 = Duracao(self.duracao1.horario_final, durando="50 minutos") self.duracao3 = Duracao(self.duracao2.horario_final, durando="50 minutos") self.duracao4 = Duracao(self.duracao3.horario_final, durando="50 minutos") #Horario Atividades horario_tutorial = self.duracao1 horario_palestra = self.duracao2 horario_mesa_redonda = self.duracao3 horario_workshop = self.duracao4 horario_hackathon = Duracao(self.duracao4.inicio, durando="50 minutos") #Atividades self.palestra = AtividadeSimples(TipoAtividade.PALESTRA, "Lucrando com open-source", horario_palestra, 0.0) self.tutorial = AtividadeSimples(TipoAtividade.TUTORIAL, "Boas Práticas com Django", horario_tutorial, 15.00) self.mesa_redonda = AtividadeSimples(TipoAtividade.MESA_REDONDA, "Pirataria na Web", horario_mesa_redonda, 0.0) self.hackathon = AtividadeSimples(TipoAtividade.HACKATHON, "Soluções Financeiras - Nubank", horario_hackathon, 50.00) self.predio_B = EspacoComposto("Prédio B", self.local) self.andar_1 = EspacoComposto("B1", self.local) self.andar_2 = EspacoComposto("B2", self.local) self.salas = [ EspacoSimples("B" + str(num + 1) + "-01", 40, self.local) for num in range(1, 5) ] self.andar_1.add(self.salas[0]) self.andar_1.add(self.salas[1]) self.andar_2.add(self.salas[2]) self.andar_2.add(self.salas[3]) self.predio_B.add(self.andar_1) self.predio_B.add(self.andar_2) self.palestra.definir_espaco(self.salas[0]) self.tutorial.definir_espaco(self.salas[1]) self.mesa_redonda.definir_espaco(self.salas[2]) self.hackathon.definir_espaco(self.salas[3]) self.evento = Evento("Software Freedom Day", "Descrição do Evento", self.duracao_evento) self.evento.prazo_inscricoes = self.prazo_inscricoes atividades = [ self.palestra, self.tutorial, self.mesa_redonda, self.hackathon ] for atividade in atividades: self.evento.adicionar_atividade(atividade) self.evento.adicionar_espaco(self.predio_B) def test_deve_retornar_lista_de_atividades_ordenada_do_espaco_fisico_simples( self): agenda_evento = self.evento.gerar_agenda() self.assertListEqual( agenda_evento, [self.palestra, self.tutorial, self.mesa_redonda, self.hackathon]) def test_deve_retornar_lista_de_atividades_ordenada_do_espaco_fisico_composto( self): agenda_andar_2 = self.andar_2.gerar_agenda() self.assertListEqual(agenda_andar_2, [self.mesa_redonda, self.hackathon])
class TestInscricao(unittest.TestCase): def setUp(self): self.hoje = Horario() data_inicio = self.hoje.mais("1 dia") self.duracao = Duracao(data_inicio,durando="3 dias") self.prazo_inscricoes = self.hoje.mais("10 dias") self.evento = Evento("Congresso de Profissionais Web","lorem ipsum....",self.duracao) self.evento.prazo_inscricoes = self.prazo_inscricoes self.duracao1 = Duracao(data_inicio,durando="50 minutos") self.duracao2 = Duracao(self.duracao1.horario_final,durando="50 minutos") self.duracao3 = Duracao(self.duracao2.horario_final,durando="50 minutos") self.duracao4 = Duracao(self.duracao3.horario_final,durando="50 minutos") #Salas self.sala1 = EspacoSimples("Sala-01",50,None) self.sala2 = EspacoSimples("Sala-02",50,None) self.sala3 = EspacoSimples("Sala-03",50,None) self.sala4 = EspacoSimples("Sala-04",50,None) self.palestra = AtividadeSimples(TipoAtividade.PALESTRA,"Introdução à Vuejs",self.duracao1,0.0) self.tutorial = AtividadeSimples(TipoAtividade.TUTORIAL,"Iniciando com Unittest",self.duracao2,15.00) self.mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO,"Python Avançado",self.duracao3,30.00) self.hackathon = AtividadeSimples(TipoAtividade.HACKATHON,"Hackeando Dados Públicos",self.duracao4,10.00) self.palestra.definir_espaco(self.sala1) self.tutorial.definir_espaco(self.sala2) self.mini_curso.definir_espaco(self.sala3) self.hackathon.definir_espaco(self.sala4) self.participante = Pessoa("Marlysson",20,TipoSexo.MASCULINO) def test_inscricao_recem_criada_deve_ter_zero_atividades(self): inscricao = Inscricao(self.participante,self.evento) self.assertEqual(0,len(inscricao.atividades)) def test_deve_settar_automaticamente_em_inscricao_o_evento_adicionado(self): inscricao = Inscricao(self.participante,self.evento) self.assertEqual(inscricao.evento,self.evento) def test_deve_gerar_excecao_quando_se_inscrever_repetidamente_no_evento(self): inscricao1 = Inscricao(self.participante,self.evento) inscricao2 = Inscricao(self.participante,self.evento) compra = Compra(inscricao1) compra.pagar(10) with self.assertRaises(InscricaoJaExisteNoEvento): compra = Compra(inscricao2) compra.pagar(10) def test_deve_gerar_excecao_ao_adicionar_atividade_repetida_na_inscricao(self): inscricao = Inscricao(self.participante,self.evento) for atividade in [self.palestra,self.hackathon]: self.evento.adicionar_atividade(atividade) with self.assertRaises(AtividadeJaExisteNaInscricao): for atividade in [self.hackathon,self.palestra,self.hackathon]: inscricao.adicionar_atividade(atividade) def test_deve_gerar_excecao_adicionar_atividade_nao_associada_ao_evento_inscrito(self): for atividade in [self.palestra,self.hackathon,self.tutorial]: self.evento.adicionar_atividade(atividade) inscricao = Inscricao(self.participante,self.evento) with self.assertRaises(AtividadeNaoEncontradaNoEvento): for atividade in [self.hackathon,self.mini_curso]: inscricao.adicionar_atividade(atividade) def test_deve_aceitar_adicionar_atividades_que_estejam_no_seu_evento(self): palestra = AtividadeSimples(TipoAtividade.PALESTRA,"CSS Escalável",self.duracao1,0.0) tutorial = AtividadeSimples(TipoAtividade.TUTORIAL,"Javascript e SVG",self.duracao2,15.00) mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO,"Javascript + StorageLocal",self.duracao3,30.00) hackathon = AtividadeSimples(TipoAtividade.HACKATHON,"Aplicações em NodeJS",self.duracao4,10.00) for atividade in [palestra,tutorial,mini_curso,hackathon]: self.evento.adicionar_atividade(atividade) inscricao = Inscricao(self.participante,self.evento) for atividade in [palestra,hackathon,tutorial]: inscricao.adicionar_atividade(atividade) # @unittest.skip("Não implementado") # def test_deve_gerar_excecao_quando_ocorrer_uma_inscricao_fora_do_prazo(self): # from unittest.mock import Mock # data_inicio = self.hoje + timedelta(days=1) # data_final = data_inicio + timedelta(days=3) # evento = Evento("Congresso de Profissionais Web","lorem ipsum....",data_inicio,data_final) # evento.prazo_inscricoes = (data_inicio + timedelta(days=2)).date() # evento.apto_inscricoes = Mock(return_value=False) # evento.adicionar_atividade(self.tutorial) # evento.adicionar_atividade(self.palestra) # with self.assertRaises(PeriodoInvalidoParaInscricoes): # inscricao = Inscricao(self.participante,evento) def test_deve_retornar_data_do_checkin_da_inscricao(self): for atividade in [self.palestra,self.tutorial,self.mini_curso,self.hackathon]: self.evento.adicionar_atividade(atividade) inscricao = Inscricao(self.participante,self.evento) for atividade in [self.palestra,self.hackathon,self.tutorial]: inscricao.adicionar_atividade(atividade) compra = Compra(inscricao) compra.pagar(25.00) inscricao.realizar_checkin() from datetime import date hoje = date.today() self.assertEqual(inscricao.data_checkin,hoje) def test_deve_gerar_excecao_de_checkin_de_inscricao_nao_encontrada_no_evento(self): for atividade in [self.palestra,self.tutorial,self.mini_curso,self.hackathon]: self.evento.adicionar_atividade(atividade) inscricao = Inscricao(self.participante,self.evento) for atividade in [self.palestra,self.hackathon,self.tutorial]: inscricao.adicionar_atividade(atividade) with self.assertRaises(InscricaoNaoExisteNoEvento): inscricao.realizar_checkin() def test_inscricao_unica_deve_adicionar_todas_as_atividades_do_evento_inscrito(self): self.evento.inscricao_unica = True tutorial = AtividadeSimples(TipoAtividade.TUTORIAL,"Javascript e SVG",self.duracao2,15.00) mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO,"Javascript + StorageLocal",self.duracao3,30.00) hackathon = AtividadeSimples(TipoAtividade.HACKATHON,"Aplicações em NodeJS",self.duracao4,10.00) for atividade in [tutorial,mini_curso,hackathon]: self.evento.adicionar_atividade(atividade) inscricao = Inscricao(self.participante,self.evento) self.assertListEqual(inscricao.atividades,[tutorial,mini_curso,hackathon])
class TestEvento(unittest.TestCase): def setUp(self): logger = Logger('../novas_atividades.txt') self.hoje = Horario() data_inicio = self.hoje.mais("10 dias") duracao = Duracao(data_inicio, durando="3 dias") self.evento = Evento("Semana de informática", "asdasdasd", duracao) self.evento.registrar(logger) self.palestra = AtividadeSimples(TipoAtividade.PALESTRA, "Acessibilidade Web", self.hoje, 0.0) self.tutorial = AtividadeSimples(TipoAtividade.TUTORIAL, "Javascript funcional", self.hoje, 15.00) self.mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO, "Javascript - Best Pratices", self.hoje, 30.00) def test_deve_criar_evento_com_nome_e_descricao_nao_publicado(self): self.assertEqual(StatusEvento.NAO_PUBLICADO, self.evento.visibilidade) def test_deve_alterar_visibilidade_valida_do_evento(self): self.evento.mudar_visibilidade(StatusEvento.PUBLICADO) self.assertEqual(StatusEvento.PUBLICADO, self.evento.visibilidade) def test_deve_retornar_exception_com_visibilidade_invalida(self): with self.assertRaises(ValueError): self.evento.mudar_visibilidade("Visibilidade Inválida") def test_deve_iniciar_evento_com_status_nao_iniciado(self): self.assertEqual(StatusEvento.NAO_INICIADO, self.evento.ocorrencia) def test_evento_recem_criado_deve_ter_zero_atividades(self): self.assertEqual(0, len(self.evento.atividades)) def test_evento_com_atividades_adicionadas(self): for atividade in [self.palestra, self.tutorial, self.mini_curso]: self.evento.adicionar_atividade(atividade) self.assertEqual(3, len(self.evento.atividades)) def test_nao_deve_aceitar_eventos_data_passada(self): data_inicio = Horario("1/1/2015 12:00") duracao = Duracao(data_inicio, durando="3 dias") with self.assertRaises(EventoDataInvalida): evento_erro = Evento("Python Day", "Evento de Python", duracao) def test_deve_aceitar_eventos_com_data_hoje_ou_futura(self): duracao1 = Duracao(self.hoje, durando="2 dias") inicio2 = self.hoje.mais("10 dias") duracao2 = Duracao(inicio2, durando="10 dias") evento1 = Evento("Python Beach", "Python na praia", duracao1) evento2 = Evento("Java Day", "Java na Prática", duracao2) def test_deve_gerar_excecao_quando_adicionar_atividades_repetidas_no_evento( self): inicio = self.hoje.mais("2 dias") duracao = Duracao(inicio, durando="2 dias") evento = Evento("Python Beach", "Python na praia", duracao) with self.assertRaises(AtividadeJaExisteNoEvento): for atividade in [self.tutorial, self.mini_curso, self.tutorial]: evento.adicionar_atividade(atividade)
class TestEvento(unittest.TestCase): def setUp(self): logger = Logger('../novas_atividades.txt') self.hoje = Horario() data_inicio = self.hoje.mais("10 dias") duracao = Duracao(data_inicio,durando="3 dias") self.evento = Evento("Semana de informática","asdasdasd",duracao) self.evento.registrar(logger) self.palestra = AtividadeSimples(TipoAtividade.PALESTRA,"Acessibilidade Web",self.hoje,0.0) self.tutorial = AtividadeSimples(TipoAtividade.TUTORIAL,"Javascript funcional",self.hoje,15.00) self.mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO,"Javascript - Best Pratices",self.hoje,30.00) def test_deve_criar_evento_com_nome_e_descricao_nao_publicado(self): self.assertEqual(StatusEvento.NAO_PUBLICADO,self.evento.visibilidade) def test_deve_alterar_visibilidade_valida_do_evento(self): self.evento.mudar_visibilidade(StatusEvento.PUBLICADO) self.assertEqual(StatusEvento.PUBLICADO,self.evento.visibilidade) def test_deve_retornar_exception_com_visibilidade_invalida(self): with self.assertRaises(ValueError): self.evento.mudar_visibilidade("Visibilidade Inválida") def test_deve_iniciar_evento_com_status_nao_iniciado(self): self.assertEqual(StatusEvento.NAO_INICIADO,self.evento.ocorrencia) def test_evento_recem_criado_deve_ter_zero_atividades(self): self.assertEqual(0,len(self.evento.atividades)) def test_evento_com_atividades_adicionadas(self): for atividade in [self.palestra,self.tutorial,self.mini_curso]: self.evento.adicionar_atividade(atividade) self.assertEqual(3,len(self.evento.atividades)) def test_nao_deve_aceitar_eventos_data_passada(self): data_inicio = Horario("1/1/2015 12:00") duracao = Duracao(data_inicio,durando="3 dias") with self.assertRaises(EventoDataInvalida): evento_erro = Evento("Python Day","Evento de Python",duracao) def test_deve_aceitar_eventos_com_data_hoje_ou_futura(self): duracao1 = Duracao(self.hoje,durando="2 dias") inicio2 = self.hoje.mais("10 dias") duracao2 = Duracao(inicio2,durando="10 dias") evento1 = Evento("Python Beach","Python na praia",duracao1) evento2 = Evento("Java Day","Java na Prática",duracao2) def test_deve_gerar_excecao_quando_adicionar_atividades_repetidas_no_evento(self): inicio = self.hoje.mais("2 dias") duracao = Duracao(inicio,durando="2 dias") evento = Evento("Python Beach","Python na praia",duracao) with self.assertRaises(AtividadeJaExisteNoEvento): for atividade in [self.tutorial,self.mini_curso,self.tutorial]: evento.adicionar_atividade(atividade)
class TestInscricao(unittest.TestCase): def setUp(self): self.hoje = Horario() data_inicio = self.hoje.mais("1 dia") self.duracao = Duracao(data_inicio, durando="3 dias") self.prazo_inscricoes = self.hoje.mais("10 dias") self.evento = Evento("Congresso de Profissionais Web", "lorem ipsum....", self.duracao) self.evento.prazo_inscricoes = self.prazo_inscricoes self.duracao1 = Duracao(data_inicio, durando="50 minutos") self.duracao2 = Duracao(self.duracao1.horario_final, durando="50 minutos") self.duracao3 = Duracao(self.duracao2.horario_final, durando="50 minutos") self.duracao4 = Duracao(self.duracao3.horario_final, durando="50 minutos") #Salas self.sala1 = EspacoSimples("Sala-01", 50, None) self.sala2 = EspacoSimples("Sala-02", 50, None) self.sala3 = EspacoSimples("Sala-03", 50, None) self.sala4 = EspacoSimples("Sala-04", 50, None) self.palestra = AtividadeSimples(TipoAtividade.PALESTRA, "Introdução à Vuejs", self.duracao1, 0.0) self.tutorial = AtividadeSimples(TipoAtividade.TUTORIAL, "Iniciando com Unittest", self.duracao2, 15.00) self.mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO, "Python Avançado", self.duracao3, 30.00) self.hackathon = AtividadeSimples(TipoAtividade.HACKATHON, "Hackeando Dados Públicos", self.duracao4, 10.00) self.palestra.definir_espaco(self.sala1) self.tutorial.definir_espaco(self.sala2) self.mini_curso.definir_espaco(self.sala3) self.hackathon.definir_espaco(self.sala4) self.participante = Pessoa("Marlysson", 20, TipoSexo.MASCULINO) def test_inscricao_recem_criada_deve_ter_zero_atividades(self): inscricao = Inscricao(self.participante, self.evento) self.assertEqual(0, len(inscricao.atividades)) def test_deve_settar_automaticamente_em_inscricao_o_evento_adicionado( self): inscricao = Inscricao(self.participante, self.evento) self.assertEqual(inscricao.evento, self.evento) def test_deve_gerar_excecao_quando_se_inscrever_repetidamente_no_evento( self): inscricao1 = Inscricao(self.participante, self.evento) inscricao2 = Inscricao(self.participante, self.evento) compra = Compra(inscricao1) compra.pagar(10) with self.assertRaises(InscricaoJaExisteNoEvento): compra = Compra(inscricao2) compra.pagar(10) def test_deve_gerar_excecao_ao_adicionar_atividade_repetida_na_inscricao( self): inscricao = Inscricao(self.participante, self.evento) for atividade in [self.palestra, self.hackathon]: self.evento.adicionar_atividade(atividade) with self.assertRaises(AtividadeJaExisteNaInscricao): for atividade in [self.hackathon, self.palestra, self.hackathon]: inscricao.adicionar_atividade(atividade) def test_deve_gerar_excecao_adicionar_atividade_nao_associada_ao_evento_inscrito( self): for atividade in [self.palestra, self.hackathon, self.tutorial]: self.evento.adicionar_atividade(atividade) inscricao = Inscricao(self.participante, self.evento) with self.assertRaises(AtividadeNaoEncontradaNoEvento): for atividade in [self.hackathon, self.mini_curso]: inscricao.adicionar_atividade(atividade) def test_deve_aceitar_adicionar_atividades_que_estejam_no_seu_evento(self): palestra = AtividadeSimples(TipoAtividade.PALESTRA, "CSS Escalável", self.duracao1, 0.0) tutorial = AtividadeSimples(TipoAtividade.TUTORIAL, "Javascript e SVG", self.duracao2, 15.00) mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO, "Javascript + StorageLocal", self.duracao3, 30.00) hackathon = AtividadeSimples(TipoAtividade.HACKATHON, "Aplicações em NodeJS", self.duracao4, 10.00) for atividade in [palestra, tutorial, mini_curso, hackathon]: self.evento.adicionar_atividade(atividade) inscricao = Inscricao(self.participante, self.evento) for atividade in [palestra, hackathon, tutorial]: inscricao.adicionar_atividade(atividade) # @unittest.skip("Não implementado") # def test_deve_gerar_excecao_quando_ocorrer_uma_inscricao_fora_do_prazo(self): # from unittest.mock import Mock # data_inicio = self.hoje + timedelta(days=1) # data_final = data_inicio + timedelta(days=3) # evento = Evento("Congresso de Profissionais Web","lorem ipsum....",data_inicio,data_final) # evento.prazo_inscricoes = (data_inicio + timedelta(days=2)).date() # evento.apto_inscricoes = Mock(return_value=False) # evento.adicionar_atividade(self.tutorial) # evento.adicionar_atividade(self.palestra) # with self.assertRaises(PeriodoInvalidoParaInscricoes): # inscricao = Inscricao(self.participante,evento) def test_deve_retornar_data_do_checkin_da_inscricao(self): for atividade in [ self.palestra, self.tutorial, self.mini_curso, self.hackathon ]: self.evento.adicionar_atividade(atividade) inscricao = Inscricao(self.participante, self.evento) for atividade in [self.palestra, self.hackathon, self.tutorial]: inscricao.adicionar_atividade(atividade) compra = Compra(inscricao) compra.pagar(25.00) inscricao.realizar_checkin() from datetime import date hoje = date.today() self.assertEqual(inscricao.data_checkin, hoje) def test_deve_gerar_excecao_de_checkin_de_inscricao_nao_encontrada_no_evento( self): for atividade in [ self.palestra, self.tutorial, self.mini_curso, self.hackathon ]: self.evento.adicionar_atividade(atividade) inscricao = Inscricao(self.participante, self.evento) for atividade in [self.palestra, self.hackathon, self.tutorial]: inscricao.adicionar_atividade(atividade) with self.assertRaises(InscricaoNaoExisteNoEvento): inscricao.realizar_checkin() def test_inscricao_unica_deve_adicionar_todas_as_atividades_do_evento_inscrito( self): self.evento.inscricao_unica = True tutorial = AtividadeSimples(TipoAtividade.TUTORIAL, "Javascript e SVG", self.duracao2, 15.00) mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO, "Javascript + StorageLocal", self.duracao3, 30.00) hackathon = AtividadeSimples(TipoAtividade.HACKATHON, "Aplicações em NodeJS", self.duracao4, 10.00) for atividade in [tutorial, mini_curso, hackathon]: self.evento.adicionar_atividade(atividade) inscricao = Inscricao(self.participante, self.evento) self.assertListEqual(inscricao.atividades, [tutorial, mini_curso, hackathon])
class AgendaEvento(unittest.TestCase): def setUp(self): self.local = Local("Av. Frei Serafim","Centro",1010,"Teresina-Pi") self.hoje = Horario() data_inicio = self.hoje.mais("1 dia") self.duracao_evento = Duracao(data_inicio,durando="3 dias") self.prazo_inscricoes = self.hoje.mais("1 dia") self.duracao1 = Duracao(data_inicio,durando="50 minutos") self.duracao2 = Duracao(self.duracao1.horario_final,durando="50 minutos") self.duracao3 = Duracao(self.duracao2.horario_final,durando="50 minutos") self.duracao4 = Duracao(self.duracao3.horario_final,durando="50 minutos") #Horario Atividades horario_tutorial = self.duracao1 horario_palestra = self.duracao2 horario_mesa_redonda = self.duracao3 horario_workshop = self.duracao4 horario_hackathon = Duracao(self.duracao4.inicio,durando="50 minutos") #Atividades self.palestra = AtividadeSimples(TipoAtividade.PALESTRA,"Lucrando com open-source",horario_palestra,0.0) self.tutorial = AtividadeSimples(TipoAtividade.TUTORIAL,"Boas Práticas com Django",horario_tutorial,15.00) self.mesa_redonda = AtividadeSimples(TipoAtividade.MESA_REDONDA,"Pirataria na Web",horario_mesa_redonda,0.0) self.hackathon = AtividadeSimples(TipoAtividade.HACKATHON,"Soluções Financeiras - Nubank",horario_hackathon,50.00) self.predio_B = EspacoComposto("Prédio B",self.local) self.andar_1 = EspacoComposto("B1",self.local) self.andar_2 = EspacoComposto("B2",self.local) self.salas = [ EspacoSimples("B"+str(num+1)+"-01",40,self.local) for num in range(1,5)] self.andar_1.add(self.salas[0]) self.andar_1.add(self.salas[1]) self.andar_2.add(self.salas[2]) self.andar_2.add(self.salas[3]) self.predio_B.add(self.andar_1) self.predio_B.add(self.andar_2) self.palestra.definir_espaco(self.salas[0]) self.tutorial.definir_espaco(self.salas[1]) self.mesa_redonda.definir_espaco(self.salas[2]) self.hackathon.definir_espaco(self.salas[3]) self.evento = Evento("Software Freedom Day","Descrição do Evento",self.duracao_evento) self.evento.prazo_inscricoes = self.prazo_inscricoes atividades = [self.palestra , self.tutorial , self.mesa_redonda , self.hackathon ] for atividade in atividades: self.evento.adicionar_atividade(atividade) self.evento.adicionar_espaco(self.predio_B) def test_deve_retornar_lista_de_atividades_ordenada_do_espaco_fisico_simples(self): agenda_evento = self.evento.gerar_agenda() self.assertListEqual(agenda_evento,[self.palestra,self.tutorial,self.mesa_redonda,self.hackathon]) def test_deve_retornar_lista_de_atividades_ordenada_do_espaco_fisico_composto(self): agenda_andar_2 = self.andar_2.gerar_agenda() self.assertListEqual(agenda_andar_2,[self.mesa_redonda,self.hackathon])
class TestCompraInscricao(unittest.TestCase): def setUp(self): self.hoje = Horario() data_inicio = self.hoje.mais("1 dia") self.duracao_evento = Duracao(data_inicio,durando="3 dias") self.prazo_inscricoes = self.hoje.mais("1 dia") self.duracao1 = Duracao(data_inicio,durando="50 minutos") self.duracao2 = Duracao(self.duracao1.horario_final,durando="50 minutos") self.duracao3 = Duracao(self.duracao2.horario_final,durando="50 minutos") self.duracao4 = Duracao(self.duracao3.horario_final,durando="50 minutos") self.data_cupons = Horario() #Horario Atividades horario_tutorial = self.duracao1 horario_palestra = self.duracao2 horario_mesa_redonda = self.duracao3 horario_workshop = self.duracao4 horario_hackathon = Duracao(horario_workshop.inicio,durando="50 minutos") #Participante self.participante1 = Pessoa("Marlysson",18,TipoSexo.MASCULINO) self.participante2 = Pessoa("Marcos",25,TipoSexo.MASCULINO) #Salas self.sala1 = EspacoSimples("Sala-01",50,None) self.sala2 = EspacoSimples("Sala-02",50,None) self.sala3 = EspacoSimples("Sala-03",50,None) self.sala4 = EspacoSimples("Sala-04",50,None) self.sala5 = EspacoSimples("Sala-05",50,None) self.sala6 = EspacoSimples("Sala-06",50,None) #Atividades self.palestra = AtividadeSimples(TipoAtividade.PALESTRA,"Lucrando com open-source",horario_palestra,0.0) self.tutorial = AtividadeSimples(TipoAtividade.TUTORIAL,"Boas Práticas com Django",horario_tutorial,15.00) self.mesa_redonda = AtividadeSimples(TipoAtividade.MESA_REDONDA,"Pirataria na Web",horario_mesa_redonda,0.0) self.hackathon = AtividadeSimples(TipoAtividade.HACKATHON,"Soluções Financeiras - Nubank",horario_hackathon,50.00) self.workshop1 = AtividadeSimples(TipoAtividade.WORKSHOP,"Python na Ciência",horario_workshop,30.00) self.workshop2 = AtividadeSimples(TipoAtividade.WORKSHOP,"Python no Ensino",horario_workshop,25.00) self.palestra.definir_espaco(self.sala1) self.tutorial.definir_espaco(self.sala2) self.mesa_redonda.definir_espaco(self.sala3) self.hackathon.definir_espaco(self.sala4) self.workshop1.definir_espaco(self.sala5) self.workshop2.definir_espaco(self.sala6) horarios_cupons = { "valido1" : self.data_cupons.mais("1 dia"), "valido2" : self.data_cupons.mais("1 dia"), "invalido1" : Horario("11/10/2015 16:00"), "invalido2": Horario("20/1/2016 10:00") } self.cupom_geral = Cupom("LOTE_1",0.5,horarios_cupons.get("valido1")) self.cupom_geral.regra = DescontoGeral() self.cupom_tutorial = Cupom("TUTORIAIS_50",0.5,horarios_cupons.get("valido2")) self.cupom_tutorial.regra = DescontoTutorial() self.cupom_workshop = Cupom("WORKSHOP_10",0.1,horarios_cupons.get("invalido1")) self.cupom_workshop.regra = DescontoWorkshop() self.cupom_hackathon = Cupom("HACKATHON_50",0.5,horarios_cupons.get("invalido2")) self.cupom_hackathon.regra = DescontoHackathon() self.evento = Evento("Software Freedom Day","Descrição do Evento",self.duracao_evento) self.evento.prazo_inscricoes = self.prazo_inscricoes atividades = [self.palestra , self.tutorial , self.mesa_redonda , self.workshop1 , self.workshop2 , self.hackathon ] for atividade in atividades: self.evento.adicionar_atividade(atividade) cupons = [ self.cupom_geral , self.cupom_tutorial , self.cupom_workshop] for cupom in cupons: self.evento.adicionar_cupom(cupom) def test_inscricao_sem_itens_deve_ter_valor_zero(self): inscricao = Inscricao(self.participante1,self.evento) compra = Compra(inscricao) self.assertEqual(0,compra.preco_total) def test_valor_da_inscricao_e_o_valor_dos_seus_itens(self): inscricao = Inscricao(self.participante1,self.evento) inscricao.adicionar_atividade(self.workshop1) inscricao.adicionar_atividade(self.tutorial) compra = Compra(inscricao) valor_total = compra.preco_total self.assertEqual(45.00,valor_total) def test_ao_efetuar_compra_settar_inscricao_como_paga(self): inscricao = Inscricao(self.participante2,self.evento) inscricao.adicionar_atividade(self.tutorial) inscricao.adicionar_atividade(self.workshop1) compra = Compra(inscricao) compra.pagar(150.00) self.assertTrue(inscricao.paga) def test_deve_gerar_excecao_quando_pagar_uma_inscricao_ja_paga(self): inscricao = Inscricao(self.participante2,self.evento) inscricao.adicionar_atividade(self.tutorial) inscricao.adicionar_atividade(self.workshop1) compra = Compra(inscricao) compra.pagar(150.00) with self.assertRaises(InscricaoJaPaga): compra.pagar(100.00) def test_deve_retornar_data_de_pagamento_correta_ao_efetuar_compra(self): inscricao = Inscricao(self.participante2,self.evento) atividades = [ self.workshop1 , self.workshop2 , self.hackathon] for atividade in atividades: inscricao.adicionar_atividade(atividade) compra = Compra(inscricao) compra.aplicar_cupom(self.cupom_tutorial) self.assertEqual(105.00,compra.preco_total) compra.pagar(105.00) from datetime import datetime dia_pagamento = date.today() self.assertEqual(dia_pagamento,inscricao.data_pagamento) def test_nao_deve_aplicar_descontos_de_cupons_nao_ativos(self): inscricao = Inscricao(self.participante1,self.evento) atividades = [self.tutorial, self.workshop1 , self.workshop2 , self.hackathon] for atividade in atividades: inscricao.adicionar_atividade(atividade) compra = Compra(inscricao) with self.assertRaises(CupomExpirado): compra.aplicar_cupom(self.cupom_workshop) def test_deve_gerar_excecao_quando_aplicar_um_cupom_nao_cadastrado_no_evento(self): inscricao = Inscricao(self.participante2,self.evento) atividades = [self.tutorial, self.workshop1 , self.workshop2 , self.hackathon] for atividade in atividades: inscricao.adicionar_atividade(atividade) compra = Compra(inscricao) with self.assertRaises(CupomNaoEncontradoNoEvento): compra.aplicar_cupom(self.hackathon) def test_deve_gerar_excecao_ao_realizar_pagamento_inferior_ao_valor(self): inscricao = Inscricao(self.participante1,self.evento) inscricao.adicionar_atividade(self.tutorial) inscricao.adicionar_atividade(self.workshop1) compra = Compra(inscricao) with self.assertRaises(ValorPagoInferior): compra.pagar(40.00) def test_inscricao_paga_nao_deve_aceitar_novos_itens(self): inscricao = Inscricao(self.participante1,self.evento) inscricao.adicionar_atividade(self.tutorial) inscricao.adicionar_atividade(self.workshop1) compra = Compra(inscricao) compra.pagar(150.00) with self.assertRaises(InscricaoJaPagaNaoAceitaItens): inscricao.adicionar_atividade(self.hackathon) def test_compra_de_uma_inscricao_com_cupom_deve_retornar_valor_atualizado(self): inscricao = Inscricao(self.participante1,self.evento) atividades = [self.tutorial, self.workshop1 , self.workshop2 , self.hackathon] for atividade in atividades: inscricao.adicionar_atividade(atividade) compra = Compra(inscricao) compra.aplicar_cupom(self.cupom_tutorial) #Desconto de 50% nos tutoriais valor_compra = compra.preco_total self.assertEqual(112.5,valor_compra) def test_compra_deve_retornar_o_troco_correto_ao_participante(self): inscricao = Inscricao(self.participante1,self.evento) atividades = [self.tutorial, self.workshop1 , self.workshop2 , self.hackathon] for atividade in atividades: inscricao.adicionar_atividade(atividade) compra = Compra(inscricao) compra.aplicar_cupom(self.cupom_tutorial) #Cupom de 50% nos Tutoriais valor_compra = compra.preco_total compra.pagar(115.00) self.assertEqual(2.5,compra.troco)